Kollaborationsdiagramm
verwandte Begriffe: collaboration diagram, Zusammenarbeit, Interaktionsdiagramm
Definition
Die verschiedenen Modellelemente eines Programmes agieren innerhalb
des Programmablaufes miteinander. Um diese Interaktionen für einen
bestimmten begrenzten Kontext, unter besonderer Beachtung der Beziehungen
unter den einzelnen Objekten und ihrer Topographie, darzustellen,
verwenden wir das Kollaborationsdiagramm.
Beschreibung
Das Kollaborationsdiagramm visualisiert die einzelnen Objekte und ihre
Zusammenarbeit untereinander. Dabei steht, im Vergleich zum Sequenzdiagramm,
der zeitliche Ablauf dieser Interaktionen im Hintergrund, vielmehr werden
die für den Programmablauf und das Verständnis des selbigen wichtigen
kommunikativen Aspekte zwischen den einzelnen Objekten ereignisbezogen
dargestellt. Der zeitliche Verlauf der Interaktionen wird lediglich durch
eine Numerierung der Nachrichten symbolisiert.
Die einzelnen Objekte können Nachrichten austauschen, ein Objekt kann
sich jedoch auch stets selbst Nachrichten zusenden, ohne da eine Assoziation
vorhanden sein müsste.
Das Kollaborationsdiagramm kann für die Darstellung von Entwurfs-Sachverhalten
benutzt werden und, in etwas detaillierter Form, von Realisierungssachverhalten.
Es beeinhaltet stets kontextbezogene begrenzte Projektionen des Gesamtmodells.
Notation
Die einzelnen Objekte werden als Rechtecke dargestellt. Diese werden durch Assoziationslinien mit einander verbunden, auf denen dann die Nachrichten,
bestehend aus einer durchgehenden zeitlichen Numerierung, dem Namen der
Nachrichten und Antworten und ihren möglichen Argumenten.
Ein Pfeil zeigt die Richtung der Nachricht vom Sender zum Empfänger.
Antworten werden in der Form antwort:=nachricht() symbolisiert.
Die zeitliche Numerierung erfolgt mittels Durchnumerierung der einzelnen
Nachrichten angefangen bei 1, die interaktionsauslösende Startnachricht erhält
noch keine Numerierung.

