erstellt 01.10.99; überarbeitet 08.03.00; übersetzt 17.06.03; überarbeitet 10.02.04, 26.07.04, 18.01.05, 19.10.06, 17.01.11; Deutsche Übersetzung Heinrich Gailer
Diese Aufgaben gehen davon aus, dass Sie die Aufgabe, die im Test dieses Kapitels behandelt wurde, gelesen haben. Alle Programmieraufgaben sind Modifikationen dieses Programms. Beginnen Sie, indem Sie dieses Programm nach Notepad kopieren.
Modifizieren Sie die VorratskammerTester-Klasse, so dass sie einen Dialog mit dem Anwender durchführt:
Willkommen zu Mutter Hubbards Vorratskammer! Die Vorratskammer enthaelt: 1: Stachelbeermarmelade 04.07.09 12 Unzen. 2: Erdbeermarmelade 31.09.10 8 Unzen. 3: Aprikosenmarmelade 31.10.10 16 Unzen. Treffen Sie Ihre Auswahl (1, 2 oder 3). Exit -1: 1 Geben Sie die Menge ein, die aufgetragen werden soll: 2 Auftragen von 2 Unzen Stachelbeermarmelade. Die Vorratskammer enthaelt: 1: Stachelbeermarmelade 04.07.09 10 Unzen. 2: Erdbeermarmelade 31.09.10 8 Unzen. 3: Aprikosenmarmelade 31.10.10 16 Unzen. Treffen Sie Ihre Auswahl (1, 2 oder 3). Exit -1: 2 Geben Sie die Menge ein, die aufgetragen werden soll: 25 Auftragen von 8 Unzen Erdbeermarmelade. Die Vorratskammer enthaelt: 1: Stachelbeermarmelade 04.07.09 10 Unzen. 2: Erdbeermarmelade 31.09.10 0 Unzen. 3: Aprikosenmarmelade 31.10.10 16 Unzen. Treffen Sie Ihre Auswahl (1, 2 oder 3). Exit -1: 2 Geben Sie die Menge ein, die aufgetragen werden soll: 9 Keine Marmelade im Glas! Die Vorratskammer enthaelt: 1: Stachelbeermarmelade 04.07.09 10 Unzen. 2: Erdbeermarmelade 31.09.10 0 Unzen. 3: Aprikosenmarmelade 31.10.10 16 Unzen. Treffen Sie Ihre Auswahl (1, 2 oder 3). Exit -1: -1 Good-bye
Das Programm sollte zuerst die Marmelade-Objekte und die Vorratskammer initialisieren und dann:
Marmelade-Objekte auflisten.
Verwenden Sie die Marmelade-, Vorratskammer-und VorratskammerTester-Klasse aus dem Test. Kopieren Sie das vollständiges Programm mit der Testklasse: nach Notepad, speichern und kompilieren es.
Zurück zum Inhaltsverzeichnis.
Vorratskammer-Klasse
Fügen Sie der Vorratskammer-Klasse neue Konstruktoren hinzu:
einen Konstruktor, der einen Marmelade-Parameter übernimmt
und einen weiteren, der zwei Marmelade-Parameter übernimmt.
Nicht verwendete Instanzvariablen des Vorratskammer-Objekts werden auf
null gesetzt.
Modifizieren Sie jetzt die Methoden der Klasse, so dass sie mit
null in den Instanzvariablen umgehen können:
ausgeben() überprüft auf null bevor die Marmeladen ausgegeben werden.
auswaehlen() wird einen Rückgabetyp boolean haben.
Geben Sie true zurück, wenn die Auswahl verfügbar ist, ansonsten
false.
Hier ist die VorratskammerTester2-Klasse, die den neuen Code vorführt:
class VorratskammerTester2
{
public static void main ( String[] args )
{
Marmelade stachelbeer = new Marmelade( "Stachelbeer", "04.07.09", 12 );
Marmelade erdbeer = new Marmelade( "Erdbeer", "31.09.10", 8 );
Vorratskammer vorrat = new Vorratskammer( stachelbeer, erdbeer );
vorrat.ausgeben();
if ( vorrat.auswaehlen(1) )
vorrat.auftragen(2);
else
System.out.println("Auswahl nicht verfuegbar");
vorrat.ausgeben();
if ( vorrat.auswaehlen(3) )
vorrat.auftragen(2);
else
System.out.println("Auswahl nicht verfuegbar");
vorrat.ausgeben();
}
}
Wenn das Programm läuft, gibt es ungefähr folgendes aus:
Willkommen zu Mutter Hubbards Vorratskammer! Die Vorratskammer enthaelt: 1: Stachelbeermarmelade 04.07.09 12 Unzen. 2: Erdbeermarmelade 30.09.10 8 Unzen. Treffen Sie Ihre Auswahl (1 oder 2). Exit -1: 1 Geben Sie die Menge ein, die aufgetragen werden soll: 5 Auftragen von 5 Unzen Stachelbeermarmelade Die Vorratskammer enthaelt: 1: Stachelbeermarmelade 04.07.09 7 Unzen. 2: Erdbeermarmelade 30.09.10 8 Unzen. Treffen Sie Ihre Auswahl (1 oder 2). Exit -1: 3 Ungueltige Auswahl Treffen Sie Ihre Auswahl (1 oder 2). Exit -1:
Natürlich, ein vollständiges Testen würde eine sehr viel größere VorratskammerTester2-Klasse voraussetzen.
Zurück zum Inhaltsverzeichnis.
ersetzen() Methode
Erweitern Sie das Programm aus Aufgabe 2.
Schreiben Sie eine Methode ersetzen( Marmelade m, int slot ) für die Vorratskammer-Klasse,
die ein bestimmtes Glas Marmelade aus der Vorratskammer durch das Objekt
m ersetzt.
Hier ist das Testprogramm:
class VorratskammerTester3
{
public static void main ( String[] args )
{
Marmelade stachelbeer = new Marmelade( "Stachelbeer", "04.07.09", 12 );
Marmelade erdbeer = new Marmelade( "Erdbeer", "31.09.10", 8 );
Marmelade aprikosen = new Marmelade( "Aprikosen", "31.10.10", 16 );
Vorratskammer vorrat = new Vorratskammer( stachelbeer, erdbeer, aprikosen );
vorrat.ausgeben();
Marmelade kirsch = new Marmelade( "Kirsch", "01.07.09", 11 );
vorrat.ersetzen( kirsch, 3 );
vorrat.ausgeben();
}
}
Zurück zum Inhaltsverzeichnis.
Fügen Sie der Vorratskammer-Klasse eine weitere Methode hinzu:
public void gemischteFruechte()
Diese Methode überprüft, ob jedes Marmeladenglas in der Vorratskammer 2 Unzen oder weniger hat und ersetzt, wenn dem so ist das erste Marmeladenglas durch ein Glas gemischter Früchte.
Die Menge ergibt sich aus der kombinierten Menge aller ursprünglicher Gläser.
Die letzten zwei Gläser werden auf null gesetzt.
(Mit anderen Worten, diese Methode mischt die Marmelade aller drei Gläser, um ein neues Glas zu erzeugen, das die alten ersetzt.)
Modifizieren Sie das Testprogramm, um diese neue Methode zu verwenden.
Hier ist die beispielhafte Ausgabe eines Testprogramms:
Willkommen zu Mutter Hubbards Vorratskammer! Die Vorratskammer enthaelt: 1: Stachelbeer 04.07.09 4 Unzen. 2: Erdbeer 30.09.10 1 Unzen. 3: Aprikosen 31.10.10 2 Unzen. Treffen Sie Ihre Auswahl (1, 2 oder 3). Exit -1: 1 Geben Sie die Menge ein, die aufgetragen werden soll: 2 Auftragen von 2 Unzen Stachelbeermarmelade Die Vorratskammer enthaelt: 1: Stachelbeer 04.07.09 2 Unzen. 2: Erdbeer 30.09.10 1 Unzen. 3: Aprikosen 31.10.10 2 Unzen. Die Vorratskammer enthaelt: 1: Gemischte Fruechte 19.01.11 5 Unzen.
Zurück zum Inhaltsverzeichnis.
Ende der Aufgaben.