Kontrollfragen

  1. Was beschreibt eine Assoziation in der OOM?
  2. Wir wird eine Assoziation in UML-Klassen- und UML-Objekt-Diagrammen dargestellt?
  3. Was versteht man unter Multiplizität (Kardinalität)?
  4. Wie werden Assoziationen in Java umgesetzt?
  5. Worin unterscheiden sich Assoziationen und Aggregationen im UML-Diagramm und ihrer Umsetzung in Java?

Aufgabe 1

Geben Sie eine einfache Klasse Buch an, mit der ein Buch für eine Bibliothek erfasst werden kann. Jedes Buch wird durch eine ISBN-Nummer, einen Titel und den Autor beschrieben, zusätzlich soll der Standort (z. B.: BEL-23-12) gespeichert werden. Folgende Operationen sollen möglich sein:

  • Erzeugen einer Instanz (eines Objektes) unter Angabe der ISBN-Nummer, des Titels und des Autors,
  • Setzen und Abfragen des Standorts jeder einzelnen Instanz und
  • Ausgabe von Titel und Autor einer Instanz in einer Methode toString()
  1. Geben Sie ein geeignetes UML-Klassendiagramm für die Klasse Buch. an.
  2. Implementieren Sie eine Klasse Buch, die die beschriebenen Eigenschaften besitzt.
  3. Von einer Konsolenanwendung AppBuch aus soll das Buch „Per Anhalter durch die Galaxis“ von Douglas Adams erfasst werden (ISBN: 3453209613). Dieses Buch wird dann an den Standort SY-12-34 gestellt. Danach sollen die Daten des Buches ausgegeben werden.

In der Bibliothek sollen nun bis zu 1000 Bücher erfasst werden.

  1. Ergänzen Sie das UML-Diagramm von oben mit einer Klasse Bibliothek (Attribute: Name, Adresse) und einer notwendigen Beziehung dieser neuen Klasse zur Klasse Buch.
  2. Geben Sie im UML-Diagramm auch die Beziehung zwischen den Klassen an.
  3. Implementieren Sie Klasse Bibliothek, insbesondere die drei Methoden zur Verwaltung des Feldes der Bücher.
  4. Von einer Konsolenanwendung AppBibliothek aus sollen …
    1. drei Bücher hinzugefügt werden,
    2. eines der eingefügten Bücher gelöscht werden und
    3. wieder zwei hinzugefügt werden
    4. (nach jeder Aktion soll die Bücherliste ausgegeben werden)

Aufgabe 2

Modellieren Sie die folgenden Situationen als Klassendiagramm. Geben Sie auch die Multiplizitäten an:

  1. Zwischen einem Musiker und einem Musik-Label besteht in der Regel eine Verbindung, die als „Vertrag“ bezeichnet wird. Musiker können bei einem oder auch keinem Label unter Vertrag stehen.
  2. Ein Zug besteht aus genau 4 Waggons und einer Lok, wobei Waggons und Loks auch ohne Zug existieren können.
  3. In einem Buch gibt es Seiten, Absätze und Wörter. Die Absätze können dabei über mehrere Seiten gehen. Auch ein allein stehendes Wort bildet schon einen Absatz. Jede Seite kann herausgerissen werden. Wenn das Buch verbrennt, verbrennen auch alle seine Seiten.
  4. Eine Bank hat viele Kunden. Jeder Kunde besitzt einen Namen und kann über mehrere Konten verfügen. Zu jedem Konto gehören eine Kontonummer, der Kontostand und die vielen, mit dem Konto verbundenen Einzahlungen und Auszahlungen. Ein- und Auszahlungen bestehen jeweils aus einem Betrag und einem Datum.

Aufgabe 3

Vor einer Autowaschanlage der Tankstelle “OSSE” gibt es regelmäßig eine Schlange an Autos, die gewaschen werden sollen. Die bekannte Firma ProfiSoft soll nun ein Programm entwickeln, welches diese Warteschlange verwaltet. Aus Erfahrungsgründen (und aus Platzgründen) sind nie mehr als 10 Autos in dieser Schlange. Natürlich soll sich ein neu hinzukommendes Auto am Ende der Schlange anstellen (solange noch Platz ist), außerdem sollen alle wartende Autos aufrücken, wenn das an erster Stelle stehende Auto in die Anlage einfahren darf, Autos können natürlich jederzeit die Schlange verlassen und wieder “nach Hause” fahren.

  1. Stellen Sie zu dem gegebenen Problem ein (geeignetes) Pflichtenheft auf. Suchen Sie sich dafür notwendige und sinnvolle Eigenschaften für die Klasse Auto
  2. Modellieren Sie eine geeignete Klasse Auto.
  3. Modellieren Sie eine geeignete Klasse Warteschlange. (Verwenden Sie zum Verwalten der gewünschten Anzahl an Autos eine geeignete Datenstruktur.)
  4. Testen Sie ihren Entwurf mit Hilfe des Java-Editors.
  5. Modellieren und Implementieren Sie eine Klasse WarteschlangeGUI, die für das gegebene Problem ein Java-Programm als Lösung anbietet.

