Aufgabenblatt 8: Klassen / Methoden

Aufgabe 8.1: Nährwertrechner

Ziel dieser Aufgabe ist, ein Programm zu schreiben, mit dessen Hilfe die Nährwerte1 verschiedener Lebensmittel, sowie die durch eine Person aufgenommene Energie (in kcal), mitsamt der Nährwerte Fett, Zucker, Salz nachverfolgt werden kann.

Gehen Sie wie folgt vor:

Klasse Nahrungsmittel:

  1. Schreiben Sie eine Klasse Nahrungsmittel, die neben dem Namen folgende Eigenschaften eines Nahrungsmittels speichern kann (jeweils pro 100g): Energie (in kcal), sowie die Nährstoffe Fett (in g), Zucker (in g) und Salz (in g).

  2. Die Werte der Eigenschaften sollen bei der Erstellung über einen geeigneten Konstruktor übergeben werden.

  3. Für jedes Nahrungsmittel soll es möglich sein, einige Werte der Lebensmittelampel2 zu bestimmen. Schreiben Sie für die Eigenschaften Fett, Zucker und Salz jeweils eine Methode, die den zum Lebensmittel passenden Wert ("rot", "gelb" oder "grün") als Zeichenkette zurückgibt.

    Die Kriterien finden Sie in folgender Abbildung3:

    Kriterien der Lebensmittelampel

  4. Schreiben Sie eine Methode, welche die gesamten Eigenschaften des Lebensmittels als Text zurückgibt und sowohl Zahlenwerte als auch Ampelangaben enthält.

    Beispiel: Nutella - Energie: 533,0 kcal, Fett: 31,0g (rot), Zucker: 55,9g (rot), Salz: 0,1016g (grün)

  5. Schreiben Sie eine Klasse NaehrwertrechnerTest mit einer main-Methode, die verschiedene Nahrungsmittel erzeugt und deren Eigenschaften mit Hilfe der Methoden von Nahrungsmittel ausgibt.

    Nutzen Sie dazu Informationen im Netz, z.B. die Seite http://fddb.info um Nährwerte für einige Nahrungsmittel zu bestimmen (mindestens 3, z.B. Nutella, Stangensellerie,...).

Klasse Person:

  1. Schreiben Sie eine Klasse Person, die über die aufgenommenen Nährwerte einer Person Buch führen kann, also Eigenschaften für die aufgenommene Energie (in kcal), sowie die Nährstoffe Fett (in g), Zucker (in g) und Salz (in g) besitzt.

  2. Der Name der Person soll bei der Erstellung über einen Konstruktor übergeben werden.

  3. Die Klasse soll eine Methode void konsumiere(Nahrungsmittel nahrung, double mengeInGramm) mit deren Hilfe die Person das übergebene Nahrungsmittel nahrung in der ebenfalls übergebenen Menge mengeInGramm zu sich nehmen kann.

    Die Werte der von der Person bisher aufgenommenen Nährwerte sollen entsprechend aktualisiert werden.

    Hinweis: Neu ist hier eventuell, dass ein Objekt als Parameter übergeben wird. Sie können auf dieses Objekt innerhalb der Methode einfach über den Parameternamen zugreifen, z.B. nahrung.energie. Beim Aufruf der Methode übergeben Sie einfach das entsprechende Nahrungsmittel-Objekt.

  4. Fügen Sie auch hier eine Methode hinzu, welche die aufgenommenen Nährwerte der Person als Text zurückgibt.

    Beispiel: Mirjam Muster - Aufgenommene Nährwerte - Energie: 1321,3 kcal, Fett: 56g, Zucker: 34g, Salz: 1g

  5. Ergänzen Sie die Klasse NaehrwertrechnerTest: Erzeugen Sie zwei Personen und lassen Sie diese verschiedene Nahrungsmittel in unterschiedlichen Mengen zu sich nehmen. Geben Sie jeweils die Summe der bisher konsumierten Nährwerte aus.

Aufgabe 8.2: Klasse für komplexe Zahlen

