Beispiel
classDiagram AbstractClass <|-- Class Class <|-- OtherClass Interface <|.. OtherClass class AbstractClass{ absMethod() float* } <<Abstract>> AbstractClass class Class{ -variable: int = 0 +method(param: int) void } class Interface{ +meth() double } <<Interface>> Interface class OtherClass{ +otherVariable: String -variable: int = 1 +method(param: int) double +meth() double }
Abstrakte Klassen
classDiagram class AbstractClass{ +absMethod() float* } <<Abstract>> AbstractClass
Abstrakte Klassen und abstrakte Methoden werden kursiv geschrieben. Alternativ kommt hinter den Klassennamen {abstract} .
Interfaces
classDiagram class MyInterface{ +absMethod() float } <<Interface>> MyInterface
Interfaces werden mit <<Interface>> vor den Namen gekennzeichnet
Konstruktoren
Konstruktoren werden, sofern sie nicht überladen sind, nicht mit angegeben.
Statische Methoden und Attribute
Statische Methoden und Attribute werden in Klassendiagrammen unterstrichen.
Beziehungen

Kennen der Objekte untereinander

Assoziationen
Einfache Assoziationen

- Die Assoziation hat den Namen “besucht”
- Der Pfeil gibt die Leserichtung vor
- Die Leserichtung wird auch als ausgemaltes Dreieck dargestellt
Multiplizitäten
Multiplizitäten geben an wie viele Objekte der Klassen es geben kann/muss.

Schreibweisen
| Schreibweise | Erklärung |
|---|---|
m...n | Intervall inklusive Grenzen |
* | beliebig viele |
n | feste Anzahl |
n..* | mindestens n |
*..n | maximal n |
Aggregation
Ganzes-Teil-Beziehungen kennzeichnet mit einer Raute auf der Ganzes-Seite.
Sie bedeutet, dass es die Einzelteile auch für sich alleine geben kann

Komposition
Wenn die Teile nicht unabhängig vom Ganzen existieren können, handelt es sich um eine Komposition. Kompositionen werden mit einer ausgefüllten Raute gekennzeichnet.
Die Multiplizität auf der Ganzes-Seite ist immer mindestens 1
Rollen
Man darf zur Verdeutlichung angeben, welche Rolle eine Klasse in einer Assoziation einnimmt.
