Übersicht Inhaltsverzeichnis Vorwort 1 Einführung 2 Klassendiagramme 3 Object Constraint Language 4 Objektdiagramme 5 Statecharts 6 Sequenzdiagramme A Sprachdarstellung durch Syntaxklassendiagramme B Java C Die Syntax der UML/P C.1 UML/P-Syntax Übersicht C.2 Klassendiagramme C.3 OCL C.4 Objektdiagramme C.5 Statecharts C.6 Sequenzdiagramme D Anwendungsbeispiel: Internet-basiertes Auktionssystem Literatur |
C.4 ObjektdiagrammeDie syntaktische Darstellung von Objektdiagrammen ist an die Klassendiagramme aus Abschnitt C.2 angelehnt. Beide Diagrammarten bestehen aus einem graphischen Anteil und einem textuellen Anteil, die miteinander verwoben sind. Bei Objektdiagrammen wird zusätzlich die Verzahnung mit OCL-Bedingungen zur Realisierung der „Logik der Objektdiagramme“ beschrieben, die auch eine Erweiterung der Syntax für OCL-Diagramme erfordert. Dieser Abschnitt beschreibt daher zunächst den graphischen Anteil der abstrakten Syntax von Objektdiagrammen, dann den textuellen Anteil und schließlich die Integration mit der OCL. Zur Beschreibung der abstrakten Syntax wird wieder die in Anhang A eingeführte Kombination aus EBNF-Grammatiken und Syntaxklassendiagrammen (SCD) verwendet. Im zweiten Teil des Abschnitts wird die Konformität eines Objektdiagramms mit einem Klassendiagramm diskutiert. C.4.1 Kontextfreie SyntaxObjektdiagramme sind eine weitere Form von UML/P-Diagrammen, die unter dem Nichtterminal ⟨UMLPunit⟩ zusammengefasst sind. In Abbildung C.14 ist der graphische Teil der abstrakten Syntax von Objektdiagrammen dargestellt. Darin werden neben dem Nichtterminal ⟨Objektdiagramm⟩ weitere Sprachelemente zur Darstellung der prototypischen Objekte und Links im Objektdiagramm eingeführt. Ein Vergleich der SCDs aus Abbildung C.14 und Abbildung C.2 zeigt, dass zwischen Klassen- und Objektdiagrammen strukturelle Übereinstimmungen bestehen. ⟨Objekt⟩-Elemente enthalten gegenüber den ⟨Klassen⟩-Elementen zusätzliche Objektnamen, aber keine Methoden und keine Information über die Vererbungsstruktur zwischen Klassen. Attribute werden in Objekt- und Klassendiagrammen tatsächlich gleich dargestellt. Jedoch hat die optionale Definition eines Attributwerts unterschiedliche Bedeutung, weshalb für Objektdiagramme das zusätzliche Nichtterminal ⟨Attributwert⟩ eingeführt wurde. Während im Objektdiagramm ein Attributwert den aktuellen Zustand widerspiegelt, wird die optionale Angabe eines Attributwerts im Klassendiagramm zur Initialisierung des Attributs verwendet. ⟨Link⟩-Elemente enthalten gegenüber den ⟨Assoziation⟩-Elementen keine Kardinalität, dafür aber kann der Qualifikator mit einem echten Wert besetzt sein. Neben den Nichtterminalen ⟨Objekt⟩ und ⟨Link⟩ wurde auch das in Anhang C.3 eingeführte ⟨Invariant⟩ in die Syntax von Objektdiagrammen aufgenommen, die die Verwendung von OCL-Invarianten zur Präzisierung von Attributwerten in einem Objektdiagramm erlaubt. Die in diesem Kapitel vorgestellte konkrete Syntax der Objektdiagramme bietet an zwei Stellen alternative Darstellungen für die gleiche Information an, die in der abstrakten Syntax nicht unterschieden werden. Dazu gehören zum einen Klassenattribute, die im Objektdiagramm unterstrichen oder mit dem Modifikator static dargestellt werden können. Zum anderen kann Komposition durch Links oder durch graphisches Enthalten dargestellt werden. Deshalb haben die beiden Objektdiagramme aus Abbildung 4.11 dieselbe Darstellung in der abstrakten Syntax. Viele der im Syntaxdiagramm aus Abbildung C.14 genutzten Nichtterminale wurden bereits bei Klassendiagrammen beziehungsweise der OCL eingeführt. Im einzelnen sind dies die Nichtterminale:
In Abbildung C.14 werden die Nichtterminale ⟨Diagrammname⟩, ⟨Objektname⟩, ⟨Attributwert⟩ und ⟨LinkQualifikator⟩ neu eingeführt, aber nicht weiter detailliert. Für die Darstellung dieser textuellen Anteile werden deshalb die in Abbildung C.15 gegebenen Produktionen verwendet. Während Objektnamen einfache Namen sind, können Diagrammnamen qualifiziert werden, so dass eine hierarchische Package-Struktur für Diagramme möglich ist. Der optionale Qualifikatorwert bei Links ist entweder ein Ausdruck, der einen konkreten Wert beschreibt, oder ein Attributname, der auf den im Zielobjekt abgelegten Wert hindeutet. Wie bereits bei den Klassendiagrammen wurden in der abstrakten Syntax der Objektdiagramme weder Kommentare noch Merkmale oder Stereotypen explizit aufgenommen. Kommentare lassen sich wieder an alle Nichtterminale von Objektdiagrammen anbringen. Merkmale und Stereotypen können bei den Syntaxelementen ⟨Object⟩, ⟨Link⟩, ⟨Attributwert⟩ und auch bei ⟨Objektdiagramm⟩, also dem ganzen Objektdiagramm, eingesetzt werden. Der Abschnitt 4.1.6 hat bereits an einigen Beispielen gezeigt, wie Merkmale und Stereotypen eingesetzt werden können. Die beiden in Abschnitt 2.4 eingeführten Repräsentationsindikatoren „©“ und „… “ werden auch für Objektdiagramme eingesetzt und charakterisieren ebenfalls die Voll- beziehungsweise Unvollständigkeit der Darstellung eines Modells. Beide Indikatoren wirken nicht auf das Modell selbst und können ähnlich wie Kommentare daher in der abstrakten Syntax vernachlässigt werden. OCL-AnpassungDie Integration der Objektdiagramme mit der OCL manifestiert sich in der abstrakten Syntax an zwei Stellen. Das SCD in Abbildung C.14 zeigt, dass einerseits OCL-Invarianten in Objektdiagrammen verwendet werden können. Andererseits kann mit OD.name ein Objektdiagramm direkt in einem OCL-Ausdruck eingesetzt werden. Für diesen Zweck dient die in Anhang C.3 definierte, aber bis jetzt noch nicht diskutierte Alterative des Nichtterminals ⟨OCLPrimaryC.9⟩:
Sie erlaubt die in diesem Kapitel vielfach gezeigte Einbindung von Objektdiagrammen als OCL-Aussagen.
|
||||||||||||||||||||