Pflanzen im Schulgewächshaus
AFB I–IIDie Garten-AG simuliert das Wachstum ihrer Pflanzen im Schulgewächshaus. Jede Pflanze hat einen Wasserstand in Prozent (0 bis 100) und eine Höhe in Zentimetern. Je nach Art verbraucht sie pro Tag unterschiedlich viel Wasser. Eine neue Pflanze startet mit einem Wasserstand von 50 und einer Höhe von 5,0 cm.
Die Methoden sollen sich so verhalten: giessen(menge) erhöht den Wasserstand um die angegebene Menge, jedoch höchstens auf 100; nicht positive Mengen bleiben ohne Wirkung. tagVergeht() verringert den Wasserstand um den Tagesverbrauch, jedoch nicht unter 0. Liegt der Wasserstand danach bei mindestens 30, wächst die Pflanze um 0,5 cm. brauchtWasser() liefert genau dann true, wenn der Wasserstand unter 30 liegt.
- - name: Zeichenkette
- - wasserstand: Ganzzahl
- - hoehe: Fließkommazahl
- - verbrauch: Ganzzahl
- c Pflanze(name: Zeichenkette, verbrauch: Ganzzahl)
- + giessen(menge: Ganzzahl)
- + tagVergeht()
- + getWasserstand(): Ganzzahl
- + getHoehe(): Fließkommazahl
- + brauchtWasser(): Wahrheitswert
public class Pflanze {
private String name;
private int wasserstand;
private double hoehe;
private int verbrauch;
public Pflanze(String name, int verbrauch) {
this.name = name;
this.verbrauch = verbrauch;
wasserstand = 50;
hoehe = 5.0;
}
// hier fehlen die Methoden
}
Pflanze p = new Pflanze("Basilikum", 15);
p.tagVergeht();
p.tagVergeht();
System.out.println(p.brauchtWasser());
p.giessen(90);
p.tagVergeht();
System.out.println(p.getWasserstand() + " / " + p.getHoehe());
// Entwurf von Ben (Ausschnitt) public void Pflanze(String name, int verbrauch) { name = name; verbrauch = verbrauch; wasserstand = 50; hoehe = 5.0; } public int getWasserstand() { wasserstand; }
- Ergänzen Sie die Klasse aus Material 1 um die fünf im Diagramm angegebenen Methoden gemäß der Beschreibung.
- Ermitteln Sie die beiden Ausgaben des Testprogramms aus Material 2. Notieren Sie dazu nach jedem Aufruf den Wasserstand und die Höhe.
- Erklären Sie für jede markierte Stelle in Bens Entwurf, warum sie fehlerhaft ist und welche Folge sie hat, und geben Sie jeweils eine Korrektur an.
Hinweise
Hinweis zu Aufgabe a)
void; Ganzzahl → int, Wahrheitswert → boolean. Für „höchstens 100“ bzw. „nicht unter 0“ brauchst du nach der Rechnung eine if-Abfrage. Anfragen enden mit return.„Ergänzen“ heißt: die vorgegebene Lösung beibehalten und nach den Vorgaben erweitern – Attribute und Konstruktor nicht neu schreiben.Hinweis zu Aufgabe b)
tagVergeht() auf die Reihenfolge: erst Wasser abziehen, dann prüfen, ob gewachsen wird. Und beim Gießen: Gibt es eine Obergrenze?Hinweis zu Aufgabe c)
int immer enthalten?„Erklären“ heißt: den Fehler auf die zugrunde liegende Regel von Java zurückführen, nicht nur die Korrektur hinschreiben.