UML-Klassendiagramm

https://bildung.social/@oerinformatik/

https://oer-informatik.de/uml-klassendiagramm

tl/dr; (ca. 5 min Lesezeit): Grundlagen eines UML-Klassendiagramms: Instanzattribute, Instanzmethoden, Klassenattribute, Klassenmethoden. Erster Teil der Infotext-Serie zu UML-Klassendiagrammen. (Zuletzt geändert am 24.05.2023)

Infotext-Serie zu UML-Klassendiagrammen:

Um komplexe Strukturen schneller erschließen zu können ist es hilfreich, sie auf wesentliche Kernaspekte zu reduzieren und grafisch darzustellen. In der Objektorientierten Programmierung (OOP) hat sich hierfür in Form des UML-Klassendiagramms ein Standard herausgearbeitet. Beim Entwurf, der Analyse, der Dokumentation und beim Testen kann in dieser Weise die statische Struktur von Softwarekomponenten in einem UML-Klassendiagramm erfasst und mit unterschiedlicher Detailtiefe dargestellt werden.

Bestandteile einer Klasse

Klassen stellen Baupläne für Objekte dar. In diesen Bauplänen wird Verhalten und Zustand in einer gemeinsamen Struktur erfasst. Mithilfe dieser Baupläne werden Objekte erstellt als sind identifizierbare konkrete Ausprägungen (Instanzen) dieser Baupläne. Sie verfügen über gespeicherten Zustände (die gleichen Attribute) sowie ein gemeinsames Verhalten (die selben Methoden). Objekte einer Klasse unterscheiden sich nur im Zustand (den Attributwerten), nicht im Verhalten.

Alle Konten haben gleiche Eigenschaften (z.B. einen Kontostand, eine IBAN) und dasselbe Verhalten (man kann auf sie einzahlen und von ihnen auszahlen lassen). Ein UML-Klassendiagramm, das beispielhaft Konten modelliert, sieht wie folgt aus:

Beispiel eines UML-Diagramms für eine Konto-Klasse
Beispiel eines UML-Diagramms für eine Konto-Klasse

In dieser Klasse sind vier unterschiedliche Bestandteile (Member) beschrieben: Attribute, Methoden, Klassenattribute und Klassenmethoden.

(Instanz-)Attribute

in Klassendiagrammen stehen Attribute im mittleren Bereich
in Klassendiagrammen stehen Attribute im mittleren Bereich

Instanzattribute beschreiben die Eigenschaften (den inneren Zustand) des jeweiligen konkreten Objekts. Wenn in der OOP von Attributen die Rede ist, werden in der Regel Instanzattribute gemeint. Jedes Objekt beeinflusst nur die eigenen Eigenschaften. Die Werte der Attribute können für jedes Objekt einer Klasse variieren. Im obigen Beispiel sind iban und kontostand Attribute von Konto.

Attribute werden im UML-Klassendiagramm in der Zelle unterhalb des Klassennamens notiert. Nach dem Namen kann per Doppelpunkt getrennt der Datentyp folgen.

Im Quelltext werden Attribute folgendermaßen deklariert:

Operationen (Methoden)

Operationen beschreiben das gemeinsame Verhalten aller Objekte einer Klasse. Sie nutzen oder verändern in der Regel die Attribute des jeweiligen Objekts.

in Klassendiagrammen stehen Attribute im mittleren Bereich
in Klassendiagrammen stehen Attribute im mittleren Bereich

Klassenattribute (statische Attribute)

Klassenvariable werden im UML-Diagramm unterstrichen notiert.
Klassenvariable werden im UML-Diagramm unterstrichen notiert.

Klassenattribute haben für jedes Objekt der Klasse denselben Wert. Sie werden häufig mit dem Namen statische Attribute bezeichnet.

Klassenattribute werden oft für Konstanten oder Arrays (Listen) aller Objekte einer Klasse genutzt. In Java werden Sie über das Schlüsselwort static deklariert, im UML-Diagramm durch Unterstreichung gekennzeichnet.

In diesem Beispiel verfügt die Klasse Konto über eine Liste, in der alle Konten gespeichert sind. Diese Liste ist eine Klasseneigenschaft, keine Objekteigenschaft.

Klassenoperationen (statische Methoden):

Klassenvariable werden im UML-Diagramm unterstrichen notiert.
Klassenvariable werden im UML-Diagramm unterstrichen notiert.

Klassenoperationen hängen nicht am Objektzustand, können also auf keine Instanzattribute zugreifen. Sie können nur auf Klassenvariablen zugreifen, benötigen aber zur Ausführung keinerlei Objektinstanz. Wie die Klassenattribute werden sie über das Schlüsselwort static deklariert und im UML-Diagramm durch Unterstreichung gekennzeichnet.

Die Klassenmethode listeStatusAllerKonten() gibt Informationen zu allen Instanzen aus, die in kontenListe gespeichert sind:

Konstruktor

Konstruktoren im UML-Klassendiagramm
Konstruktoren im UML-Klassendiagramm

Eine besondere Operation ist der Konstruktor. Hierbei handelt es sich um eine Methode, die immer aufgerufen wird, sobald ein neues Objekt erstellt wird. Die Methode heißt in vielen Programmiersprachen exakt wie die Klasse und kann als Argument Werte für verpflichtende Argumente entgegennehmen.

Konstruktoren werden im UML-Klassendiagramm mit dem Stereotyp <<create>> notiert. In vielen Programmiersprachen sind sie aber leicht daran zu erkennen, dass sie denselben Namen tragen, wie die Klasse selbst (Beispiel: Konto()). Daher wird die Markierung <<create>> nur dort verwendet, wo anhand des Namens nicht klar ist, dass es sich um einen Konstruktor handelt.

Wird ein Objekt instanziiert, so erkennt man direkt an den Klammern, die der Klassenbezeichnung folgen, dass hier eine Methode (nämlich der Konstruktor) aufgerufen wird:

Im obigen Beispiel erwartet der Konstruktor ein Argument für den Parameter iban:

In Java werden Konstruktoren implementiert wie Methoden mit dem Namen der Klassen (großgeschrieben), die keinen Rückgabewert (auch nicht void) und daher auch kein return-Statement haben:

Häufig werden Konstruktoren auch überladen, um unterschiedliche Parameterkombinationen zur Objekterzeugung zu nutzen. Als überladen bezeichnet man Methoden, die einen identischen Namen, aber unterschiedliche Parameter haben - die somit über eine unterschiedliche Methodensignatur verfügen.

Im Beispiel denkbar wäre, dass man ein Konto mit IBAN oder mit Kontonummer (ktn) und Bankleitzahl (blz) eröffnen kann.

Nächste Bestandteile des UML-Klassendiagramms:

In weiteren Artikel geht es um andere Eigenschaften des UML-Klassendiagramms, als nächstes wird auf Kapselung, Sichtbarkeit und Getter und Setter eingegangen.


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-Klassendiagramm” von oer-informatik.de (H. Stein), Lizenz: CC BY 4.0. Der Artikel wurde unter https://oer-informatik.de/uml-klassendiagramm veröffentlicht, die Quelltexte sind in weiterverarbeitbarer Form verfügbar im Repository unter https://gitlab.com/oer-informatik/uml/umlklasse. Stand: 24.05.2023.

[Kommentare zum Artikel lesen, schreiben] / [Artikel teilen] / [gitlab-Issue zum Artikel schreiben]

Kommentare gerne per Mastodon, Verbesserungsvorschläge per gitlab issue (siehe oben). Beitrag teilen: