UML-Objektdiagramm
https://bildung.social/@oerinformatik/113452747566169909
https://oer-informatik.de/uml-objektdiagramm
tl/dr; (ca. 5 min Lesezeit): In UML Objektdiagramm können Instanzen von Klassen dargestellt werden. Attributwerte werden als Slots oder über Links repräsentiert, Aggregationen und Instanziierungen können ebenso festgehalten werden. Instanzen werden wie Klassen dargestellt, deren Instanzname unterstrichen ist. In diesem Blogpost werden die relativ wenigen Notationsmittel des UML-Objektdiagramms vorgestellt. (Zuletzt geändert am 28.02.2025)
Dieser Text ist ein Teil der Infotext-Serie zu UML-Klassendiagrammen:
Darstellung der Instanziierung
Mit der in den Klassen festgelegten Struktur können Objekte (Instanzen einer Klasse) erstellt werden. Diese Objekte teilen ein Verhalten, festgelegt in den Objektmethoden. Das Verhalten nutzt und verändert den jeweiligen Objektzustand. Der Objektzustand gliedert sich für alle Objekte in der gleichen Struktur, alle Objekte einer Klasse habe die gleichen Attribute. Die Ausprägung des Zustands, also die Attributwerte, sind aber für jedes Objekt individuell. Diese Verknüpfung von geteiltem Verhalten und individuellem Zustand ist der Kern der objektorientierten Programmierung.
Im UML-Objektdiagramm (eine Art Spezialisierung des UML-Klassendiagramms) können auch Objekte und deren individueller Zustand (Attributwerte) dargestellt werden. Wir sehen hier drei Objekte, die unterschiedlich bezeichnet sind: in einem Fall ist nur der Name der Instanz und der Klasse durch Doppelpunkt getrennt genannt (maxKonto), in einem zweiten ist nur der Instanzname verzeichnet(cemKonto) und im dritten Fall ist für ein anonymes Objekt nur der Klassenname gegeben, zu erkennen am führenden Doppelpunkt (:Konto).

Objekte werden in der UML wie Klassen als Rechtecke dargestellt, allerdings werden die Namen- und Klassenbezeichnungen unterstrichen. Die Einfärbung hier dient nur der Unterscheidung, nach UML ist sie nicht nötig. Die drei Instanzen werden durch Aufruf der Konstruktor-Methode der Klasse Konto erzeugt, sie hängen also ab von der Klasse und deren Konstruktor. Im Objektdiagramm kennzeichnet ein Dependency Pfeil diese Abhängigkeit: er zeigt auf den Konstruktor der Klasse und wird mit dem Stereotyp <<instantiate>> markiert.
Attributwerte primitiver Datentypen als Literale
Wenn als Attributwert einfache Datentypen (Zahlen, Text) zugewiesen werden sollen, so können diese als Literal direkt per Zuweisungsoperator notiert werden. Literal nennt man Zeichenfolgen, die Werte (also vor allem Zahlen oder Texte) repräsentieren (also: 123, 3.14, "Hallo", 0b0001, 0xFFFFFF). Der Datentyp muss im Objektdiagramm nicht wiederholt werden, da er bereits im Klassendiagramm angegeben wurde (ist also optional).
Jede Zeile, in der ein Attributwert zugewiesen wird, nennt man im UML-Objektdiagramm einen Slot.

iban, kontostandInCent und zinsatzDie Klasse selbst wird in Objektdiagrammen häufig nicht mit angegeben. Sofern die Datentypen oder die Methoden der Klasse aber relevant sind, kann die zugehörige Klasse auch dargestellt werden.
Komplexe Attribute / Aggregationen
Attributwerte können nicht nur primitive Datentypen sein, die als Literal angegeben werden. Attributwerte können auch Objekte sein. Es liegt dann eine Teil/Ganzes-Beziehung vor - je nach Ausprägung als Aggregation oder Komposition (siehe anderer Artikel).
Es gibt zwei Möglichkeiten, diese im Objektdiagramm darzustellen: man kann dem Wert des Attributs den Namen des Objekts textuell zuweisen (oberes Beispiel): Das Objekt cem ist als Kontoinhaber von cemKonto eingetragen. Bei vielen Querverknüpfungen ist diese textuelle Variante übersichtlicher.

