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

SchreibweiseErklärung
m...nIntervall inklusive Grenzen
*beliebig viele
nfeste Anzahl
n..*mindestens n
*..nmaximal 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.