Übungen

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 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:

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
  1. Zeichne ein Objektdiagramm, das den oben dargestellten Code visualisiert.
  2. Zeichne ein Klassendiagramm mit allen notwendigen Klassen.
  3. Optional: Schreibe das Grundgerüst der Klassen und erzeuge JUnit-Tests.
  4. Implementiere die Klasse und teste sie mit Hilfe des Objektinspektors/der Direkteingabe/JUnit.
  5. Optional: Zeichne ein abgewandeltes Objekt- und Klassendiagramm, sodass beliebige Paare verwaltet werden können.
  6. Optional: Ändere die Klasse Paar so ab, dass sie beliebige Paare verwalten kann. Nutze dazu generische und innere Klassen.
X

Fehler melden

X

Suche