Modellierung mit
UML
Loading

4.1 Einführung in Objektdiagramme

Eine Kurzbeschreibung der wichtigsten Begriffe bei Objektdiagrammen ist in Abbildung 4.1 enthalten. Diese Begriffe werden nachfolgend detaillierter erklärt.

Abbildung 4.2 zeigt ein einfaches Objektdiagramm aus dem Auktionssystem, das nur aus einem Objekt besteht. Dieses Objekt beschreibt eine Strom-Auktion.

Lädt...
Abbildung 4.2: Einzelnes Auktionsobjekt

Objektdiagramme müssen zu der durch Klassendiagramme vorgegebenen Struktur konform sein. Da die Objektdiagramme dieses Kapitels im Wesentlichen aus dem Auktionssystem entnommen sind, sind in Abbildung 4.3 viele für die Objektdiagramme dieses Kapitels wesentlichen Eigenschaften des Auktionssystems in einem Klassendiagramm zusammengefasst.

Lädt...
Abbildung 4.3: Ausschnitt des Auktionssystems

4.1.1 Objekte

Kernelemente eines Objektdiagramms sind die Objekte. Das in Abbildung 4.2 enthaltene Objekt zeigt wesentliche Elemente der Darstellung eines solchen Objekts. Die graphische Repräsentation eines Objekts ist der einer Klasse sehr ähnlich. Im ersten Feld ist der Objektname zusammen mit dem Typ des Objekts enthalten. Der Objektname ist ein frei gewählter, innerhalb des Diagramms eindeutiger Identifikator für dieses Objekt. Er spielt eine ähnliche Rolle, wie der tatsächliche Objektidentifikator von Objekten im realen System, darf aber mit diesem nicht verwechselt werden. Der echte Objektidentifikator ist eine anonyme Entität, die weder im Modell, noch im Programmcode explizit erscheint.

Zur eindeutigen Unterscheidung von Klassen- und Objektdiagrammen dient die Markierung OD für Objektdiagramme rechts oben. Außerdem werden Objektnamen unterstrichen in der Form name:Typ dargestellt. Der Name beginnt mit einem Kleinbuchstaben. Spielt der Name des Objekts keine weitere Rolle, so kann er weggelassen werden. Der Doppelpunkt vor der Typangabe bleibt aber erhalten (siehe Abbildung 4.4(b)). Ist umgekehrt der Typ des Objekts bereits aus dem Kontext bekannt oder aus der Liste der Attribute deduzierbar, so kann stattdessen der Typ weggelassen werden (siehe Abbildung 4.4(c)).1

Lädt...
Abbildung 4.4: Darstellungsformen des Auktionsobjekts

Diese Abbildung zeigt auch, dass dieselben Regeln für die Verwendung von Sichtbarkeitsangaben und anderen Merkmalen für Attribute wie bei Klassendiagrammen gelten. Auch die Attributliste muss nicht vollständig angegeben sein. Dementsprechend werden die beiden in Abschnitt 2.4 eingeführten Repräsentationsindikatoren … und © eingesetzt.

Ist eine Typangabe vorhanden, so beschreibt diese nicht notwendigerweise die Klasse des Objekts. Stattdessen kann das Objekt auch Instanz einer Unterklasse sein. Es handelt sich also um eine echte Typangabe. Deshalb ist auch die Verwendung von abstrakten Klassen und Interfaces als Typdefinition für die Objekte des Objektdiagramms zulässig.

4.1.2 Attribute

Das zweite Feld in einer Objektdarstellung besteht aus einer Liste von Attributen. Dieses Feld ist dem der Klassendiagramme sehr ähnlich. Es können Attribute ausgelassen und Sichtbarkeitsangaben, Merkmale oder Stereotypen zu Attributen hinzugefügt werden. Im Gegensatz zur Attributbeschreibung einer Klasse sind normalerweise auch konkrete Werte für die Attribute angegeben. Ein vollständig, aber ohne Merkmale beschriebenes Attribut besteht damit aus dem Attributtyp, dem Attributnamen und dem Attributwert in der Form Typ name = wert. Ein konkreter Wert kann weggelassen werden, wenn der Inhalt des Attributs zur Darstellung des gewünschten Sachverhaltes keine Rolle spielt oder durch ein anderes Konzept, zum Beispiel eine OCL-Bedingung, beschrieben wird. Der Typ des Attributs kann ebenfalls weggelassen werden, da dieser aus einem Klassendiagramm entnommen werden kann.

Macht es eine Darstellung erforderlich, so können in einem Objekt nicht nur die direkt dem Objekt zugeordneten Attribute, sondern auch Klassenattribute, abgeleitete Attribute und geerbte Attribute explizit aufgelistet werden. Ist der Wert eines Klassenattributs angegeben, so ist dieser in allen dargestellten Objekten dieser Klasse gleich. Abgeleitete Attribute sind normalerweise durch eine Invariante mit anderen Attributen des Objekts verbunden. Derartige Invarianten sind in einem Objektdiagramm zu berücksichtigen.

In einem Objektdiagramm werden keine Vererbungsbeziehungen dargestellt. Stattdessen können die aus Oberklassen geerbten Attribute in der Unterklasse explizit aufgelistet werden. Die Vererbungsstruktur zwischen Klassen wird also in einem Objektdiagramm „expandiert“.

Während Klassendiagramme ein drittes Feld zur Darstellung von Methoden kennen, werden Methoden im Objektdiagramm nicht aufgeführt. Eine Methodenliste existiert also bei Objekten im Objektdiagramm nicht.

4.1.3 Links

Ein Link verbindet zwei Objekte miteinander. So wie ein Objekt Instanz einer Klasse ist, so ist ein Link Instanz einer Assoziation. Deshalb kann es in einem Objektdiagramm mehrere Objekte desselben Typs und mehrere Links derselben Assoziation geben. Abbildung 4.5 zeigt eine Objektstruktur für eine Auktion, die mindestens die angegebenen drei Personen beinhaltet. Eine davon ist nur als Beobachter zugelassen.

Lädt...
Abbildung 4.5: Objektstruktur einer Auktion

Links werden normalerweise mit dem Assoziationsnamen und optional mit weiteren Merkmalen der Assoziation markiert. Insbesondere Rollennamen und die Navigationsrichtung sind bei Links sinnvoll und können aus der Assoziation übernommen werden. Links können wie Assoziationen bidirektional, unidirektional oder ohne explizit angegebene Richtung dargestellt werden.

Ist der Assoziationsname nicht explizit gegeben, so kann wie bei der Assoziation auf Rollennamen zurückgegriffen werden. Ergibt sich die Eindeutigkeit der Assoziation bereits aus den miteinander verbundenen Assoziationsenden, so kann der Link ohne Namen bleiben und dennoch eindeutig zugeordnet werden. In diesem Fall müssen aber die Typen beider an einem Link beteiligten Objekte gegeben sein.

Links von abgeleiteten Assoziationen werden wie die normaler Assoziationen dargestellt. Die Invariante zur Charakterisierung einer abgeleiteten Assoziation ist allerdings im Objektdiagramm zu beachten, um ein gültiges Objektdiagramm zu erhalten.

Das Assoziationsmerkmal {frozen}, das zum Beispiel bei den Assoziationen zu den Nachrichtenlisten in Abbildung 2.11 verwendet wurde, kann auch in Objektdiagrammen an Links angelegt werden. Es zeigt, dass der Link bereits angelegt ist und während der Lebenszeit der beiden Objekte nicht mehr verändert werden darf.

Zwei in einem Diagramm dargestellte prototypische Objekte stellen verschiedene Objekte des Systems dar. Dies gilt auch dann, wenn beide Objekte denselben Typ haben und nicht durch ihren Namen oder ihre Attributwerte unterschieden werden können. Abbildung 4.6 zeigt ein Objektdiagramm mit sieben verschiedenen anonymen Personen-Objekten, die alle an der Auktion kupfer913 teilnehmen. Dieses Gleichbesetzungstabu gilt in derselben Form für Links.