Aufgabe 4

In einem Aquarium werden verschiedene Zierfische gehalten. Bestimmte Arten sind sehr temperaturempfindlich, d. h. von einer bestimmten vorgegebenen Temperatur sollte nicht mehr als 5% abgewichen werden. Um dies zu garantieren, wird in regelmäßigen Abständen die Temperatur gemessen und an die Steuerungseinheit übergeben, die dann gegebenenfalls nachgeregelt. Zudem soll eine Lampe über dem Aquarium gesteuert werden.

  • Beschreiben Sie die folgende Ausgabe (der Steuereinheit):
  • Modellieren Sie eine Klasse Steuerung mit geeigneten Attributen und Methoden in Form eines UML-Klassendiagramms und implementieren Sie diese Klasse so, dass die o. a. Ausgabe möglich wird.
  • Geben Sie ein Hauptprogramm an, das mit Hilfe eines Steuerobjektes die obige Ausgabe erzeugt.

Aufgabe 5

Die Klasse Punkt soll einen Punkt in einem zweidimensionalen Koordinatensystem repräsentieren. Ein Punkt besteht aus folgenden Attribute:

  • X-Koordinate
  • Y-Koordinate

Die Klasse Punkt soll Methoden für folgende Problemfelder erhalten:

  • toString()
  • Abstand des Punktes zum Ursprung
  • Spiegelung des Punktes an der X-Achse (Ergebnis soll ein neuer Punkt sein!)
  • Spiegelung des Punktes an der Y-Achse (Ergebnis soll ein neuer Punkt sein!)
  • Spiegelung des Punktes am Ursprung (Ergebnis soll ein neuer Punkt sein!)
  • Abstand es Punktes zu einem anderen Punkt.

Die Firma ProfiSoft erhält den Auftrag, ein Programm zur Verwaltung einer Zahnarztpraxis zu entwickeln. Das vom Auftraggeber vorgegebene Pflichtenheft sieht folgendermaßen aus:

  1. Über jeden Kassen-Patienten sind folgende Daten zu speichern: Patienten-Nr., Patientenname, Adresse, Geburtsdatum, Versichertenname, Versicherten-Karte vorgelegt (ja, nein).
  2. Jeder Kassen-Patient gehört zu genau einer Krankenkasse.
  3. Jede Krankenkasse kann mehr als einen Kassen-Patienten haben.
  4. Über jede Krankenkasse sind folgende Daten zu speichern: Kassennummer, Kassenname.
  5. Wird ein neuer (Kassen-)Patient angelegt, dann sind die Patienten-Nr. und der Patientenname einzutragen.
    1. Gleichzeitig ist der neue Patient einer Krankenkasse zuzuordnen.
      1. Variante I: es gibt nur eine Krankenkasse (wurde vorher angelegt)
      2. Variante II: es gibt mehrere Krankenkassen (wurden vorher angelegt)
      3. Variante III: es wird überprüft, ob die angegebene Krankenkasse schon vorhanden ist; evtl. muss sie neu angelegt werden
  6. Der Versichertenname ist mit dem Patientennamen beim Erzeugen vorzubelegen. “Versicherten-Karte vorgelegt” ist mit “ja” zu initialisieren.

Erstellen Sie entsprechend dem Pflichtenheft ein Klassendiagramm in UML-Notation zuerst auf Papier, dann im Java-Editor. Testen Sie die Klassen mit geeigneten Beispieldaten.

Implementieren Sie das Klassendiagramm in einem lauffähigen Java-Programm. Testen Sie die Klassen in einer geeigneten App; zunächst nur zwei Patienten und zwei Kassen. Geben Sie die Informationen über geeignete Methoden aus.


Aufgabe 6

Eine Firma verleiht Mietwagen an ihre Kunden, dabei wird zwischen Privat- und Firmenkunden unterschieden. Um dies zu verwalten benötigt die Firma ein Programm, welches Kunden, Autos und entsprechende Mietverträge verwalten kann.

  1. Erstellen Sie ein geeignetes Pflichtenheft.
  2. Geben Sie ein UML-Diagramm an und überführen Sie dieses in den Java-Editor.
  3. Testen Sie die erzeugten Klassen im Klasseneditor.
  4. Schreiben Sie eine geeignete GUI für das Problem. (Im Grunde sind hier mehrere GUI-Klassen notwendig …)