§3 Objektorientierte Modellierung: Assoziationen

«


« Beziehungen zwischen Objekten

Um Nachrichten austauschen zu können, müssen Objekte von der Existenz anderer "wissen". Häufig stehen sie sogar untereinander in wichtigen Beziehungen:

Um eine Bewegung simulieren zu können, muss die Kraft auf einen Planeten berechnet werden. Diese ergibt sich aus dem Newtonschen Gravitationsgesetz, welches die Massen der Planeten benötigt. Vereinfacht man die Beziehung soweit, dass die Kräfte der anderen Planeten des Systems vernachlässigt werden können, so ergibt sich folgender Zusammenhang:

Planetenassoziation

"Planeten werden von der Sonne angezogen". Diese Relation zwischen der Klasse "Planet" und der Klasse "Stern" wird hier dargestellt. Die in blau dargestellten Zahlen kennzeichnen die Anzahl der Objekte, die gleichzeitig an dieser Beziehung teilnehmen:
*(beliebig viele) Planeten werden von 1 Stern angezogen.

Oder aus der Transportsimulation:

Transportassoziation

Autos fahren auf Straßen und Straßen bieten Platz für Autos. Die Sterne, die auf jeder Seite stehen zeigen an, dass sowohl ein Auto auf vielen Straßen fahren kann (obere Grenze nicht bekannt) und eine Straße Platz für beliebig viele Autos bietet (kein Stau!).

« Assoziationen

Eine Assoziation beschreibt eine Menge (gleichartiger) Beziehungen zwischen Objekten einer oder mehrerer Klassen. Assoziationen verknüpfen die beteiligten Klassen und spezifizieren die Struktur und Semantik der möglichen Beziehungen zwischen den Exemplaren dieser Klassen.
Die Multiplizität oder Kardinalität einer Assoziation legt fest, wie viele Objekte einer beteiligten Klasse mit wie vielen Objekten der anderen beteiligten Klassen in Beziehung stehen können.

Beispiele:

Schulassoziation

Ein Schüler hat Unterricht bei zwischen 6 und 8 Lehrern, während ein Lehrer zwischen 5 und 200 Schüler unterrichtet.



Eine Person kann Mutter von (nahezu) beliebig vielen (auch keinen) Kindern sein und besitzt eine (oder keine) Mutter. Dies ist eine selbstbezügliche oder rekursive Assoziation.

« gerichtete Assoziationen

Bei einer gerichteten oder unidirektionalen Assoziation kann nur in eine Richtung navigiert werden, d.h. die Objektverbindungen können nur in einer Richtung durchlaufen werden. Bei bidirektionalen Assoziationen kann beidseitig navigiert werden kann, d.h. die Objektverbindungen existieren in beide Richtungen.



Hierbei ist die mögliche Richtung durch ein offene Pfeilspitze gekennzeichnet, nur am Ziel existiert eine Kardinalität.

Beispiel:



« Aggregation

Enthalten Objekte einer Klasse die Objekte der anderen Klasse, so spricht man von Aggregation.

Beispiel:



Das "Enthaltensein" wird durch eine weiße Raute am Container angezeigt.
Während ein Rad oder ein Motor nach einem Autounfall in ein anderes Auto eingebaut werden kann, existiert ein Konto nur, wenn die entsprechende Bank existiert. In diesem besonderen Fall einer Aggregation spricht man von Komposition:

« Komposition



Eine Bank verwaltet mehrere Konten. Diese existieren nur, wenn die Bank existiert.

Weitere Beispiele wären:

« Aufgaben

  1. Eine Person (Name, Vorname) kann sowohl Schüler als auch Lehrer sein. Während ein Lehrer Klassleiter mehrerer Schüler sein kann, besitzt jeder Schüler nur einen Klassleiter. Modellieren Sie diese Situation.
  2. Modellieren Sie eine Beziehung zwischen Zug und Gleis in einer Transportsimulation.
  3. Erklären Sie die Bedeutung der folgenden Modellierung und ergänzen Sie sie so weit möglich:

  4. Eine Firma beschäftigt Mitarbeiter. Davon sind einige Vorgesetzte, der Rest Angestellte. Modellieren Sie diese Situation in UML
  5. Ein Kunde soll modelliert werden. Der Kunde trägt einen Namen. Jeder Kunde hat mindestens eine Adresse (Straße, PLZ, Wohnort) und beliebig viele Bankverbindungen (Kontonummer, Bankname, Bankleitzahl). Außerdem kann er unter Umständen über mehrere Telefonnummern bzw. Faxnummer erreichbar sein. Modellieren Sie die Situation unter Ausnutzung der Aggregation.
  6. Suchen Sie sich in der Transportsimulation Beispiele für Aggregation und Komposition und modellieren Sie sie in UML
  7. Modellieren Sie die Klassen Baum, Stamm, Zweig und Blatt eines Laubbaumes mit Hilfe von Assoziationen.
  8. Versuchen Sie eine Modellierung des Planetensystems mit Vererbung und Assoziationen.
  9. Modellieren Sie einen Pizzaservice in UML.