Assoziationen (Beziehungen)
In welcher persitenten (dauerhaften) Beziehung stehen Flaschen-Objekte und Kisten-Objekte?
Hier können 0.24 viele Flaschen in einer Kiste sein.
Beispiele für Kardinalitäten: | |||||||||||||||
|
|||||||||||||||
Die Assoziation gibt an, ob sich die Objekte der beteiligten Klassen kennen.
Die Kardinalität gibt an, wie viele Objekte der beteiligten Klassen sich kennen.
Wichtiger Aspekt: Objekte die in "Beziehung" stehen, könnten sich Nachrichten schicken, Operationen ausführen.
Konkrete Fragestellungen in diesem Beispiel:
- In wie vielen Kisten kann eine Flasche sein?
Antwort: 1 - Wie viele Flaschen kann eine Kiste beinhalten?
Antwort: 0..24
Übung: Zeichnen Sie für folgende Objektpaare die Klassendiagramme mit Assoziationsbezeichnung und Kardinalitäten:
- Auto - Reifen
- Buch - Seite
- PKW - Strasse
- Baum - Blätter
- Walkman - Kopfhörer
- Dirigent - Orchester
- Trainer - Spieler
- Orchester - Musiker
Wie kann eine Assoziation im Programmcode realisiert werden?
Navigationsrichtung (Zugriffsrichtung)
Beispiel: Die Kiste soll Operationen von Flaschen aufrufen können, dazu muss die Kiste die IDs ihrer Flaschenobjekte kennen. Die IDs (Verweise) sollen in einem Feld dieFlasche[] gespeichert werden können. Von der Kiste kann in Richtung der Flaschen "navigiert" werden, in der UML wird dies durch einen Pfeil kenntlich gemacht. Das Attribut dieFlasche[] wird in der Kiste implementiert. Ist die Zielklasse im Klassendiagramm vorhanden wird das Attribut als Rollenname an die Zielklassse geschrieben:
Ist die Zielklasse im Diagramm vorhanden wird das Attribut als Rollennamen verwendet:
Statt in einem Attribut in der Klasse wird die Bezeichnung dieFlasche[] als Rollenname der Beziehung angegeben!
Bidirektionale Assoziationen
Greifen beide Assoziationspartner gegenseitig auf einander zu, können die Pfeile weggelassen werden. Umgekehrt folgt daraus, dass wenn keine Pfeile gezeichnet werden, an beiden Enden der Assoziation Rollennamen stehen müssen.
Rollen allgemein
Es können die Rollen innerhalb einer Beziehung angegeben werden:
Objektorientierte Analyse (OOA)
- In der Analyse wird das Problem untersucht und die Anforderungen an das Programm gesucht.
- Im Mittelpunkt steht das Problem und nicht die Lösung
- Zu beantwortende Frage: Was soll gelöst werden?
Gruppenarbeit: Ein Klassendiagramm für ein einfaches Ausleihsystem einer Bücherei soll 3 Klassen enthalten: Bücherei, Buch, Ausleiher.
- Zeichnen Sie die Assoziationen ein und benennen Sie diese.
- Geben Sie alle Kardinalitäten an.
- Vergeben Sie geeignete Rollennamen.
- Ergänzen Sie die Klassen um weitere Attribute
Aggregation, Komposition
Aggregation = Zusammensetzung, Komposition = Zusammenlagerung
Im Objektorientierten Softwareentwurf = Beziehung eines Teils zum Ganzen
Aggregation (shared aggregation)
Eine Aggregation ist eine spezielle Assoziation, sie liegt vor, wenn zwischen den Objekten der beteiligten Klassen eine Rangordnung gilt, die sich durch
- ist ein Teil
- besteht aus
bescheiben lässt. Man spricht auch vom Ganzen und seinem Teil. Die Objekte der Aggregation bilden einen gerichteten nicht zyklischen Graphen. Das bedeutet, wenn B Teil von A ist, kann A nicht Teil von B sein. Beispiel:
Eine Person ist Teil eines Freundeskreises. Sie kann aber durchaus mehreren Freundeskreisen angehören (-> shared). Aggregationen kommen in der gegenständlichen Welt selten vor.
Komposition (composite aggregation)
Eine Komposition ist eine starke Form der Aggregation, sie unterscheidet sich von der Aggregation durch folgende Eigenschaften:
- Jedes Objekt der Teilklasse kann - zu einem Zeitpunkt - nur Komponente eines einzigen Objekts der Aggregatklasse sein. D.h. die Kardinalität an der Aggregatklasse darf nicht größer als eins sein.
- Die dynamische Semantik des Ganzen gilt auch für seine Teile
- Wird das Ganze z.B. kopiert, so müssen auch die Teile kopiert werden.
- Wird das Ganze gelöscht, so wird auch das Teil gelöscht.
- Ein Teil darf natürlich gelöscht werden, ohne daß das Ganze gelöscht wird.
Die Komposition modelliert also eine Objektverbindung, bei der die Teilklasse existenzabhängig von der Aggregatklasse ist:
Die Finger sind Teil genau einer Hand. In der Regel werden auch die Teile gelöscht, wenn das Ganze stirbt. Hier: Stirbt die Hand, so sterben auch die Finger. Es kann jedoch sein, dass die Finger vor dem Tod der Hand einer anderen Hand zugeordnet werden. Kompositionen werden häufig verwendet, um einen Erstell- und Löschzusammenhang von Objekten darzustellen.
Aggregationen und Kompositionen werden nur verwendet, wenn auf diesen Zusammenhang Wert gelegt wird. Im Zweifelsfall werden Sie weggelassen! |
---|
Erstellen Sie Klassendiagramme mit Aggregation, Komposition für folgende Beziehungen:
- Datei - Verzeichnis
- Auto - Motor
- Mitglied - Verein
- Zimmer - Haus
Es fehlt noch:
- Lösungen
- Codebeispiele
- Aufgaben Arbeitsblatt 4..