UML Klassendiagramm
UML Klassendiagramm in Miro

UML Klassendiagramm

UML Klassendiagramm in Miro

Beim Bau eines Hauses oder Gebäudes erstellen Architekten und Ingenieure vor Beginn der Arbeiten einen Satz Baupläne, um alle Aspekte des Baus zu visualisieren. Klassendiagramme in der Unified Modeling Language (UML) erfüllen dieselbe Funktion wie Baupläne, jedoch für die Softwareentwicklung.

Genau wie du kein Haus ohne Bauplan bauen würdest, ist es keine gute Idee, ein System ohne ein UML Diagramm während der Initiierung und Aktualisierung zu entwickeln. Klassendiagramme sind Teil einer Serie von UML Diagrammen, die verschiedene Aspekte der Entwicklung visualisieren und alle dieselbe Sprache für eine einfachere Interpretation verwenden.

Betrachte diesen Leitfaden als deinen UML Klassendiagrammn Spickzettel. Lerne die Vorteile ihrer Verwendung für das konzeptionelle Design, wie sie funktionieren und wie man ein UML Klassendiagramm erstellt.

Was ist ein Klassendiagramm in UML?

Klassendiagramme gehören zu mehreren Arten von UML Strukturiagrammen. Strukturiagramme zeigen die statische Struktur eines Systems, anstatt zu zeigen, wie sich ein Objekt im Laufe der Zeit ändert.

Klassendiagramme visualisieren die Klassen eines Systems und die Beziehungen zwischen ihnen.

In der objektorientierten Gestaltung erstellen und arbeiten Klassen mit Objekten. Objekte sind Instanzen von Klassen. Klassen sind also entscheidende Elemente auf höchster Ebene eines Systems. Sie werden während des Designs abgeleitet und werden für die Kommunikation über das Design oder Designänderungen verwendet.

In einem Klassendiagramm sind die Klassennamen gleich den Objektnamen, da der Zweck einer Klasse darin besteht, die Attribute und Operationen für jede Objektinstanz im System zu definieren. Eine Klasse ist ein Bauplan für ein Objekt, und ein Klassendiagramm ist der statische Bauplan des Systems.

In der Softwareentwicklung existieren UML Klassendiagramme nicht isoliert. Diese sind von Anwendungsfalldiagrammen abhängig und eng mit Objekt- und Kommunikationsdiagrammen verknüpft. Zusammen modellieren, konzipieren und dokumentieren alle UML Diagramme die Funktionsweise eines Systems vor, während und nach der Implementierung. Mit Miro hast du auch die Möglichkeit zunächst ein Use Case Diagramm zu erstellen.

Was ist eine Klasse in UML?

Eine Klasse ist ein Modellierungselement, das die Merkmale des Objekts repräsentiert, das sie darstellt, einschließlich ihrer Attribute und Verhaltensweisen.

Nehmen wir die Klasse 'Auto' als Beispiel. 'Auto' hat einen Satz statischer Attribute wie Marke, Modell, Jahr und Farbe. Die Klasse 'Auto' hat auch Methoden (Dinge, die Autos tun können) wie Beschleunigen, Bremsen, Anhalten und Starten. Da ein Objekt eine Instanz der Klasse ist, kann eine solche Objektinstanz beispielsweise 'Subaru, Forester, 2023, dunkelgrün' sein. In diesem Beispiel sind die Attribute dieses Autos Marke, Modell, Jahr und Farbe.

Zweck von UML Klassendiagrammen

Ein UML Klassendiagramm hat zwei Hauptzwecke als statisches Modell eines objektorientierten Systems:

1. Die Klassen und ihre Eigenschaften eines Systems zu visualisieren.

2. Die Beziehungen zwischen den Klassen zu zeigen und zu analysieren.

Abgesehen davon bilden UML Klassendiagramme auch die Grundlage für Komponenten- und Bereitstellungsdiagramme, die die Hardware- und Softwareaspekte eines Systems zeigen.

Vorteile von UML Klassendiagrammen

UML Klassendiagramme sind praktische Modellierungswerkzeuge für den Aufbau einer Softwarearchitektur. Zusammen mit anderen UML Diagrammen visualisieren Entwicklungsteams und Stakeholder*innen verschiedene Ansichten eines Systems. Diese Diagramme helfen uns zu verstehen, wie das System funktioniert, wie es sich verhält und wie seine Teile zueinander stehen.

Das Erstellen von Klassendiagrammen während des Designs erleichtert den Entwicklungsprozess, indem Klassen, ihre Attribute und Methoden klar dargestellt werden. Sie zeigen auch, wie die Klassen zueinander stehen. Die Sichtung eines konzeptuellen Aufbaus eines Systems, bevor Code geschrieben wird, hilft Entwicklungsteams, miteinander und mit anderen Stakeholder*innen zu kommunizieren.

Klassendiagramme unterstützen auch Änderungen am System, indem sie eine schematische Darstellung einer gesamten Anwendung zeigen. Änderungen oder Ergänzungen an einem UML Klassendiagramm bieten einen Überblick über neue Klassen und wie sich die Änderung auf vorhandene Klassen auswirkt.

Schlüsselkomponenten von UML Klassendiagrammen

UML Klassendiagramme enthalten Klassen und ihre Interaktionen. Jede Klasse wird in einem Rechteck mit, von oben nach unten, dem Klassennamen, ihren Attributen und ihren Methoden angezeigt. Nur der Klassenname ist erforderlich. Der Detailgrad bestimmt, ob die Attribute und Methoden angezeigt werden.

Interaktionen in einem UML Klassendiagramm zeigen die Beziehungen zwischen den Klassen mit Linien und Pfeilspitzen. Die Pfeilspitzen haben spezifische Bedeutungen, um zwischen den Arten von Beziehungen zu unterscheiden. Diese Beziehungen umfassen Vererbung sowie bidirektionale und unidirektionale Beziehungen. Klassen können in Pakete von eng verwandten Klassen gruppiert werden.

Notationen und Symbole in UML Klassendiagrammen

Die grundlegende Notation in einem UML Klassendiagramm umfasst die Beschriftungen in den Klassenmitgliedern, ihre Sichtbarkeit (wer darauf zugreifen kann), und eventuelle Pakete. Beim Erstellen eines UML Klassendiagramms sollte die von der Web-App genehmigte Schriftart Open Sans verwendet werden. Im Allgemeinen folgen UML Klassendiagramme Stilkonventionen wie Camel Case, bei dem das zweite und alle folgenden Wörter groß geschrieben werden und keine Leerzeichen zwischen den Wörtern stehen.

Klassen

Ein Klassenname spiegelt den Namen eines Objekts oder einer Entität wider. Der Klassenname steht in der Mitte des oberen Abschnitts, fett und groß geschrieben. Im Modell ist der Abschnitt mit dem Klassennamen der einzige obligatorische Abschnitt in einer Klasse. Die anderen beiden sind optional, abhängig von Ziel und Sicht des Diagramms.

Attribute

Der mittlere Abschnitt des Modells enthält die Attribute, die die statischen Merkmale einer Klasse beschreiben, die auf Objektinstanzen zutreffen, die von dieser Klasse definiert werden. Stellen wir uns vor, wir erstellen ein Klassendiagramm, um den Betrieb eines Geldautomaten zu visualisieren. Die Attribute des Klassenmodells "Debitkarte" sind Kartennummer und Inhaber; jede Instanz hat ihre eigene Nummer und ihren Besitzer.

Methoden (Operationen und Verhalten)

Der dritte Abschnitt des Klassenmodells ist das, was die Klasse "tut". Welche Aktionen kann die Objektinstanz durchführen? In der Klasse "Debitkarte" könnte die Operation so etwas wie "Zugang gewähren" sein. Nun sieht das Klassenmodell so aus:

```

Debitkarte

+Kartennummer : Zahl

+Inhaber : Zeichenkette

+Zugang gewähren

```

Sichtbarkeit

