MezData-Logo Creative Commons License 526 Lösungen Button :OOP: Beziehungen

Assoziationen (Beziehungen)

In welcher Beziehung stehen Spinnen und SpinnenBox?
Hier können beliebig viele Spinnen in der SpinnenBox leben.

Beispiele für Kardinalitäten:
0..* 0 bis unendlich
* 0 bis unendlich
1..* 1 bis unendlich
0..1 0 oder 1
3..* 3 bis unendlich
6 genau 6
2,5 2 oder 5

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önnen sich Nachrichten schicken!

Konkrete Fragestellungen in diesem Beispiel:

Gruppenarbeit: Zeichnen Sie für folgende Klassenpaare die Klassendiagramme mit Assoziationsbezeichnung und Kardinalitäten:

  1. Auto - Reifen
  2. Buch - Seite
  3. PKW - Strasse
  4. Baum - Blätter
  5. Walkman - Kopfhörer
  6. Dirigent - Orchester
  7. Trainer - Spieler
  8. Orchester - Musiker

FrageWie kann eine Assoziation im Programmcode realisiert werden?

Navigationsrichtung (Zugriffsrichtung)

Hier ein Beispiel für eine Implementierung einer SpinnenBox mit maximal 4 Spinnen und der Darstellung in UML:

Bessere UML-Lösung und auch im ABI so machen:

Statt in einem Attribut wird die Bezeichnung als Rollenname der Beziehung angegeben!

Beispiel für einen Zugriff auf eine Spinne:

Java C++ Delphi
mySpiderBox.spiders[2]
mySpiderBox->spiders[2]
mySpiderBox.spiders[2]
 
mySpiderBox.spiders[2]
 

Wie man hier deutlich sieht, kann schon während der Analysephase für die Implementierung wertvolle Information eingetragen werden!

Rollen allgemein

Es können die Rollen innerhalb einer Beziehung angegeben werden:

 

Objektorientierte Analyse (OOA)

Gruppenarbeit: Ein Klassendiagramm für ein einfaches Ausleihsystem einer Bücherei soll 3 Klassen enthalten: Bücherei, Buch, Ausleiher.

  1. Zeichnen Sie die Assoziationen ein und benennen Sie diese.
  2. Geben Sie alle Kardinalitäten an.
  3. Ergänzen Sie die Klassen um geeignete 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

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:

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:


Es fehlt noch: