Klassendiagramme

Klassendiagramme sind der häufigste UML-Diagrammtyp und werden verwendet, um die statische Struktur eines Systems zu modellieren, indem Klassen, ihre Attribute, Operationen und Beziehungen dargestellt werden.

Klassen erstellen

Mit dem Klassenwerkzeug

Drücken Sie A oder C, um das Klassenwerkzeug zu aktivieren, und klicken Sie dann irgendwo auf das Canvas, um eine neue Klassenbox zu platzieren.

Leeres Canvas mit Klassenwerkzeug

Aufbau der Klassenbox

Eine UML-Klassenbox besteht aus drei Bereichen:

  1. Namensbereich - Enthält den Klassennamen und optionalen Stereotyp
  2. Attributbereich - Listet die Klasseneigenschaften/-felder auf
  3. Operationsbereich - Listet die Klassenmethoden/-funktionen auf

Aufbau der Klassenbox

Klasseneigenschaften

Wählen Sie eine Klasse und verwenden Sie das Inspektorpanel zur Konfiguration der Eigenschaften:

Name

Der Klassenname erscheint fett im oberen Bereich. Konvention ist PascalCase (z.B. CustomerOrder).

Stereotyp

Optionaler Klassifikator, der über dem Klassennamen in Guillemets erscheint:

  • <<interface>> - Für Schnittstellendefinitionen
  • <<abstract>> - Für abstrakte Klassen
  • <<enumeration>> - Für Aufzählungstypen
  • <<entity>> - Für Domänenentitäten
  • Benutzerdefinierte Stereotypen werden ebenfalls unterstützt

Abstrakt

Umschalten, um den Klassennamen kursiv darzustellen, was eine abstrakte Klasse anzeigt.

Klassen-Inspektor

Attribute

Attribute repräsentieren die Daten/Eigenschaften einer Klasse.

Attribute hinzufügen

  1. Wählen Sie die Klasse aus
  2. Suchen Sie im Inspektor den Abschnitt Attribute
  3. Klicken Sie auf die +-Schaltfläche, um ein neues Attribut hinzuzufügen
  4. Geben Sie die Attributdetails ein

Attributsyntax

Attribute folgen diesem Format: Sichtbarkeit Name : Typ

Sichtbarkeitsmodifikatoren:

SymbolBedeutungBeschreibung
+PublicVon überall zugänglich
-PrivateNur innerhalb der Klasse zugänglich
#ProtectedInnerhalb der Klasse und Unterklassen zugänglich
~PackageInnerhalb des gleichen Pakets zugänglich

Beispiele:

  • -id: Int - Private Integer-ID
  • +name: String - Öffentlicher String-Name
  • #createdAt: Date - Geschütztes Datumsfeld
  • ~cache: Map<String, Any> - Paket-privater Cache

Operationen

Operationen repräsentieren das Verhalten/die Methoden einer Klasse.

Operationen hinzufügen

  1. Wählen Sie die Klasse aus
  2. Suchen Sie im Inspektor den Abschnitt Operationen
  3. Klicken Sie auf die +-Schaltfläche, um eine neue Operation hinzuzufügen
  4. Geben Sie die Operationsdetails ein

Operationssyntax

Operationen folgen diesem Format: Sichtbarkeit Name(Parameter) : Rückgabetyp

Beispiele:

  • +getName(): String - Öffentlicher Getter, der String zurückgibt
  • -validate(input: String): Boolean - Private Validierungsmethode
  • +process(data: Data, options: Options): Result - Methode mit mehreren Parametern
  • +save(): void - Methode ohne Rückgabewert

Beziehungen

Drücken Sie R, um das Beziehungswerkzeug zu aktivieren, und ziehen Sie dann von einer Klasse zu einer anderen, um eine Verbindung zu erstellen.

Beziehungstypen

TypLinienstilPfeilAnwendungsfall
AssoziationDurchgezogene LinieOffener PfeilAllgemeine Beziehung
AbhängigkeitGestrichelte LinieOffener Pfeil„Verwendet"-Beziehung
VererbungDurchgezogene LinieHohles Dreieck„Ist-ein"-Beziehung (extends)
RealisierungGestrichelte LinieHohles DreieckSchnittstellenimplementierung
AggregationDurchgezogene LinieHohle Raute„Hat-ein" (schwache Besitzanzeige)
KompositionDurchgezogene LinieGefüllte Raute„Hat-ein" (starke Besitzanzeige)

Klassenbeziehungen

Beziehungen erstellen

  1. Drücken Sie R, um das Beziehungswerkzeug zu aktivieren
  2. Klicken Sie auf die Quellklasse
  3. Ziehen Sie zur Zielklasse
  4. Lassen Sie los, um die Verbindung zu erstellen
  5. Verwenden Sie den Inspektor, um den Beziehungstyp und die Pfeilspitzen zu ändern

Beziehungsbeschriftungen

Doppelklicken Sie auf eine Beziehungslinie, um Beschriftungen hinzuzufügen:

  • Name - Beschreibt die Beziehung (z.B. „verwaltet", „enthält")
  • Multiplizität - Gibt an, wie viele Instanzen (z.B. „1", „0..*", „1..n")
  • Rollennamen - Beschriftungen an jedem Ende, die die Rolle beschreiben

Best Practices

  1. Einfach halten - Versuchen Sie nicht, alles zu modellieren; konzentrieren Sie sich auf Schlüsselklassen
  2. Stereotypen verwenden - Markieren Sie Schnittstellen und abstrakte Klassen deutlich
  3. Schlüsselbeziehungen zeigen - Nicht jede Assoziation muss dargestellt werden
  4. Einheitliche Benennung - PascalCase für Klassen, camelCase für Mitglieder verwenden
  5. Verwandte Klassen gruppieren - Nutzen Sie räumliche Nähe, um logische Gruppierungen zu zeigen