Plus- und Minuszeichen repräsentieren, ob Attribute und Operationen einer Klasse öffentlich (überall im System sichtbar) oder privat (nur innerhalb der Klasse sichtbar) sind. Das Hashtag-Zeichen (#) gibt den geschützten Sichtbarkeitsmodus an.

Paket

Eine Gruppe von Klassen oder anderen Paketen wird als Kasten mit einer Beschriftung visualisiert. Der Paketname steht auf dem Etikett und ist groß geschrieben. Bei Verwendung von Paketen müssen Klassen nicht immer alle drei Abschnitte gleichzeitig anzeigen.

Beziehungsnotationen in UML Klassendiagrammen

UML Klassendiagrammmodelle werden visuell mit Linien, Textnotationen und Multiplizitätszahlen verbunden. Die folgende Liste enthält die grundlegenden Beziehungsnotationen, die benötigt werden, um ein UML Klassendiagramm für dein System zu erstellen.

Alle Beziehungsnotationen, außer Realisierung, beinhalten einen Namen, der neben der Linie und auf der Seite der Klasse geschrieben ist, zu der er gehört. Halte alle Textgrößen ausgeglichen und die Linien ordentlich, um ein leicht lesbare Diagramm zu erstellen.

Assoziation

Eine Assoziation verbindet zwei Klassen in einer beliebigen logischen Verbindung, ist die am häufigsten verwendete Beziehungsnotation und sieht wie eine gerade Linie aus. Assoziationen sind von Natur aus bilateral, was bedeutet, dass beide assoziierten Klassen wissen, dass die andere Klasse existiert. Wenn die Assoziation unilateral ist, hat sie eine einfache Pfeilspitze, die sich von der dreieckigen Pfeilspitze der Vererbung und Realisierung unterscheidet.

N-är bestimmt Assoziationen, die mehr als zwei Klassenmodelle verbinden. Die nächste N-äre Assoziation zu binär ist die ternäre Assoziation. Diese Notationen sind Linien, die mit einem leeren Diamanten an der Verbindung versehen sind.

Aggregation und Komposition

Aggregation und Komposition sind Untermengen der Assoziationsbeziehung.

Die Aggregationsbeziehung verbindet Klassen mit einer geraden Linie und einer hohlen Diamantenform neben der Elternklasse. In der Aggregation existieren die Unterklassen unabhängig von der Elternklasse. Wenn die Elternklasse gelöscht wird, besteht die Unterklassen weiterhin.

Die Komposition ist das Gegenteil. Wenn zwei Klassen mit einer Kompositionsnotation mit einer geraden Linie und einer gefüllten Diamantenform verbunden sind, existieren sie nicht unabhängig. Wenn die Elternklasse gelöscht wird, wird auch die Unterklassen gelöscht.

Reflexive Assoziation

Die reflexive Assoziation ist die einzige unilaterale Assoziation in Klassendiagrammen. Sie besteht aus einer geraden Linie, die neben dem Klassenmodell verläuft. Ihr Zweck ist es, eine Beziehung zwischen einer Instanz einer Klasse und einer anderen Instanz derselben Klasse zu visualisieren.

Vererbung und Generalisierung

Die Notation für die Vererbungs- oder Generalisierungsbeziehung visualisiert eine Beziehung zwischen Klassen, die Eigenschaften erben. Eine Vererbungsbeziehung wird mit einer geraden Linie und einer hohlen Dreiecksform visualisiert, die auf die unabhängige Klasse zeigt.

Abhängigkeit

Notationen für Abhängigkeiten werden mit einer gestuften Linie und einer einfachen Pfeilspitze visualisiert, die die Beziehungsrichtung identifiziert. Wie die Notation für die Vererbung zeigt die Pfeilspitze von der abhängigen Klasse zu ihrer Superklasse. Änderungen, die an der Superklasse vorgenommen werden, führen zu Änderungen an der Unterklasse.

Realisierung

Eine Realisierungsbeziehung verbindet eine Klasse, die das Verhalten definiert oder implementiert, mit einer anderen. Die Modelle in dieser Beziehung werden als Lieferanten- und Kundenlemente oder Superklasse und Unterklasse bezeichnet. Der Lieferant ist die Quelle, und der Kunde ist das spezifizierte Element. Die Notation für Realisierung wird mit einer gestuften Linie und einer hohlen Dreiecksform visualisiert.

Multiplizität

Die Notation für die Multiplizität ist eine Reihe von Zahlen, die am Schnittpunkt einer Beziehungslinie und eines Klassenmodells platziert sind. Die Multiplizität von Instanzen definiert, wie viele Instanzen eines Objekts an einer Beziehung teilnehmen. Die Ziffern zeigen die Anzahl der Instanzen einer Klasse, die mit einer Instanz einer anderen Klasse verknüpft sind. Sie werden wie folgt dargestellt:

- 0..1 = Null oder eins

- 1 = Eins nur

- 0.. = Null oder mehr

- 1..* = Eins oder mehr

- 3 = Drei nur

- 0..5 = Null bis fünf

- 5..15 = Fünf bis fünfzehn

So erstellst du ein UML Klassendiagramm

Es ist jetzt an der Zeit, ein UML Klassendiagramm zu erstellen. Natürlich kannst du immer von Grund auf zeichnen. Wenn du neu darin bist, UML Diagramme zu erstellen, ist es am besten, eine vorgefertigte Vorlage mit allen Modellformen und Notationsoptionen zu verwenden. Miro hat eine UML Klassendiagramm Vorlage, die als Grundlage für jedes UML-Klassendiagramm verwendet werden kann, das du erstellen möchtest.

Mit Miro oder einem anderen Diagramm Tools folge dieser schrittweisen Anleitung zum Erstellen eines benutzerdefinierten Klassendiagramms, um ein System visuell zu konzipieren und zu modellieren.

1. Definiere die Klassen

Um diese Objekte/Klassen zu definieren, schreibe ein Anwendungszenario für dein System und extrahiere die Nomen aus der Aussage. Ein Kunde steckt seine Debitkarte in den Geldautomaten und hebt Bargeld ab. Die fett gedruckten Nomen sind die Objekte und daher auch die Klassen.

Erstelle für jede Klasse ein dreiteiliges Modell und füge die Namen im oberen Abschnitt hinzu. Du kannst auf vordefinierte Klassenformen in Miro über den Diagramm Tab auf der linken Seite zugreifen. Baue die Modelle auf, aber verbinde noch nichts, bis du alle Klassen hast.

2. Beschreibe die Klassenattribute

Füge im zweiten Abschnitt jedes Klassenmodells die Attribute hinzu. Die Attribute des ATM Klassenmodells sind der Standort, die Maschinen-ID und die Bank, die ihn verwaltet. Bisher sieht das ATM-Klassenmodell mit der Attributliste so aus:

plaintext

Copy code

ATM

+location : Adresse

+machineId : Ganzzahl

+managedBy : Zeichenkette

3. Füge die Klassenmethoden (Operationen) hinzu:

Füge im dritten Abschnitt für jede Klasse die Operationen in einer Liste wie die Attribute hinzu. Für die ATM-Klasse könnte eine Operation sein, dass sie die Karte liest, eine Transaktion identifiziert und nach einer PIN fragt. Jetzt sieht das Klassenmodell so aus:

plaintext

Copy code

ATM

+location : Adresse

+machineId : Ganzzahl

+managedBy : Zeichenkette

+readsCard

+identifiesTransaction

#asksForPin

4. Visualisiere die Beziehungen und Multiplizität

Ordne die Klassenmodelle auf deinem Miro Board an, um sie zu verknüpfen und Beziehungen zu visualisieren. Wähle den gewünschten Linientyp aus dem Objektpanel aus und wähle den Linienstil und das Linienende entsprechend der Beziehung aus.

Füge Rollen und Multiplizitätszahlen entlang der Linien hinzu, indem du auf die Schaltfläche +T im Objektpanel klickst. Passe ihre Position und Größe entsprechend an.

5. Update es regelmäßig

UML Klassendiagramme sind keine in Stein gemeißelten Karten - sie sind lebendige Mechanismen, die dir helfen, ein System zu visualisieren, sei es bei der Initiierung, Implementierung oder darüber hinaus. Wenn du ein UML Klassendiagramm mit Miro erstellst, kannst du jederzeit darauf zurückkommen und Änderungen vornehmen, bevor du Code im System änderst.

Starte in Sekunden

Schließe dich den Teams an, die Miro für ihre Arbeit nutzen.
accenture.svgbumble.svgdelloite.svgdocusign.svgcontentful.svgasos.svgpepsico.svghanes.svghewlett packard.svgdropbox.svgmacys.svgliberty mutual.svgtotal.svgwhirlpool.svgubisoft.svgyamaha.svgwp engine.svg
accenture.svgbumble.svgdelloite.svgdocusign.svgcontentful.svgasos.svgpepsico.svghanes.svghewlett packard.svgdropbox.svgmacys.svgliberty mutual.svgtotal.svgwhirlpool.svgubisoft.svgyamaha.svgwp engine.svg