© APSIS GmbH extern.gif (1249 Byte), Polling, 2008


Übungsaufgaben

zum Kapitel 9.

Kapitel 9.1.2

Übung 9.1: Erweitern Sie die obigen Schnittstelle zur Schnittstelle ISackAlgebra, indem Sie Methoden hinzufügen, mit denen die Summe und die Differenz zweier Säcke errechnet werden kann. Prägen Sie eine Implementierung (mit Attrappen, d.h. leeren Methoden) Ihrer Erweiterung für Farben in einem Testprogramm aus.

Kapitel 9.1.7

Übung 9.2: Zeigen Sie mit Hilfe eines Stapeltestprogramms (also kein Dialogprogramm), dass die Klasse lehrbuch.multi.ErwZeichensack persistent ist: Versorgen Sie zuerst Ihren Sack mit Inhalt und speichern Sie ihn; anschließend erzeugen Sie ein neues Sackobjekt, laden Sie ihn und überprüfen Sie seinen Inhalt.

Kapitel 9.2.1

Übung 9.3: Erstellen Sie ein menügesteuertes Programm für zwei Farbmengen. Generieren Sie mit Hilfe des Menügenerators das Menü, das die einzelnen Operationen aktiviert: "Erste Menge", "Zweite Menge" (Vorwahl), "Eintragen" (Auswahl der Farbe), "Entfernen" (mit Auswahl einer Farbe), "Entleeren" und "Vorhanden" (Auswahl einer Farbe, Ergebnis über meldung), oder bauen Sie dieselben Menüpunkte mit Standardklassen auf.

Kapitel 9.2.2

Übung 9.4: Ergänzen Sie Ihre Lösung der Übung 9.3 mit Menüpunkten, in denen Sie auch die Mengenoperationen testen. Benutzen Sie dabei die implementierende Klasse multi.ErwFarbmenge.

Kapitel 9.2.4

Übung 9.5: Erstellen Sie ein menügesteuertes Programm (wie in der Übung 9.3) für zwei Zeichenmengen mit Vorwahl.

Übung 9.6: Erweitern Sie die obige Schnittstelle IZeichenmenge um die mengentheoretischen Operationen Vereinigung, Schnitt und Komplement. Ergänzen Sie auch Ihr menügesteuertes Programm aus der Übung 9.5 durch Menüpunkte, mit deren Hilfe Sie die Vereinigung und den Schnitt Ihrer beiden Zeichenmengen sowie das Komplement von einer der beiden berechnen können. In die Implementierung müssen Sie zunächst einmal leere Methoden, d.h. Attrappen (dummies) einsetzen, da wir es noch nicht gelernt haben, wie Multibehälter implementiert werden.

Kapitel 9.3.1

Übung 9.7: Entwickeln Sie die allgemeine Schnittstelle IFolge mit allen üblichen Multibehälter-Operationen. Nehmen Sie dazu auch die Methode zusammenfuegen (oder konkatenieren) und evtl. noch einige von Ihnen ausgedachte (z.B. invertieren, d.h. die Reihenfolge der Elemente umkehren) dazu.

Kapitel 9.3.3

Übung 9.8: Prägen Sie eine generische Implementierung dieser Schnittstelle (z.B. die Klasse lehrbuch.multi.WarteschlangeL), für eine Aufzählungsklasse Ihrer Wahl (wie z.B. lehrbuch.Farbe) aus, und rufen Sie ihre Methoden menügesteuert auf. Fangen Sie dabei die exportierten Ausnahmen auf, indem Sie den Anwender über ein Meldungsfenster über die fehlgeschlagene Aktion informieren.

Kapitel 9.3.4

Übung 9.9: Entwerfen und implementieren Sie auf diese Weise das menügesteuerte Programm Nikolaus, das wartenden Kindern (aus einem Objekt der Klasse multi.Warteschlange) Geschenke aus seinem Sack (multi.Sack) verteilt. Die Namen der Kinder und die Geschenke listen Sie im Programm als Werte einer Aufzählungsklasse auf. Der Anwender des Programms soll wählen, wann der Nikolaus ein Geschenk einkauft (und es in seinen Sack legt), wann ein Kind bei ihm ankommt (und sich in die Warteschlange einreiht) und wann er das am längsten wartende Kind beschenkt. Das Geschenk soll über eine Auswahlliste ausgesucht werden; wenn der Nikolaus es nicht (mehr) in seinem Sack hat, muss er es über eine geeignete Meldung ablehnen.

Fertigen Sie neben einer Lösung mit dem Menügenerator (wie oben) auch eine mit Standardmenüs an. Hier müssen Sie die Rückrufprozeduren (wie oben patientKommt und dieNaechsteBitte) aus actionPerformed aufrufen. Es ist dann zweckmäßig, statt der auswahl-Methode der Aufzählungsklassen Standard-Auswahllisten (javax.swing.JCombo­Box) zu benutzen: getSelectedItem liefert die Nummer der Auswahl und wert setzt den Aufzählungswert auf diese Nummer. Um die Namen der Kinder und der Geschenke nicht doppelt angeben zu müssen (was fehleranfällig ist), verwenden Sie addItem für Ihre JComboBox-Objekte in einer Zählschleife über alle Aufzählungswerte.

Statt meldung benutzen Sie jetzt ein javax.swing.JLabel-Objekt.

Kapitel 9.3.5

Übung 9.10: Gestalten Sie Ihr Programm aus der Übung 9.8 (FIFO-Farbbehälter) in einen LIFO-Farbbehälter um, indem Sie die generische Klasse multi.Stapel mit Farbe ausprägen. Zeigen Sie den Unterschied zwischen einer Warteschlange und einem Stapel.

Übung 9.11: Entwickeln Sie ein Programm, mit dem Sie gerade und ungerade Zahlen in zwei getrennten Warteschlangen speichern können.

Kapitel 9.4.2

Übung 9.12: In der Übung 9.9 haben Sie das Programm Nikolaus auch mit Standardmenüs angefertigt. Tauschen Sie darin die Multibehälter des lehrbuch-Pakets auf Standard-Multibehälter aus.

Kapitel 9.4.4

Übung 9.13: Erweitern Sie Ihre Lösung der Übung 9.12 durch einen Menüpunkt, der die im Sack befindlichen Geschenke auflistet. Wandern Sie dabei durch den Multibehälter mit Hilfe eines Iterators.

Übungsaufgaben zum Kapitel 10


© APSIS GmbH extern.gif (1249 Byte), Polling, 2008