Was ist ein Klassendiagramm?
Ein UML Klassendiagramm ist der grundlegende strukturelle Bauplan der objektorientierten Modellierung. Es visualisiert ein Software-System, indem es seine Klassen, deren interne Attribute (Datenfelder), deren Methoden (Funktionen) und die strukturellen Beziehungen zwischen ihnen darstellt. Während Codebasen unübersichtlich und schwer zu analysieren werden können, bietet ein sauberes Klassendiagramm Ingenieuren eine sofortige visuelle Referenz, wie Code-Objekte miteinander interagieren, Verhaltensweisen erben und Daten-Grenzen verwalten.
Mit VPasCode, können Sie detaillierte Klassenlayouts vollständig in reiner Textform entwerfen, wobei die Layout-Engineering-Aufgaben, die Box-Größen und die Zeilenabstände vollständig unseren integrierten Cloud-Engines überlassen werden.
Grundlagen-Syntaxleitfaden: Elemente und Konstrukte
Um hochwertige Klassendiagramme zu erstellen, müssen Sie drei zentrale strukturelle Marker verstehen: die Definition des Klassenkörpers, die Zuweisung von Sichtbarkeitsmodifizierern zu Mitgliedern und die Abbildung von Objektbeziehungen.
1. Klassen und Mitglieder deklarieren
Sie deklarieren ein Standardobjekt-Blueprint mit dem classSchlüsselwort. Innerhalb der abschließenden geschweiften Klammern listen Sie Ihre Felder und Methoden jeweils in separaten Zeilen auf:
class CustomerAccount {
String accountId
String emailAddress
Boolean isActive()
} 
2. Sichtbarkeitsmodifizierer (Zugriffssteuerung)
PlantUML ordnet die Standard-Regeln der objektorientierten Kapselung (public, private, protected und package-private) mithilfe einfacher Textpräfixe direkt vor dem Feld- oder Methodennamen zu:
+Klare öffentliche Zugriffsrechte (von jeder anderen Klasse zugänglich)-Streng private Zugriffsrechte (nur innerhalb dieser spezifischen Klasse zugänglich)#Geschützter Zugriff (innerhalb dieser Klasse und ihrer Unterklassen zugänglich)~Paket-/Interne Zugriffsrechte (nur innerhalb des lokalen Code-Moduls zugänglich)
3. Definieren von Objektbeziehungen
Die Verbindung von Klassen erfordert spezifische Pfeilnotationen, um die strukturelle Abhängigkeit oder Zusammensetzung Ihres Anwendungs-Codes anzuzeigen:
- Vererbung / Verallgemeinerung (Ist-Ein): Verwendet einen offenen Dreieckspfeil, der auf die Elternklasse zeigt:
Unterklasse --|> Elternklasse - Implementierung / Realisierung: Verwendet eine gestrichelte Linie mit einem offenen Dreieck, um die Ausführung einer Schnittstelle anzuzeigen:
KonkreteKlasse ..|> IInterface - Zusammensetzung (strenger Besitz): Verwendet ein festes Diamant-Symbol, um anzuzeigen, dass das Kindobjekt ohne den Elterncontainer nicht existieren kann:
Elternklasse *-- Kindklasse - Aggregation (geteilte Sammlung): Verwendet ein offenes Diamant-Symbol, um eine temporäre Sammlungsbeziehung anzuzeigen:
Abteilung o-- Mitarbeiter
Best Practices für praktische Klassendiagramme
- Trennen Sie Layouts mit abstrakten Klassen: Verwenden Sie die
abstrakte KlasseoderSchnittstelleSchlüsselwörter, um Ihre strukturellen Grenzen visuell von konkreten Datenbankmodellen zu unterscheiden. - Bezeichnen Sie Vielfachheiten früh: Fügen Sie immer numerische Vielfachheiten (wie
"1"oder"0..*") an beiden Enden Ihrer Beziehungspfeile hinzu, um Datenbeschränkungen für Entwickler deutlich zu machen. - Steuerung des vertikalen Abstands: Klassendiagramme können extrem hoch werden. Wenn Ihre Anordnung zu weit vertikal ausgedehnt ist, ersetzen Sie einen Doppelpunkt (
--) durch einen einfachen Strich (-) innerhalb Ihrer Beziehungspfeile, um eine horizontale Nebeneinander-Anordnung zu erzwingen.
Realitätsnahe PlantUML-Klassendiagramm-Beispiele
Beispiel 1: E-Commerce-Domänenmodell (Sichtbarkeit & Kapselung)
Diese Bauplan zeigt Standard-Zugriffsmodifizierer, grundlegende Datenobjekte und einfache Daten-Mehrfachheitszuordnungen zwischen zentralen Online-Einkaufs-Entitäten.
@startuml
class User {
- String userId
- String hashedSecret
+ Boolean verifyLogin(String input)
}
class Order {
+ String orderId
+ Date timestamp
- Double calculateTotal()
}
User "1" --> "0..*" Order : "stellt und besitzt"
@enduml 
Syntax-Aufschlüsselung: Der - Präfix hält sensible Felder wie Anmeldeinformationen streng privat innerhalb des User Klassenblock, während öffentliche Zugriffsfunktionen das + Marker verwenden. Die Verbindungszeichenfolge hebt explizit hervor, dass ein Benutzer null oder mehr Aufträge nahtlos abrufen kann.
Beispiel 2: Erweiterter Zahlungsgateway (Vererbung & Schnittstellen)
Diese umfassende Software-Engineering-Karte zeigt, wie Schnittstellen, Klassenvererbungsschleifen und komplexe Zusammensetzungen innerhalb eines einheitlichen Frameworks organisiert werden können.
@startuml
interface IPaymentProcessor {
+ Boolean authorizeAmount(Double cash)
+ void captureFunds()
}
abstract class BaseGateway {
# String merchantApiKey
# String endpointUrl
+ void logTransaction(String payload)
}
class StripeGateway {
- String stripeToken
+ Boolean authorizeAmount(Double cash)
+ void captureFunds()
}
class PayPalGateway {
- String paypalEmail
+ Boolean authorizeAmount(Double cash)
+ void captureFunds()
}
class ShoppingCart {
- List items
+ void checkout(IPaymentProcessor engine)
}
' Strukturelle Beziehungsdeklarationen
BaseGateway ..|> IPaymentProcessor
StripeGateway --|> BaseGateway
PayPalGateway --|> BaseGateway
ShoppingCart *-- IPaymentProcessor
@enduml 
Syntax-Aufschlüsselung: Der ..|> Notation legt fest, dass die abstrakte Klasse unsere primäre Stamm-Schnittstelle implementiert. Die festen Dreieckslinien (--|>) führen die Kind-Gateways sauber in ihre Basisklasse ein, während das feste Diamant-Symbol (*--) erklärt, dass eine Warenkorb besitzt grundsätzlich seinen Zahlungs-Engine-Processor während des Lebenszyklus einer Sitzung.