20. marts 2002 - 16:43Der er
14 kommentarer og 1 løsning
hente oplysninger om objekter samt at bruge disse til beregning
Vi er igang med en lillefrækkert af en javaopgave, vores OO analyse af den er god nok, men vores kendskab til kode og syntaks er for dårligt. Her er en klasse simpleopskrift, den opretter et nyt objekt som består af to objekter(ingredient). ingredient objekterne har noen atributter vi skal bruge til at regne med, hvordan henter vi dem i en anden klasse?
* simpleopskrift bruges til at oprette simple opskrifter med 2 ingredienser. * * @author (Stoffer, gr3, hold 1) * @version (17/3) */ public class simpleopskrift extends opskrift{
public simpleopskrift(ingredient x, ingredient y) { super(x, y); // det næste skal hente værdierne for de to forskellige ingredienser ingredient x.getKulhydrat(); ingredient x.getProtein(); ingredient x.getFedt(); ingredient x.getkjTotal();
jeg tror i prøver at oprette variable til mellemresultater her: (men glemmer at give dem et navn) ingredient x.getKulhydrat(); ingredient x.getProtein(); ingredient x.getFedt(); ingredient x.getkjTotal();
I mangler også nogle slut "}" * simpleopskrift bruges til at oprette simple opskrifter med 2 ingredienser. * * @author (Stoffer, gr3, hold 1) * @version (17/3) */ public class Simpleopskrift extends opskrift{
public Simpleopskrift(Ingredient x, Ingredient y) {
//kontruktor // det næste skal hente værdierne for de to forskellige ingredienser double kulhydratX = x.getKulhydrat(); double proteinX = x.getProtein(); double fedtX = x.getFedt(); double TotalX = x.getkjTotal(); du behøver ikke skrive Ingerient x da x bliver erklæret i starten som en ingedrient objekt. det samme gælder for y.
Noget andet er at i behøver egentlig ikke at lave extra variable til at huske ingrediend tallene fra ingredienser. I kan bare hente dem når der bliver brug for dem:
int nyKulhydrat = x.getKulhydrat() + y.getKulhydrat(); int nyProtein = x.getProtein() + y.getProtein(); int nyFedt = x.getFedt() + y.getFedt(); int nykjTotal = x.getkjTotal() + y.getkjTotal();
vi har nu opdateret simpelopskrift klassen ud fra jeres svar, den ser sådan ud. Problemet er nu at describesimpel og de tre nye getmetoder ikke virker... Det kan godt compile uden det. Compileren kan ikke genkende nyKulhydrat, nyProtein, etc..
** * simpleopskrift bruges til at oprette simple opskrifter med 2 ingredienser. * * @author (Stoffer, gr3, hold 1) * @version (17/3) */ public class simpleopskrift extends opskrift{
public simpleopskrift(ingredient x, ingredient y) { super(x, y); // det næste skal hente værdierne for de to forskellige ingredienser
/** * denne metode udregner kulh% for den simpleopskrift * @param nykulh og nykjTotal * @return kulhydratEnergiProcent */ public double kulhydratEnergiProcent(double nyKulhydrat, double nykjTotal) { double kulhydratEnergiProcent; kulhydratEnergiProcent = (nyKulhydrat * 17 * 100)/nykjTotal; return kulhydratEnergiProcent; } public double proteinEnergiProcent(double nyProtein, double nykjTotal) { double proteinEnergiProcent; proteinEnergiProcent = (nyProtein * 17 * 100)/nykjTotal; return proteinEnergiProcent; } public double fedtEnergiProcent(double nyFedt, double nykjTotal) { double fedtEnergiProcent; fedtEnergiProcent = (nyFedt * 37 * 100)/nykjTotal; return fedtEnergiProcent; } public void describesimpel() { System.out.println( "Kulhydrat i g: " + nyKulhydrat ); System.out.println( "Protein i g: " + nyProtein ); System.out.println( "Fedt i g: " + nyFedt ); System.out.println( "kj Total: " + nykjTotal ); System.out.println( "Fedtenergiprocent: " + fedtEnergiProcent() ); System.out.println( "Kulhydratenergiprocent: " + kulhydratEnergiProcent() ); System.out.println( "Proteinenergiprocent: " + proteinEnergiProcent() ); } public double getnyKulhydrat() { return nyKulhydrat; } public double getnyProtein(){ return nyProtein; } public double getnyFedt(){ return nyFedt; } public double getnykjTotal(){ return nykjTotal; } }
De nye getmetoder skal bruges i en klasse for sammensatte opskrifter der består af ingredienser (objekter) og simple opskrifter (objekter) ville det egentlig være nemmere at lave simple om til superklasse for sammensatte?
Om i skal arve fra opskrift eller simpleopskrift er ikke lige til at sige, men umiddelbart vil jeg gætte på, at den sammensatte lige så godt bare kan arve fra opskrift. Jeg vil foreslå at i laver en af energiprocentmetoderne i den sammensatte først, og bagefter prøver at afgøre, hvor meget der egentlig er til fælles med den simple opskrift.
Jeg fortsætter hvor Karmark slap (Han er med i min læsegruppe) simple er nu compilet og funker
sammensatte er en anden historie Vi har lavet noen getmetoder der ligner det vi har arbejdet med i simple. ( de hedder bare getnyKulhydrat osv.) de ligger i bunden af vores simple class. Er det der de skal ligge? compileren kan ikke genkende de nye getmetoder!
sammensatte ser sådan ud... foreløbig!
/** * sammensatteopskrift bruges til at oprette sammensatte opskrifter * bestående af to ingredienser (som er objekter) og to simple opskrifter(som er objekter sammensat af objekter). * * @author (Stoffer, gr3, hold 1) * @version (20/3) */ public class sammensatteopskrift extends opskrift { protected allesimple simp1, simp2; private double nyKulhydratSammensat; private double nyFedtSammensat; private double nyProteinSammensat; private double nykjTotalSammensat; private double fedtEnergiProcentSammensat; private double kulhydratEnergiProcentSammensat; private double proteinEnergiProcentSammensat;
/** * An example of a method - replace this comment with your own * * @param y a sample parameter for a method * @return the sum of x and y */ //public int sampleMethod(int y) // { // put your code here // return x + y; // } }
simple z og u er forresten de opskrifter som simple instantierede.
Ups. det var forker. det er jo variable i definerer der (ingen () efter. og ja de skal være private så man tvingees til at bruge getnyKulhydrat() osv for at få fat i deres værdi.
sorry.
men stadig, hvor og hvordan er funktionen getNyKunhydrat defineret.
mvh JakobA
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.