Avatar billede karmark Nybegynder
20. marts 2002 - 16:43 Der 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{ 
   
    private double resultatKul, resultatPro, resultatFedt;
       
        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();
   
        ingredient y.getKulhydrat();
        ingredient y.getProtein();
        ingredient y.getFedt();
        ingredient y.getkjTotal();
   
        nyKulhydrat = ingredient x + ingredient y;
        nyProtein = ingredient x  + ingredient y;
        nyFedt = ingredient x + ingredient y;
        nykjTotal = ingredient x + ingredient y;
}   

    /**
    * denne metode udregner kulh% for den simpleopskrift 
    * @param nykulh og nykjTotal 
    * @return kulhydratEnergiProcent   
    */
    public double kulhydratEnergiProcent() {
      double kulhydratEnergiProcent;
      kulhydratEnergiProcent = (nyKulhydrat * 17 * 100)/nykjTotal;
      return kulhydratEnergiProcent;

Som I kan se fatter vi ikke en skid, men vi prøver!!
Avatar billede thomas_yde Nybegynder
20. marts 2002 - 16:51 #1
For det første er det en god idet at give klasser Store startbogstaver og metoder små bogstaver.
Det gør det hele mere overskuelig
Avatar billede jakoba Nybegynder
20. marts 2002 - 16:53 #2
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();
 
        ingredient y.getKulhydrat();
        ingredient y.getProtein();
        ingredient y.getFedt();
        ingredient y.getkjTotal();

prøv istedet med
        int kulHytX = x.getKulhydrat();
        int proteinX = x.getProtein();
        int fedtX = x.getFedt();
        int kjTotalX = x.getkjTotal();
 
        int kulHytY = y.getKulhydrat();
        int proteinY = y.getProtein();
        int fedtY = y.getFedt();
        int kjTotalY = y.getkjTotal();

        int nyKulhydrat = kulHytX + kulHytY;
        int nyProtein = proteinX  + proteinY;
        int nyFedt = fedtX + fedtY;
        int nykjTotal = kjTotalX + kjTotalY;

før i bruger en variabel SKAL den defineres. og i definitionen skal variblens type angives.

Jeg har gættet på at de allesammen er int (integer==heltal) kik evt på funktionen getFedt() i jeres ingridient klasse for at se om det gæt er rigtigt.

mvh JakobA
Avatar billede thomas_yde Nybegynder
20. marts 2002 - 17:01 #3
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{
 
    private double resultatKul, resultatPro, resultatFedt;
     
        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.

        double kulhydratY = y.getKulhydrat();
        double proteinY =  y.getProtein();
        double fedtY = y.getFedt();
        double totalY = y.getkjTotal();
 
        double nyKulhydrat = kulhydratX + kulhydratY;
        double nyProtein = proteinX  + proteinY;
        double nyFedt = fedtX + fedtY;
        double nykjTotal = totalX + totalY;
      } 

    /**
    * denne metode udregner kulh% for den simpleopskrift
    * @param nykulh og nykjTotal
    * @return kulhydratEnergiProcent 
    */
    public double kulhydratEnergiProcent(double nyKulhydrat, double nyTotal) {
      double kulhydratEnergiProcent;
      kulhydratEnergiProcent = (nyKulhydrat * 17 * 100)/nykjTotal;
      return kulhydratEnergiProcent;
    }
}
Avatar billede jakoba Nybegynder
20. marts 2002 - 17:01 #4
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();

og smide de 8 linier ovenover væk :-))
Avatar billede thomas_yde Nybegynder
20. marts 2002 - 17:04 #5
Hvad skal i ende med?
Skal i ahve returneret den samlet kulhydratEnergiProcent ?
Avatar billede karmark Nybegynder
20. marts 2002 - 17:11 #6
Det skal ende med en samlet kulhydrat, protein og fedtEnergiProcent....
vi blir klogere hele tiden!!

vi tester svarene og uddeller point....
Avatar billede karmark Nybegynder
20. marts 2002 - 18:06 #7
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
       
        double nyKulhydrat = x.getKulhydrat() + y.getKulhydrat();
        double nyProtein = x.getProtein()  + y.getProtein();
        double nyFedt = x.getFedt() + y.getFedt();
        double nykjTotal = x.getkjTotal() + y.getkjTotal();
}   

    /**
    * 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?

Mvh. The Java-Novices
Avatar billede soelvpil Nybegynder
20. marts 2002 - 18:34 #8
prøv aterstatte starten med nedenstående:

public class simpleopskrift extends opskrift{

private double nyKulhydrat;
private double nyFedt;
private double nyProtein;
private double nykjTotal;
     
public simpleopskrift(ingredient x, ingredient y)
{
  super(x, y);
  nyKulhydrat = x.getKulhydrat() + y.getKulhydrat();
  nyProtein = x.getProtein()  + y.getProtein();
  nyFedt = x.getFedt() + y.getFedt();
  nykjTotal = x.getkjTotal() + y.getkjTotal();
}

Så kan i også fjerne ´parametrene til jeres energiprocent-metoder.
Avatar billede soelvpil Nybegynder
20. marts 2002 - 18:38 #9
Det var ment som et svar...

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.
Avatar billede karmark Nybegynder
20. marts 2002 - 22:32 #10
tak til dem der har hjulpet! men da der kun er postet som kommentarer kan jeg ikke give dem point....men tak....
Avatar billede thomas_yde Nybegynder
20. marts 2002 - 22:43 #11
Det var så lidt :)

Vi er her for at hjælpe.
Avatar billede stofferb Nybegynder
20. marts 2002 - 23:17 #12
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;
   
        public sammensatteopskrift(ingredient x, ingredient y, allesimple z, allesimple u)
{     
        super(x, y);
        simp1 = z;
        simp2 = u;
        double nyKulhydratSammensat = x.getKulhydrat() + y.getKulhydrat() + z.getnyKulhydrat() + u.getnyKulhydrat();
        double nyProteinSammensat = x.getProtein()  + y.getProtein() + z.getnyProtein() + u.getnyProtein();
        double nyFedtSammensat = x.getFedt() + y.getFedt() + z.getnyFedt() + u.getnyFedt();
        double nykjTotalSammensat = x.getkjTotal() + y.getkjTotal() + z.getnykjTotal() + u.getnykjTotal(); 
}

    /**
    * 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.
Avatar billede stofferb Nybegynder
20. marts 2002 - 23:18 #13
Jeg laver lige et nyt spørgsmål så I kan få point! :o)
Avatar billede jakoba Nybegynder
20. marts 2002 - 23:33 #14
private double nyKulhydratSammensat;
    private double nyFedtSammensat;
    private double nyProteinSammensat;
    private double nykjTotalSammensat;
    private double fedtEnergiProcentSammensat;
    private double kulhydratEnergiProcentSammensat;

det der er en liste af løfter om at i vil definere funktioner med de navne og parametre.

men i har gjort dem allesammen private så de ikke kan bruges af nogen anden klasse end den de er defineret i.

og hvad er det forresten for en klasse. jeg kan kun se løftet :)

mvh JakobA
Avatar billede jakoba Nybegynder
20. marts 2002 - 23:55 #15
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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester