Agile Modellierung mit
UML
Loading

3.3 Objektdiagramme

Objektdiagramme modellieren tatsächliche Strukturen auf exemplarischer Basis. Sie sind daher besonders geeignet, statische Strukturen in eigentlich dynamischen objektorientierten Systemen oder spezielle Situationen darzustellen, die etwa als Vor- oder Nachbedingung bei Tests verwendet werden. Die Integration mit der OCL führt zu einer „Logik für Objektdiagramme“, die einen methodisch verbesserten Einsatz von Objektdiagrammen erlaubt.

Objekt
im Objektdiagramm. Ein Objekt ist Instanz einer Klasse und enthält die von ihr festgelegten Attribute. Diese Attribute sind mit einem Wert initialisiert (ggf. noch uninitialisiert). Im Objektdiagramm werden prototypische Objekte verwendet, um exemplarische Situationen zu illustrieren. Zwischen den im Diagramm sichtbaren prototypischen Objekten und den echten Objekten des Systems besteht normalerweise keine 1:1-Beziehung (siehe dazu auch die Diskussion in Abschnitt 4.2, Band 1).
Objektname
erlaubt die eindeutige Benennung des Objekts im Objektdiagramm. Als Objektname wird ein sprechender Name gewählt, der normalerweise im echten System nicht wiederzufinden ist, da dort systemspezifische Objektidentifikatoren verwendet werden.
Attribut
beschreibt eine Zustandskomponente eines Objekts. Ein Attribut im Objektdiagramm ist charakterisiert durch den Attributnamen, den Typ und einen konkreten Wert. Weitere Charakteristika, wie Sichtbarkeit, können dem Attribut angeheftet werden. In abstrakten Objektdiagrammen können statt konkreten Werten auch Variablennamen oder Ausdrücke eingesetzt werden, deren Inhalt im Diagramm „unspezifiziert“ bleibt. Attributtyp oder -wert können auch ausgelassen werden.
Link
ist eine Ausprägung einer Assoziation zwischen zwei Objekten, deren Klassen jeweils an der Assoziation partizipieren. Navigationsrichtung, Assoziations- und Rollennamen können auf dem Link ebenfalls dargestellt werden.
Kompositionslink
ist eine Sonderform des Links, bei dem neben der reinen Verbindung weitere Abhängigkeiten des Teilobjekts vom Ganzen bestehen. Ein Kompositionslink ist eine Ausprägung einer Komposition.
Abbildung 3.21: Begriffsdefinitionen für Objektdiagramme

3.3.1 Einführung in Objektdiagramme

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

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


Abbildung 3.22: Einzelnes Auktionsobjekt

Objektdiagramme sind grundsätzlich konform zu der durch Klassendiagramme vorgegebenen Struktur. Objektdiagramme sind Klassendiagrammen sehr ähnlich, unterscheiden sich aber in einigen substantiellen Punkten und sind daher eine eigenständige Notation. Objekte beinhalten Attribute, die meistens mit konkreten Werten angegeben werden. Es können mehrere Objekte derselben Klasse auftreten, weshalb jedes Objekt einen eigenen (gegebenenfalls anonymen) Namen hat.


Abbildung 3.23: Darstellungsformen des Auktionsobjekts

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.

Ein Link verbindet zwei Objekte. So wie ein Objekt Instanz einer Klasse ist, so ist ein Link Instanz einer Assoziation. Abbildung 3.24 zeigt eine Objektstruktur für eine Auktion, die mindestens die angegebenen drei Personen beinhaltet. Eine davon ist nur als Beobachter zugelassen.


Abbildung 3.24: Objektstruktur einer Auktion

Besitzt eine Assoziation an einem Ende einen Qualifikator, so kann in einem Objektdiagramm der konkrete Qualifikatorwert an jedem Link der Assoziation angegeben werden. Abbildung 3.25 zeigt ein solches Objektdiagramm.


Abbildung 3.25: Qualifizierte Links

3.3.2 Komposition

Die Komposition wird auch im Objektdiagramm durch eine ausgefüllte Raute an einem Assoziationsende dargestellt. Während in Klassendiagrammen eine Klasse in mehreren Kompositionen vorkommen darf, ist es nicht erlaubt, ein Teilobjekt im Objektdiagramm mehreren Kompositionslinks zuzuordnen. Um die Abhängigkeit der Teilobjekte vom Ganzen und den Kompositionscharakter stärker hervorzuheben, kann die alternative Darstellung aus Abbildung 3.26 rechts verwendet werden.


Abbildung 3.26: Alternative Darstellungen einer Komposition

3.3.3 Bedeutung eines Objektdiagramms