Lädt...
Abbildung 4.6: Mehrere anonyme Objekte

Der Detaillierungsgrad der Darstellung eines Objekts ist dem Modellierer überlassen. Das Beispiel 4.6 zeigt, dass auch die Objekte desselben Typs mit unterschiedlich detailliertem Informationsgehalt dargestellt werden können.

Natürlich ist es analog zum Klassendiagramm möglich, Objekte und Links mit aussagekräftigen Icons darzustellen. Auch in Objektdiagrammen kann durch geeigneten Einsatz von Icons die Lesbarkeit erhöht werden.

4.1.4 Qualifizierte Links

Eine Assoziation kann an einem Ende einen Qualifikator besitzen, der benutzt wird, um eine eindeutige Selektion eines Zielobjekts aus einer Menge von Objekten zu ermöglichen. In einem Objektdiagramm kann der konkrete Qualifikatorwert an jedem Link einer solchen Assoziation angegeben werden. Abbildung 4.7 zeigt ein Objektdiagramm mit mehreren Auktionen, die ausgehend von dem Singleton der Klasse AllData qualifiziert erreicht werden können.

Lädt...
Abbildung 4.7: Qualifizierte Links

Die Qualifikatoren im Beispiel sind in allen Fällen identisch mit einem Attribut des Zielobjekts, das das Zielobjekt eindeutig identifiziert. Ist dieses Attribut im Objekt angegeben, so ist der Qualifikatorwert eine redundante Information. In diesen Fällen kann der Qualifikator auch weggelassen werden, beziehungsweise wie in Abbildung 4.8, statt einen konkreten Qualifikatorwert anzugeben, auf das qualifizierende Attribut hingewiesen werden.

Lädt...
Abbildung 4.8: Alternative Darstellung von qualifizierten Links

Hat eine Assoziation das Assoziationsmerkmal {ordered}, so gilt diese Assoziation ebenfalls als qualifiziert. In diesem Fall stehen als Qualifikatorwerte ein Intervall von ganzen Zahlen zur Verfügung. Abbildung 4.9 zeigt eine Sammlung aus Nachrichtenobjekten, die einer Auktion zugeordnet sind. Der höchste angegebene Qualifikator ist dabei 14, so dass aufgrund der Vollständigkeit des als Qualifikatorbereich zur Verfügung stehenden Intervalls mindestens 15 Nachrichten mit den Indizes 0 bis 14 zur Verfügung stehen müssen. In diesem Fall wurden die 12 abgegebenen Gebote nicht angegeben.

Lädt...
Abbildung 4.9: Links einer geordneten Assoziation

4.1.5 Komposition

Die Komposition wird auch im Objektdiagramm durch eine ausgefüllte Raute an einem Assoziationsende dargestellt. Dadurch wird eine starke Abhängigkeit der Teilobjekte vom Ganzen ausgedrückt. Beispiel 4.5 hat bereits gezeigt, dass diese Rauten in analoger Weise bei Links übernommen werden können. Die anonymen, mit :BiddingPolicy und :TimingPolicy markierten Objekte sind in Wirklichkeit Objekte, die die jeweiligen Interfaces implementieren. Diese werden gemeinsam mit dem Auktionsobjekt erzeugt und an dessen Lebensende obsolet. Bezüglich der Austauschbarkeit und des Lebenszyklus von abhängigen Objekten in einem Kompositum gibt es jedoch erhebliche Interpretationsunterschiede, die in Abschnitt 2.3.4 bereits diskutiert wurden.

Lädt...
Abbildung 4.10: Teilobjekte in einer Komposition

