MINT üben

Assoziationen zwischen Klassen

Zwei Abituraufgaben mit Hinweisen und Erwartungshorizont: Kardinalitäten umsetzen, Beziehungen in beide Richtungen pflegen — Paketstation und Platzreservierung.

Dein Fortschritt:
0 / 0 Aufgaben
1

Die Paketstation

AFB I–II

Ein Logistikunternehmen betreibt Paketstationen mit je 24 Fächern. Jedes Paket ist für genau einen Kunden bestimmt. Ein Kunde kann mehrere Pakete in derselben Station liegen haben. Die Software ist bereits in Teilen modelliert.

Klassendiagramm der Paketstation (Ausschnitt)
Paketstation
  • - standort: Zeichenkette
  • - faecher: Reihung von Paket
  • c Paketstation(standort: Zeichenkette)
  • + einlegen(fach: Ganzzahl, p: Paket)
  • + abholen(k: Kunde): Ganzzahl
faecher0..24
Paket
  • - sendungsnummer: Zeichenkette
  • - empfaenger: Kunde
  • c Paket(nr: Zeichenkette, k: Kunde)
  • + getEmpfaenger(): Kunde
empfaenger1
Kunde
  • - name: Zeichenkette
  • c Kunde(name: Zeichenkette)
  • + getName(): Zeichenkette
  1. Beschreiben Sie die im Klassendiagramm dargestellten Beziehungen. Gehen Sie dabei auf Navigationsrichtung und Kardinalitäten ein. 4 BE
  2. Implementieren Sie die Methode abholen(k: Kunde): Ganzzahl der Klasse Paketstation. Sie entnimmt alle Pakete, deren Empfänger k ist (die Fächer werden frei), und liefert die Anzahl der entnommenen Pakete. 6 BE
  3. Stellen Sie den Zustand nach den folgenden Anweisungen in einem Objektdiagramm dar. Beschränken Sie sich bei der Station auf die belegten Fächer.
    Kunde ina = new Kunde("Ina");
    Kunde tom = new Kunde("Tom");
    Paketstation st = new Paketstation("Bahnhof");
    st.einlegen(0, new Paket("A1", ina));
    st.einlegen(3, new Paket("B7", tom));
    st.einlegen(5, new Paket("C2", ina));
    Geben Sie außerdem die Rückgabewerte von st.abholen(ina) an, wenn diese Methode zweimal hintereinander aufgerufen wird. 5 BE
  4. Erläutern Sie, welche Änderungen nötig sind, wenn ein Kunde jederzeit alle für ihn eingelagerten Pakete kennen soll, und welches neue Risiko dadurch entsteht. 4 BE

Summe: 19 BE

Hinweise

Hinweis zu Aufgabe a)
Lies jede Linie in Pfeilrichtung als Satz und nenne die Zahl am Linienende.
Hinweis zu Aufgabe b)
Zählschleife über alle Fächer. Leere Fächer enthalten null — erst prüfen, dann getEmpfaenger() aufrufen. Objekte vergleicht man hier mit ==: gemeint ist genau dieses Kunden-Objekt.
Hinweis zu Aufgabe c)
Objektkarten mit unterstrichenem Kopf, Referenzen als Pfeile. Zwei Pakete zeigen auf dasselbe Kunden-Objekt.
Hinweis zu Aufgabe d)
Überlege, wo zusätzlich ein Attribut nötig ist und wer es beim Einlagern und Abholen pflegen muss.