Übungen
Allgemeine Anmerkungen
Zusätzlich zu den folgenden Übungen kannst Du die Erstellung einer eigenen Datenstruktur im nächsten Projekt Platz Da! üben.
Da man Objektsammlungen immer wieder benötigt, sind entsprechende Klassen schon fertig implementiert bei Java dabei. Wie man z.B. Listen und ähnliche Klassen benutzt, kannst Du im Abschnitt zu Listen lernen.
Aufgabe 1 - Erst abheben
Es ist wichtig, dass Du eine Karte erst von einem Stapel abhebst, bevor Du sie auf einen anderen Stapel legst. Dies entspricht auch dem Verhalten eines realen Stapels, da eine Karte sonst auf zwei Stapeln gleichzeitig liegen müsste.
Das folgende Codefragment demonstriert eine Benutzung, die zu Problemen führt:
Stapel a = new Stapel();
Stapel b = new Stapel();
a.push(new Karte(1));
a.push(new Karte(2));
b.push(a.top());
a.pop();
Erkläre mit Hilfe eines Objektdiagramms, welches Problem sich hier ergibt.
Falls Du Hilfe benötigst, kannst Du das angefangene Objektdiagramm erläutern und ergänzen.
Falls Du Dich mit dem Exkurs - Generische und innere Klassen
beschäftigt hast: Erkläre warum sich dieses Problem bei Verwendung einer zusätlichen Zwischenschicht
ähnlich der Klasse Listenelement
nicht ergibt.
Aufgabe 2 - Paare
Es sollen Paare von Menschen verwaltet werden. Dazu soll eine Klasse Paar
programmiert werden,
welche den folgenden Anforderungen genügt:
- Ein Objekt der Klasse
Paar
enthält je eine Referenz auf die beiden Objekte, die ein Paar bilden. - Im Konstruktor sollen beide Menschen übergeben werden.
- Es soll eine Methode
getPartner(Mensch m)
geben, welche einen Menschen als Parameter übergeben bekommt. und den jeweiligen Partner des Paares zurückgibt. Falls der als Parameter übergebene Mensch kein Teil des Paares ist, wirdnull
zurückgegeben.
Außerdem soll es eine Klasse Mensch
geben. Ein Mensch hat einen Namen und einen Wohnort.
Der folgende Dialog im Codepad demonstriert die geforderte Funktionalität:
Mensch mann = new Mensch("Anton", "Aachen");
Mensch frau = new Mensch("Barbara", "Bonn");
Paar paar = new Paar(mann, frau);
paar.getPartner(mann).name
"Barbara" (String)
Mensch m = new Mensch("Charly", "Cochem");
paar.getPartner(m)
null
- Zeichne ein Objektdiagramm, das den oben dargestellten Code visualisiert.
- Zeichne ein Klassendiagramm mit allen notwendigen Klassen.
- Optional: Schreibe das Grundgerüst der Klassen und erzeuge JUnit-Tests.
- Implementiere die Klasse und teste sie mit Hilfe des Objektinspektors/der Direkteingabe/JUnit.
- Optional: Ändere die Klasse
Paar
so ab, dass sie beliebige Paare verwalten kann. Nutze dazu generische und -und falls notwendig- innere Klassen.