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


Kapitel 35 Programmieraufgaben

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.

Aufgabe 1 — Interaktion mit dem Anwender.

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:

  1. Alle verfügbaren Marmelade-Objekte auflisten.
  2. Den Anwender zur Eingabe auffordern.
  3. Die Auswahl einlesen.
  4. Eine Fehlermeldung für eine ungültige Auswahl ausgeben (und wieder von vorne anfangen).
  5. Den Anwender auffordern eine Aufstrichmenge für die Marmelade einzugeben.
  6. Die Menge der ausgewählten Marmelade, um die Aufstrichmenge verringern.
  7. Das Programm beenden, wenn der Anwender bei der Auswahl -1 eingibt, ansonsten wieder von vorne anfangen.

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.


Aufgabe 2 — Neue Konstruktoren für die 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.


Aufgabe 3 — 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.


Aufgabe 4 — gemischte Früchte

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.