Die zweite grafische Variante ist bei einfachen Strukturen schneller erschließbar: die Zuweisung wird als Link angegeben. Links sind konkrete Ausprägungen von Assoziationen und werden wie diese notiert. Vom Attributeigentümer gehen die Links in Richtung der Attributinstanzen. Der Attributname wird am Link gegenüber des Attributeigentümers notiert - oft vereinfacht es das Lesen, wenn die Navigationsrichtung mit angegeben wird. Lediglich Multiplizitäten werden hier nicht angegeben, da es sich ja um konkrete, existierende Beziehungen handelt (somit die Multiplizität “1” in jedem Fall gegeben ist).

Teil/Ganzes-Beziehungen mit Sammlungen (Aggregation, Komposition)
In obigem Beispiel wurde einem Konto ein Kontoinhaber zugewiesen. Wie wird aber eine Teil-Ganzes-Beziehung (Aggregation) im Objektdiagramm modelliert, wenn wir mehrere Teile in einer Sammlung (z.B. in einem Array oder einer Liste) vorhalten?
Das Ausgangsbeispiel, dass ich im Abschnitt des Klassendiagramms genutzt hatte, sieht so aus: viele Konto sind in einer kontenListe eines Kunden aggregiert:

Im Klassendiagramm weist die Aggregation eine Multiplizität von “0 oder viele” auf Seiten der Konten auf. Anstelle der einen Aggregation mit vielfacher Multiplizität treten mehrere Links, die jeweils als konkrete Ausprägung einer konkreten Aggregation verstanden werden können. Konkret: Wir weisen mehrere Kontoobjekte einem Kunden zu:

Denkbar, aber nicht so übersichtlich, wäre auch hier die zweite Variante: wir weisen die Konto-Objekte per Zuweisung im Slot kontoListe dem Kunde-Objekt zu:

Im UML-Objektdiagramm wird nicht unterschieden, ob das Teil auch ohne das Ganze existiert - sofern diese Unterscheidung erforderlich ist, könnte das Ende des Links entsprechend mit Rauten (ausgefüllt oder nicht) versehen werden. Dies ist im Objektdiagramm aber unüblich.
Big Picture
Alle Notationsmittel und Verbindungen - gemeinsam mit einer Polymorphen Struktur (kontoliste) sind im folgenden Diagramm zusammengefasst:

Links / weitere Quellen
In der UML-Spezifikation zu Objektdiagrammen (Kapitel 9.8.3) finden sich relativ wenige Informationen und Regelungen - was darauf schließen lässt, dass der praktische Einsatz dieser Diagrammform auf sehr einfache Anwendungsfälle begrenzt ist. Hilfreich ist - wie häuftig - noch die Tabelle am Ende der Spezifikation (Anhang B6 ab S. 705 unten).
Hinweis zur Nachnutzung als Open Educational Resource (OER)
Dieser Artikel und seine Texte, Bilder, Grafiken, Code und sonstiger Inhalt sind - sofern nicht anders angegeben - lizenziert unter CC BY 4.0. Nennung gemäß TULLU-Regel bitte wie folgt: “UML-Objektdiagramm” von oer-informatik.de (H. Stein), Lizenz: CC BY 4.0. Der Artikel wurde unter https://oer-informatik.de/uml-objektdiagramm veröffentlicht, die Quelltexte sind in weiterverarbeitbarer Form verfügbar im Repository unter https://gitlab.com/oer-informatik/uml/umlklasse. Stand: 28.02.2025.
[Kommentare zum Artikel lesen, schreiben] / [Artikel teilen] / [gitlab-Issue zum Artikel schreiben]
