OppgaveA
Klassen Naeringsmiddel skal ha tre objektvariabler for å lagre hhv. antall gram karbohydrater, proteiner og fett i hundre gram av næringsmiddelet. Lag en konstruktør. Lag tre finnmetoder. Eksempel: Et brødobjekts objektvariabler vil inneholde hhv. 60, 8 og 1.
class Naeringsmiddel {
public static final double kcalPerGramKarbohydrat = 3.75;
public static final double kcalPerGramProtein = 4;
public static final double kcalPerGramFett = 9;
private double karbohydrater; // i gram per 100 gram matvare
private double proteiner; // i gram per 100 gram matvare
private double fett; // i gram per 100 gram matvare
public Naeringsmiddel(double startKarbohydrater, double startProteiner,
double startFett) {
karbohydrater = startKarbohydrater;
proteiner = startProteiner;
fett = startFett;
}
public double finnKarbohydrater() {
return karbohydrater;
}
public double finnProteiner() {
return proteiner;
}
public double finnFett() {
return fett;
}
OPPGAVE B
Lag en Naeringsmiddel-metode finnKcalIKarbohydrater() som returnerer antall kcal i karbohydratene i hundre gram av næringsmiddelet. Lag også lignende metoder for proteiner og fett. Eksempel: For brød skal finnKcalIKarbohydrater() returnere 225 kcal fordi 60 * 3,75 = 225 (det er 60 gram karbohydrater i hundre gram brød, og hvert gram karbohydrat inneholder 3,75 kcal).
public double finnKcalIKarbohydrater() {
return karbohydrater * kcalPerGramKarbohydrat;
}
public double finnKcalIProteiner() {
return proteiner * kcalPerGramProtein;
}
public double finnKcalIFett() {
return fett * kcalPerGramFett;
}
OPPGAVE C
Lag en Naeringsmiddel-metode finnKcalTotalt() som returnerer totalt antall kcal i hundre gram av næringsmiddelet. Eksempel: Hundre gram brød inneholder 266 kcal fordi når vi summerer kcal i hhv. karbohydrater, proteiner og fett får vi 60 * 3,75 + 8 * 4 + 1 * 9 = 225 + 32 + 9 = 266.
public double finnKcalTotalt() {
return finnKcalIKarbohydrater() + finnKcalIProteiner() + finnKcalIFett();
}
} // Naeringsmiddel
OPPGAVE D
Du skal nå lage en klasse Matrett som skal representere et visst kvantum av et næringsmiddel. F.eks. kan femti gram brød anses som en matrett.
Klassen Matrett skal ha to objektvariabler: En objektvariabel av type Naeringsmiddel og en objektvariabel for matrettens vekt (i gram). Lag en Matrett-konstruktør. Lag en finnmetode for vekten.
class Matrett {
private Naeringsmiddel innhold;
private double vekt; // i gram
// Velger her at karbohydrater etc. må oppgis for 100 gram av næringsmiddelet
public Matrett(double startKarbohydrater, double startProteiner, double startFett,
double startVekt) {
innhold = new Naeringsmiddel(startKarbohydrater, startProteiner, startFett);
vekt = startVekt;
}
public double finnVekt() {
return vekt;
}
OPPGAVE E
Lag en Matrett-metode settVekt() som gjør det mulig å endre matrettens vekt.
public void settVekt(double nyVekt) {
vekt = nyVekt;
}
OPPGAVE F
Lag en Matrett-metode finnKarbohydrater() som returnerer antall gram karbohydrater i matretten. Tips: Karbohydratinnholdet i hundre gram av næringsmiddelet er kjent, - del denne kjente størrelsen på hundre og gang med vekten; f.eks. er det 30 gram karbohydrater i 50 gram brød - (60 / 100) * 50 = 30. Lag også lignende metoder for proteiner og fett.
public double finnKarbohydrater() {
return innhold.finnKarbohydrater() / 100 * vekt;
}
public double finnProteiner() {
return innhold.finnProteiner() / 100 * vekt;
}
public double finnFett() {
return innhold.finnFett() / 100 * vekt;
}
OPPGAVE G
Lag en Matrett-metode public Matrett bland(Matrett annen): Ved å blande sammen matretten med den matretten som er representert ved annen-objektet, skal man lage en ny matrett, og denne nye matretten skal returneres. Eksempel: 50 gram brød med 5 gram olivenolje er en ny matrett på 55 gram og med et visst energiinnhold.
// Blander sammen to matretter til en ny matrett
public Matrett bland(Matrett annen) {
double fraNyVektTil100Gram = 100 / (vekt + annen.finnVekt());
double sumKarbohydrater = finnKarbohydrater() + annen.finnKarbohydrater();
double karbohydraterINyttNaeringsmiddel = sumKarbohydrater * fraNyVektTil100Gram;
double sumProteiner = finnProteiner() + annen.finnProteiner();
double proteinerINyttNaeringsmiddel = sumProteiner * fraNyVektTil100Gram;
double sumFett = finnFett() + annen.finnFett();
double fettINyttNaeringsmiddel = sumFett * fraNyVektTil100Gram;
return new Matrett(karbohydraterINyttNaeringsmiddel,
proteinerINyttNaeringsmiddel, fettINyttNaeringsmiddel,
vekt + annen.finnVekt());
}
} // Matrett
// Ekstra klasse:
class MatrettTest {
public static void main(String[] args) {
Naeringsmiddel broed100 = new Naeringsmiddel(60, 8, 1);
System.out.println("Kcal fra karbohydrater i brød: "
+ broed100.finnKcalIKarbohydrater());
System.out.println("Kcal fra proteiner i brød: " + broed100.finnKcalIProteiner());
System.out.println("Kcal fra fett i brød: " + broed100.finnKcalIFett());
System.out.println("Kcal totalt i brød: " + broed100.finnKcalTotalt());
System.out.println();
Matrett broed = new Matrett(60, 8, 1, 50);
System.out.println("50 gram broed inneholder karbohydrater: " + broed.finnKarbohydrater());
System.out.println("50 gram broed inneholder proteiner: " + broed.finnProteiner());
System.out.println("50 gram broed inneholder fett: " + broed.finnFett());
System.out.println();
Matrett olje = new Matrett(0, 0, 100, 5);
System.out.println("5 gram olje inneholder karbohydrater: " + olje.finnKarbohydrater());
System.out.println("5 gram olje inneholder proteiner: " + olje.finnProteiner());
System.out.println("5 gram olje inneholder fett: " + olje.finnFett());
System.out.println();
Matrett bruschetta = broed.bland(olje);
System.out.println("Broed med olje veier " + bruschetta.finnVekt());
System.out.println("Broed med olje inneholder karbohydrater: " + bruschetta.finnKarbohydrater());
System.out.println("Broed med olje inneholder proteiner: " + bruschetta.finnProteiner());
System.out.println("Broed med olje inneholder fett: " + bruschetta.finnFett());
}
} // MatrettTest