Somit visualisiert man eine Nachricht in folgender Form:
[Vorgängerbedingung] Numerierung [Antwort:=] Nachrichtenname (Argumentenliste)
Die Vorgängerbedingung beeinhaltet eine Aufzählung aller Numerierungen der
Nachrichten, die bereits verschickt sein müssen, bevor die neue Nachricht
versendet wird.
Die Nummern werden durch Kommas getrennt aufgeführt und mit einem "/" wird die
Aufzählung abgeschlossen. Es muss nicht in jedem Fall eine Vorgängerbedingung
aufgeführt werden, sie dient jedoch der Synchronisation der Nachrichtenabfolge.
Die Numerierung der Nachrichten erfolgt in aufsteigender Reihenfolge.
Werden innerhalb einer Operation, die eine empfangene Nachricht interpretiert,
neue Nachrichten verschickt werden, so erhalten diese neuen Nachrichten eine
Unternumerierung durch einen Punkt von der Hauptnumerierung getrennt (z.B. 1.1:,
1.2.1:, 1.3.3.4:) Somit kann die Tiefe der Verschachtelung einer Nachricht
innerhalb anderer Nachrichten nachvollzogen werden. Die Numerierung wird durch einen Doppelpunkt abgeschlossen.
Sollen Nachrichten mehrfach versendet werden, so wird das durch ein Sternchen "*"
gekennzeichnet. Diese Iteration einer Nachricht kann optional durch Argumente in
eckigen Klammern nach dem Sternchen näher beschrieben werden (z.B. 1.4.2.* [i:=1..n]:)
Iterationen von Nachrichten werden im Normalfall sequenziell vollzogen, sollen diese
parallel ausgeführt werden, so wird dies nach dem Sternchen durch zwei senkrechte
Linien dargestellt (z.B. 1.4.2.* || [i:=1..n]:).
Als Iterationsargument kann auch eine Bedingung angegeben werden, bei deren Erfüllung
dann die entsprechende Nachricht gesendet wird. Somit können auch weitreichendere
Interaktionsstrukturen realisiert werden. (z.B. 1.4.2.* [x<9]:)
Die Antwort auf eine Nachricht kann explizit durch einen Namen gekennzeichnet sein.
Dieser kann dann in anderen Nachrichten als Argument auftauchen. Der Gültigkeitsbereich
verhält sich analog zu lokalen Variablen innerhalb der sendenden Nachricht und kann auch
eine solche sein.
Der Name der Nachricht ist in der Regel gleichlautend zu der, durch die Nachricht
interpretierten Operation des Objektes.
Innerhalb des, in einem Kollaborationsdiagramm dargestellten Kontextes können Objekte
erzeugt und zerstört werden. Objekte die erzeugt wurden, werden mit "new", Objekte die
im Kontext zerstört werden, sind durch "destroyed" und Objekte die erzeugt und dann
innerhalb den Kontextes auch wieder vernichtet werden sind mit "transient" zu kennzeichnen.
Die Nachrichtenabfolge zwischen den Objekten kann durch Synchronisationsbedingungen
gesteuert werden. Diese werden durch unterschiedliche Pfeilformen dargestellt. Man
unterscheidet folgende mögliche Synchronisationsbedigungen:
- sequentiell - das sendende Objekt kann erst dann fortfahren, wenn das empfangende Objekt die Nachricht aufgenommen und vollständig verarbeitet hat
- synchron - das sendende Objekt wartet nur bis das empfangende Objekt die Nachricht angenommen hat
- eingeschränkt - die Übermittlung einer eingeschränkten Nachricht wird abgebrochen, sollte das empfangende Objekt die Nachricht nicht sofort annehmen
- zeitabhänig - die Übermittlung einer zeitabhängigen Nachricht wird abgebrochen, sollte das empfangende Objekt die Nachricht nicht bis zum Ablauf einer bestimmten Zeit annehmen
- asynchron - die asynchrone Nachricht gerät in die Warteschlange des empfangenden Objektes, das sendende Objekt fährt fort.
ÿ

Um die Beziehungen zwischen den einzelnen Objekten noch detailierter betrachten zu können,
besteht die Möglichkeit, den Verbindungslinien zwischen den Objekten zuzuordnen.
Diese werden am empfangenden Objekt auf der Verbindungslinie dagestellt und können folgende
Notation besitzen:
- association - beschreibt eine Assoziation, Aggregation oder Komposition zwischen den Objekten und kann, da dies als Standardfall anzusehen ist auch weggelassen werden
- global - das empfangende Objekt ist global
- local - das empfangende Objekt ist lokal in der sendenden Operation - also "new" oder "transient"
- parameter - das empfangende Objekt ist ein Parameter in der sendenden Operation
- self - das empfangende Objekt ist das sendende Objekt
ÿ
Objekt
verwandte Begriffe: Exemplar, Instanz
Definition
Ein Objekt ist ein aktives, konkret vorhandenes Modellelement in einem
laufendem System. Es ist ein Exemplar einer Klasse, gekennzeichnet durch
eine Anzahl von Attributen, deren Struktur durch die Klasse, der das Objekt
entstammt, definiert ist, deren Werte jedoch bei jedem Objekt individuell
sein können. Ein Objekt verfügt über eine endliche Anzahl von durch seine
Klasse vorgegebenen Operationen und kann somit auf empfangene Nachrichten
reagieren.
Beschreibung
Eine Klasse beschreibt die abstrakte Struktur eine Menge von Objekten,
deren Attribute und ausführbare Operationen. Ein Objekt kann gleichzeitig
eine Instanz, ein Exemplar mehrerer Klassen sein. Man nennt dies multiple
Klassifikation. Ebenfalls kann ein Objekt nacheinander mehreren Klassen
angehören (dynamische Klassifikation) In der Regel ist ein Objekt jedoch
einer Klasse eindeutig zugeordnet.
Notation
Objekte werden durch Rechtecke visualisiert. Diese beeinhalten den Namen
des Objektes und eventuell zusätzlich den Namen der Klasse des Objektes.
Teilt man das Rechteck in zwei durch eine horizontale Linie getrennte Rechtecke,
können im unteren Teil auch noch die Attribute des Objektes mit aufgeführt
werden.ÿ

|