Aufgrund der Dynamik von Objektsystemen variiert die Anzahl der Objekte in einem System ständig. Außerdem können Objektstrukturen ihre Links dynamisch verändern. Dadurch können unbeschränkt viele Variationen von Objektstrukturen entstehen, die normalerweise nicht vollständig dargestellt werden können. Ein Objektdiagramm modelliert daher einen Systemausschnitt mit zeitlich limitierter Gültigkeit, im Extremfall einen zu einem einzigen Zeitpunkt gültigen Snapshot

Wie in Band 1 diskutiert, haben die mit Objektdiagrammen modellierten Strukturen einen prototypischen, musterartigen Charakter. Sie zeigen exemplarisch eine Situation, ohne dass diese Situation notwendigerweise normativen Charakter annimmt. Die im Objektdiagramm dargestellte Situation muss im tatsächlich ablaufenden System nicht auftreten. Sie kann jedoch auch mehr als einmal, zeitlich aufeinanderfolgend oder zur gleichen Zeit auftreten. In jeder der auftretenden Situationen können unterschiedliche oder auch (teilweise) dieselben Objekte beteiligt sein. Objektdiagramme können also im System überlappende Strukturen darstellen. Deshalb ist zwischen der Darstellung eines Objekts im Objektdiagramm und den echten Objekten eines Systems deutlich zu unterscheiden. Die in den Objektdiagrammen dargestellten Objekte werden daher auch als prototypisch bezeichnet.

Die Möglichkeit zu Instantiierung von prototypischen Objekten bildet eine Grundlage für die Einbindung der Objektdiagramme in die OCL-Logik.

3.3.4 Logik der Objektdiagramme

Kernelement der Einbindung der exemplarischen Objektdiagramme in die OCL ist die Möglichkeit, ein Objektdiagramm in einfacher Weise selbst als Aussage über die beschriebenen Objekte zu verstehen. Wie in Band 1 durch eine Transformation von Objektdiagrammen nach OCL beschrieben, sind die benannten Objekte freie Variablen solcher Aussagen, während anonyme Objekte existenzquantifiziert sind. Deshalb sind alle im Objektdiagramm verwendeten Namen in der nutzenden OCL-Bedingung einzuführen.

Der Name eines Objektdiagramms steht für die darin festgestellte Aussage und kann in der OCL frei eingesetzt werden. So kann mit der folgenden Aussage gefordert werden, dass in jeder Auktion, die bereits begonnen hat, eine Willkommensnachricht versandt wurde. Dabei werden die zwei Objektdiagramme aus Abbildung 3.27 verwendet, von denen Welcome1A die Voraussetzung für die Forderung Welcome1B darstellt.


Abbildung 3.27: Objektdiagramme für die Willkommensnachricht

       OCL  
 inv Welcome1:
 forall Auction a, TimingPolicy timePol:
    OD.Welcome1A implies
      exists Message welcome: OD.Welcome1B

Die Aussage lautet: „Wenn Objekte a und timePol existieren und dem Objektdiagramm Welcome1A genügen, dann existiert Objekt welcome und es gelten alle im Objektdiagramm Welcome1B formulierten Eigenschaften“.

Durch das Ersetzen konkreter Werte durch Variablen oder OCL-Ausdrücke können abstrakte Objektdiagramme gebildet werden. Die abstrakten Werte können in eine OCL-Bedingung importiert und dort zur Spezifikation von Eigenschaften genutzt werden. Um zum Beispiel eine Testauktion aufzusetzen, die 100 Personen hat, kann das Objektdiagramm NPersons aus Abbildung 3.28 verwendet werden.

Abbildung 3.28: Auktion mit parametrisiertem Personen-Objekt

 
       OCL  
   
 import Auction test32 inv Test32:
   forall int x in {1..100}: OD.NPersons

Der Beschreibungskomfort der aus OCL und Objektdiagrammen integrierten Notation hat sich gegenüber deutlich der OCL verbessert. Aber die Beschreibungsmächtigkeit entspricht der der ursprünglichen OCL/P. Nur Objektdiagramme sind mächtiger geworden, weil so

  • Alternativen,
  • unerwünschte Situationen
  • Kompositionen und
  • Verallgemeinerungen (Muster)

möglich geworden sind. Dazu werden im Wesentlichen die Logik-Operatoren Disjunktion, Negation, Konjunktion und Quantoren eingesetzt. Damit steigt die Ausdruckskraft von Objektdiagrammen von exemplarischen zu allgemein gültigen Aussagen.


Bernhard Rumpe. Agile Modellierung mit UML. Springer 2012