Eine Assoziation (engl. association) ist ein Modellelement in der Unified Modeling Language (UML), einer Modellierungssprache für Software und andere Systeme.
Association-1.png Eine Assoziation beschreibt eine Beziehung zwischen zwei oder mehr Typen, im häufigsten Fall eine Verbindung zwischen zwei Klassen. Sie wird dann als binäre Assoziation bezeichnet und spezifiziert, dass beide beteiligten Klassen zueinander in Beziehung stehen. In wenigen Fällen startet oder endet eine Assoziation bei einem anderen Typ, zum Beispiel bei einer Schnittstelle oder einem Anwendungsfall. Die Möglichkeit, mehr als zwei Typen an einer Assoziation zu beteiligen, wird eher selten genutzt. Die Assoziation wird in diesem Fall n-äre Assoziation genannt. Der Assoziation in UML entspricht der Relationshiptyp im Entity-Relationship-Modell.
Association-2.png
Eine Assoziation heißt reflexiv, wenn sie einen Typ mit sich selbst verbindet. Die beiden Enden der Assoziation zeigen hier also auf den gleichen Typ. In der Abbildung links hat die reflexive Assoziation auch einen Namen „Vater/Sohn-Beziehung“, der in der Nähe der Linie gezeichnet wird, die die Assoziation darstellt.
Association-3.png]] In der Abbildung rechts ist an einem Beispiel gezeigt, dass das Repository-Modell hinter dem Klassendiagramm ein Assoziationsende als Instanz der Metaklasse Property speichert. Assoziationsenden können deshalb alle Merkmale einer Eigenschaft haben:
untereGrenze..obereGrenze.
Eine Assoziation bildet eine Art Brücke zwischen zwei Typen: startet man bei der Instanz des einen beteiligten Typ kann man über eine Objektbeziehung zur Instanz des zweiten Typs navigieren. Die UML2 erlaubt nun, die Navigierbarkeit von Assoziationsenden einzuschränken. Dabei unterscheidet sie drei Arten, wie die Navigierbarkeit festgelegt werden kann:
Assoziationen, die auf beiden Seiten navigierbar sind, heißen bidirektionale Assoziationen, nur an einem Ende navigierbare Assoziationen entsprechend unidirektional.
Association-5.png
Das Beispiel links zeigt zwei Assoziationen zwischen den gleichen Typen. Weil sie unterschiedliche Namen Rechnungsadresse für und Lieferadresse für tragen, kann man sie gut unterscheiden. Die beiden kleinen Dreiecke unterstützen den Leser. Sie zeigen die Leserichtung für den Namen der Assoziation an, hier zum Beispiel Adresse * Rechnungsadresse für Bestellung. Zu einer Bestellung können zwei unterschiedliche Instanzen von Adresse gehören, die durch ihre Rolle unterschieden werden. Die eine Instanz hat die Rolle lieferadresse, die andere, optionale, die Rolle rechnungsadresse.
Association-6.png
Eine Beziehung zwischen Klassen, die relativ häufig modelliert wird, ist die Beziehung zwischen einem Ganzen und seinen Teilen. Die UML2 sieht dafür zwei spezielle Assoziationen vor: die Komposition (composite aggregation oder composition) und die Aggregation (shared aggregation oder aggregation). Sie gibt Hinweise, wie sich die beiden unterscheiden, vermeidet aber eine exakte Definition und verweist darauf, dass die Bedeutung einer Aggregation je nach Anwendung und Modellierer variiert. Das einzige eindeutige Unterscheidungsmerkmal betrifft die Multiplizität. Teile, die über eine Komposition mit einem Ganzen verbunden sind, dürfen jeweils in höchstens einem (0..1) Ganzen vorkommen. Falls es sich bei der Assoziation um eine Aggregation handelt, kann ein Teil auch mehrere "Väter" haben. Aus diesem Grund wird die Aggregation auch oft schwache Komposition genannt. Zudem ist das Teil (im Falle der Komposition) oft existenzabhängig vom Ganzen, falls das Ganze die Kardinalität 1 und nicht * trägt.
Grundsätzlich ist die Abgrenzung zwischen Assoziation und Aggregation oft schwierig. Ein schwaches Indiz für die sinnvolle Verwendung einer Aggregation, scheint das Vorliegen von Transitivitäten zwischen den modellierten Klassen zu sein. D.h. wenn zwischen A und B eine Teil/Ganze Beziehung existiert und zwischen B und C ebenfalls, dann muss A auch ein Teil von C sein.
In der grafischen Darstellung einer Komposition dekoriert eine ausgefüllte Raute das Ende, das mit dem Ganzen verbunden ist. Im Fall der Aggregation ist es eine nicht ausgefüllte Raute.
In der UML 1.4 gab es ein spezielles Modellelement AssociationEnd, das in der UML2 durch Property ersetzt wurde.
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Assoziation (UML)".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world