6.2 Assoziationen zwischen Objekten
 
Eine wichtige Eigenschaft von objektorientierten Systemen ist der Austausch von Nachrichten untereinander. Dazu »kennt« ein Objekt ein anderes und bittet dieses, etwas zu machen. Dieses Kennen nennt sich Assoziation und ist vielleicht das wichtigste Werkzeug bei der Bildung von Objektverbänden.
Wir können uns etwa vorstellen, dass eine Socke einen Verweis auf einen Hersteller besitzt. Dann sind Socke und Hersteller zwei Objekte, die sich kennen. Gehen wir einfach davon aus, dass die Socke den Hersteller kennt, aber der Hersteller seine Socken nicht. Dann würde das in Java etwa so aussehen:
class Socke
{
String farbe;
int größe;
Hersteller produzent;
}
class Hersteller
{
// ...
}
In der UML existiert dafür ebenfalls eine grafische Darstellung. Die beiden Klassen sind durch eine Linie verbunden. Da jede Assoziation eine Richtung hat, lässt sich auch ein Pfeil am Ende der Assoziation anbringen, wenn die Assoziation einseitig ist, so wie in unserem Fall. In der Regel tauchen die Namen der Assoziation, wie in der UML-Grafik zu sehen, nicht als Variablennamen auf.
Diese gerichteten Assoziationen sind in Java sehr einfach umzusetzen, wie wir im Beispiel gesehen haben. Beidseitige Assoziationen erfordern schon etwas mehr Programmieraufwand, da sichergestellt sein muss, dass beide Seiten eine gültige Referenz besitzen. Denn wird die Assoziation auf einer Seite aufgekündigt, etwa durch Setzen der Referenz auf null, dann muss auch die andere Seite die Referenz lösen. Am besten wird dies mit Zugriffsmethoden gelöst, etwa wie setzeHersteller(), löscheHersteller() bei der Socke und setzeEigentümer() und löscheEigentümer() oder vielleicht setzeProdukt()/löscheProdukt() beim Hersteller. Hinzu kommt, dass der Hersteller sicherlich nicht nur eine Socke produziert hat, sondern mehrere. Daher findet sich auf der Seite des Herstellers eine Datenstruktur, die alle produzierten Socken speichert.
Abbildung 6.2
Eine gerichtete Beziehung
|
|