Java besitzt keinen eingebauten Datentyp für komplexe Zahlen4. Deshalb soll in dieser Aufgabe eine Klasse Complex entstehen, die das Rechnen mit komplexen Zahlen ermöglicht.

Die Klasse sollte folgende Methoden besitzen:

  • Zwei Konstruktoren:

    • ein Konstruktor mit den Parametern a und b für Real- und Imaginärteil
    • ein Standardkonstruktor ohne Parameter, der Real- und Imaginärteil auf 0 initialisiert.
  • Je eine überladene Methode, welche eine reelle Zahl oder eine komplexe Zahl addiert und das Ergebnis als neues Objekt der Klasse Complex zurückgibt:

    • Complex add(double wert)
    • Complex add(Complex wert)
  • Entsprechende Methoden zur Subtraktion (sub), Multiplikation (mul) und Division(div)

  • Eine Methode public String toString(), die die Zahl in der Form "a + b*i" zurückgibt.

  • Eine Methode, welche den Betrag double z = Math.sqrt(a*a+b*b) der Zahl berechnet und zurückgibt.

Testen Sie Ihre Klasse!

Aufgabe 8.3: Geldautomat

Als Mitarbeiter der Firma KrösusTools AG haben Sie die Aufgabe, einen Geldausgabeautomaten zu programmieren, der Euro-Beträge in 5-, 20- und 50-Euro-Scheinen auszahlt.

Erstellen Sie dazu eine Klasse Geldautomat, die die Anzahl der im Automat vorhandenen Geldscheine verwaltet und folgende öffentliche Methoden zur Verfügung stellt:

  • public void nachfüllen(int neu5er, int neu20er, int neu50er): Der Vorrat an 5er-, 20er- und 50er-Scheinen wird um die angegebene Anzahl erhöht.

  • public boolean auszahlen(int betrag): Falls möglich, wird der angegebene Betrag ausgezahlt. Es sind nur Beträge erlaubt, die positiv und Vielfache von 5€ sind.

    Der Automat versucht immer, möglichst große Scheine auszugeben. Kann der Betrag ausbezahlt werden, wird durch System.out.println() die Anzahl der jeweiligen Scheine angezeigt. Kann der Betrag nicht ausbezahlt werden, da ein unzulässiger Betrag eingegeben wurde oder die Scheine im Automat nicht reichen, wird eine Fehlermeldung ausgegeben. Es werden keine Teilbeträge ausgezahlt!

    Der Rückgabewert der Methode zeigt an, ob der Betrag erfolgreich ausgezahlt werden konnte.

Fabrikneu enthält der Geldautomat keine Geldscheine.

Testen Sie Ihre Klasse, indem Sie eine Testklasse GeldautomatTest entwickeln, die z.B. folgende Tests durchführt:

  • je 5 Stück 5€-, 20€- und 50€-Scheine nachfüllen
  • 225 € auszahlen: Ausgabe 4 x 50€, 1 x 20 € und 1 x 5 € (im Automat verbleiben 1 x 50 €, 4 x 20 €, 4 x 5 €)
  • -200 € auszahlen: Keine Auszahlung möglich, sollte Fehlermeldung liefern
  • 120 € auszahlen: Ausgabe 1 x 50 €, 3 x 20 € und 2 x 5 € (im Automat verbleiben 0 x 50 €, 1 x 20 €, 2 x 5 €)
  • 15 € auszahlen: Keine Auszahlung möglich

Überlegen Sie sich weitere sinnvolle Testfälle!


  1. Weitere Informationen zur Nährwertkennzeichnung unter https://de.wikipedia.org/wiki/Nährwertkennzeichnung

  2. Weitere Informationen zur Nährwertampel unter https://de.wikipedia.org/wiki/Ampel_(Lebensmittelkennzeichnung)

  3. Quelle Wikipedia 

  4. Also Zahlen vom Typ a + b * i mit i2 = -1. Siehe auch http://de.wikipedia.org/wiki/Komplexe_Zahl