Während in Klassendiagrammen eine Klasse in mehreren Kompositionen vorkommen darf, ist es nicht erlaubt, ein Teilobjekt im Objektdiagramm mehreren Kompositionslinks zuzuordnen. Die beiden gültigen Diagramme (a) und (b) sowie die illegalen Diagramme (c) und (d) in Abbildung 4.10 demonstrieren dies. Einzige Ausnahme ist eine hierarchisch geschachtelte Komposition, bei der ein Teilobjekt gleichzeitig zum untergeordneten Kompositum und dadurch indirekt zum übergeordneten Kompositum gehört.

Um die Abhängigkeit der Teilobjekte vom Ganzen und den Kompositionscharakter stärker hervorzuheben, gibt es wie auch bei den Klassen eine alternative Darstellungsform, die graphisches Enthaltensein als Ausdrucksform verwendet. Abbildung 4.11 zeigt zwei Objektdiagramme, die einen Ausschnitt des Objektdiagramms aus Abbildung 4.5 in den beiden semantisch äquivalenten Formen darstellen.

Lädt...
Abbildung 4.11: Alternative Darstellungen einer Komposition

In einer Komposition werden Teilobjekte häufig anonym angegeben oder mit einem Namen belegt, der identisch mit dem Attributnamen des enthaltenden Objekts ist. In den Objektdiagrammen in Abbildung 4.11 wurden die Objektnamen bidPol und timePol in dieser Absicht gewählt.

Die Teilobjekte einer Komposition können ihrerseits Attribute beinhalten, Links zu anderen Objekten (auch zu Objekten außerhalb des Kompositums) besitzen und selbst weitere Teilobjekte beinhalten. So kann eine komplexe Kompositionsstruktur entstehen, deren Tiefe allerdings nicht zu weit geschachtelt sein sollte, da sonst die Übersichtlichkeit der Darstellung verloren geht. Abbildung 4.12 zeigt eine Objektkomposition mit drei Kompositionsschichten.

Lädt...
Abbildung 4.12: Komposition mit drei Ebenen

4.1.6 Merkmale und Stereotypen

Im Klassendiagramm werden Merkmale und Stereotypen eingesetzt, um die Bedeutung des markierten Elements zu spezialisieren oder seine Verwendung zu präzisieren. Diese Merkmale und Stereotypen können von der Klasse zu ihren Objekten und von Assoziationen zu ihren Links übertragen werden. Dadurch kann auch außerhalb des Klassendiagramms auf spezielle Eigenschaften der dargestellten Objekte beziehungsweise Links hingewiesen werden. Dies bietet sich zum Beispiel für {frozen} an, um anzuzeigen, dass sich der Link während der Lebenszeit der beiden beteiligten Objekte nicht verändert. Abbildung 4.13 zeigt die Wiederholung des Merkmals {frozen} für die beiden Policy-Objekte.

Lädt...
Abbildung 4.13: Merkmale in Objektdiagrammen

Allerdings können Merkmale auch direkt an Elemente des Objektdiagramms vergeben werden, ohne dass diese im Klassendiagramm gültig sind. Das Merkmal {addOnly} für Assoziationen hat die Wirkung, dass einmal etablierte Links ebenfalls nicht mehr verändert werden. Für ihre Links kann also das Merkmal {frozen} vergeben werden, ohne dass die Assoziation selbst dieses Merkmal besitzt (vergleiche Objektdiagramm 4.13 und Klassendiagramm 4.3).

Prototypische Objekte eines Objektdiagramms können auch mit Merkmalen markiert werden, die wie in Abschnitt 2.5.3 beschrieben zur Projektverfolgung gehören. Darunter fallen zum Beispiel Merkmale für Ersteller und Erstelldatum. Abbildung 4.14 zeigt ein Testobjekt des Auktionssystems, das bei der Testdurchführung auf wenigstens die drei weiteren angegebenen Objekte zurückgreift.

Lädt...
Abbildung 4.14: Merkmale in Objektdiagrammen


Bernhard Rumpe. Agile Modellierung mit UML. Springer 2012