erstellt 01.10.99; korrigiert 08.03.00; übersetzt 17.06.03; © Copyright 2003 Deutsche Übersetzung Heinrich Gailer
Diese Aufgaben gehen davon aus, dass Sie die Aufgabe, die im Rückblick dieses Kapitels behandelt wurde, gelesen haben. Alle Programmieraufgaben sind Modifikationen dieses Programms. Beginnen Sie, indem Sie dieses Programm nach Notepad kopieren.
Modifizieren Sie die PantryTester-Klasse, so dass sie einen Dialog mit dem Anwender ausführt:
Willkommen zu Mutter Hubbards Vorratskammer! Die Marmeladen sind: 1: Gooseberry 7/4/86 12 fl. oz. 2: Crab Apple 9/30/99 8 fl. oz. 3: Rhubarb 10/31/99 16 fl. oz. Treffen Sie Ihre Auswahl (1, 2 oder 3): 1 Geben Sie die Menge ein, die aufgetragen werden soll: 2 Auftragen von 2 fluessigen Unzen von Gooseberry Die Marmeladen sind: 1: Gooseberry 7/4/86 10 fl. oz. 2: Crab Apple 9/30/99 8 fl. oz. 3: Rhubarb 10/31/99 16 fl. oz. Treffen Sie Ihre Auswahl (1, 2 oder 3): 2 Geben Sie die Menge ein, die aufgetragen werden soll: 25 Auftragen von 8 fluessigen Unzen von Crab Apple Die Marmeladen sind: 1: Gooseberry 7/4/86 10 fl. oz. 2: Crab Apple 9/30/99 0 fl. oz. 3: Rhubarb 10/31/99 16 fl. oz. Treffen Sie Ihre Auswahl (1, 2 oder 3): 2 Geben Sie die Menge ein, die aufgetragen werden soll: 9 Keine Marmelade im Glas! Die Marmeladen sind: 1: Gooseberry 7/4/86 10 fl. oz. 2: Crab Apple 9/30/99 0 fl. oz. 3: Rhubarb 10/31/99 16 fl. oz. Treffen Sie Ihre Auswahl (1, 2 oder 3): -1 Good-by
Das Programm sollte zuerst die Jams und die Pantry initialisieren, dann...
Verwenden Sie die Jam und Pantry Klassen aus der Aufgabe im Rückblick.
Um dies zu tun:
Jam.class, eine Pantry.class und eine PantryTester.class
in Ihren Verzeichnis haben.Aufgabe1.java, die den Anwenderdialog implementiert.Aufgabe1.java.
Aufgabe1.java wird folgendermaßen aussehen:
import java.io.*;
class Aufgabe1
{
public static void main ( String[] args ) throws IOException
{
BufferedReader stdin = new BufferedReader( new InputStreamReader( System.in ) );
String inChars;
Jam goose = new Jam( "Gooseberry", "7/4/86", 12 );
Jam apple = new Jam( "Crab Apple", "9/30/99", 8 );
Jam rhub = new Jam( "Rhubarb", "10/31/99", 16 );
. . . . . . . . . .
}
}
Zurück zur Übersicht.
Pantry-Klasse
Fügen Sie der Pantry-Klasse neue Konstruktoren hinzu:
einen Konstruktor, der einen Jam-Parameter übernimmt
und einen weiteren, der zwei Jam-Parameter übernimmt.
Nicht verwendete Instanzvariablen des Pantry-Objekts werden auf
null gesetzt.
Modifizieren Sie jetzt die Methoden der Klasse, so dass sie mit
null in den Instanzvariablen umgehen können:
print() überprüft auf null, bevor die Marmeladen ausgegeben werden.
select() wird einen Rückgabetyp boolean haben.
Geben Sie true zurück, wenn die Auswahl verfügbar ist, ansonsten
false.
Hier ist die PantryTester2-Klasse, die den neuen Code vorführt:
class PantryTester2
{
public static void main ( String[] args )
{
Jam goose = new Jam( "Gooseberry", "7/4/86", 12 );
Jam apple = new Jam( "Crab Apple", "9/30/99", 8 );
Pantry hubbard = new Pantry( goose, apple );
hubbard.print();
if ( hubbard.select(1) )
hubbard.spread(2);
else
System.out.println("Auswahl nicht verfuegbar");
hubbard.print();
if ( hubbard.select(3) )
hubbard.spread(2);
else
System.out.println("Auswahl nicht verfuegbar");
hubbard.print();
}
}
Wenn es läuft, gibt es folgendes aus:
1: Gooseberry 7/4/86 12 fl. oz. 2: Crab Apple 9/30/99 8 fl. oz. Auftragen von 2 fluessigen Unzen von Gooseberry 1: Gooseberry 7/4/86 10 fl. oz. 2: Crab Apple 9/30/99 8 fl. oz. Auswahl nicht verfuegbar 1: Gooseberry 7/4/86 10 fl. oz. 2: Crab Apple 9/30/99 8 fl. oz.
Natürlich, ein vollständiges Testen würde eine sehr viel größere PantryTester2 voraussetzen.
replace() Methode
Fügen Sie dem Programm aus Aufgabe 2 mehr Code hinzu.
Schreiben Sie eine Methode replace( Jam j, int slot ) für die Pantry-Klasse,
die ein bestimmtes Glas Marmelade aus der Vorratskammer durch das Objekt
j ersetzt.
Hier ist das Test-Programm:
class PantryTester3
{
public static void main ( String[] args )
{
Jam goose = new Jam( "Gooseberry", "7/4/86", 12 );
Jam apple = new Jam( "Crab Apple", "9/30/99", 8 );
Jam rhub = new Jam( "Rhubarb", "10/31/99", 16 );
Pantry hubbard = new Pantry( goose, apple );
hubbard.print();
if ( hubbard.select(3) )
hubbard.spread(2);
else
System.out.println("Auswahl nicht verfuegbar");
hubbard.print();
hubbard.replace( rhub, 3 );
hubbard.print();
if ( hubbard.select(3) )
hubbard.spread(2);
else
System.out.println("Auswahl nicht verfuegbar");
hubbard.print();
}
}
Zurück zur Übersicht.
Fügen Sie der Pantry-Klasse eine Methode hinzu:
public void mixedFruit()
Diese Methode überprüft, ob jedes Marmeladenglas in der Vorratskammer 2 flüssige Unzen oder weniger hat und ersetzt, wenn dem so ist, das erste Marmeladenglas durch ein Glas gemischter Früchte.
Die Menge ist die kombinierte 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 das alte ersetzt.)
Modifizieren Sie das Test-Programm, um diese neue Methode zu verwenden.
Hier ist ein beispielhafte Ausgabe eines Test-Programms:
1: Gooseberry 7/4/86 4 fl. oz. 2: Crab Apple 9/30/99 1 fl. oz. 3: Rhubarb 10/31/99 2 fl. oz. Auftragen von 2 fluessigen Unzen von Gooseberry 1: Gooseberry 7/4/86 2 fl. oz. 2: Crab Apple 9/30/99 1 fl. oz. 3: Rhubarb 10/31/99 2 fl. oz. 1: Mixed Fruit 7/4/86 5 fl. oz.
Zurück zur Übersicht.
Ende der Aufgaben