Klasse

Das primäre Notationselement der Klassendiagramme ist die Klasse, bestehend aus Abschnitten Klassenname, Attribute und Operationen:

generische Notation für Klassen
generische Notation für Klassen

Klassenname

Der Klassenname ist die einzige Pflichtangabe für ein Klassendiagramm. Im Falle von abstrakten Klassen gibt es zwei Möglichkeiten, dies kenntlich zu machen:

  1. Der Klassenname wird kursiv geschrieben
  2. das Schlüsselwort {abstract} wird in geschweiften Klammern direkt unter den Klassenamen geschrieben.

Falls ein Stereotyp kenntlich gemacht werden soll, steht dessen Schlüsselwort oberhalb des Klassennamens.

Attribute

generell : Klassenattribute werden unterstrichen dargestellt.

Es gilt folgende Schreibweise, wobei optionale Parameter in eckigen Klammern angeben werden:

[Sichtbarkeit] [/] Name [:Typ] [Multiplizität] [=Vorgabewert] [{Eigenschaftswert}]

[Sichtbarkeit]

  • + public (öffentlich) : öffentliche Attribute sind für alle Klassen sichtbar
  • # protected (geschützt) : sichtbar für in der Vererbungshirarchie untergeordnete Klassen
  • private (privat) : sichtbar nur in der Klasse selber
  • ~ package (paket) : sichtbar für Klassen im gleichen Paket

[/]

Der Schrägstrich gibt an, dass das Attribut aus anderen Werten berechnet werden kann und daher keiner separaten Speicherung bedarf.

Name

Der Name ist der einzige nicht-optionale Parameter für Attribute, UML gibt keine Namenskonvention vor.

[:Typ]

Jeder Datentyp kann als Typ angegeben werden, wichtig ist lediglich der Doppelpunkt davor. Damit können atomare Datentypen wie auch definierte Klassen als Datentyp angegeben werden können.

[Multiplizität]

Die Multiplizität wird in eckicgen Klammern angeben nach dem Schema [untere Grenze .. obere Grenze]. Der default-Wert ist [1], übliche Schreibweisen sind z.B. [1..2] (mindestestens 1, maximal 2 Ausprägungen), [1..*] (mindestens 1 Ausprägung) sowie [0..*], was auch als [*] geschrieben werden kann.

[=Vorgabewert]

Der Vorgabewert gibt an, mit welchem Wert das Attribut befüllt wird unmittelbar nach der Initialisierung, der Wert muss demnach auch dem Typ entsprechen. Wenn die Multiplizität größer als 1 ist, werden die Vorgabewerte in geschweiften Klammern angegeben, z.B. {1, 2, 3, 4}.

[{Eigenschaftswert}]

Der Eigenschaftswert spezifiziert besondere Merkmale des Attributs, die beliebig selber definiert werden können. UML gibt einige Ausprägungen vor:

  • {readOnly} – der Wert des Attributs kann nach der Initialisierung nicht verändert werden
  • {subsets } – die zulässigen Attributswerte sind eine Teilmenge von Attributname
  • {union} – Gegenteil von {subsets}, vereinigt alle mit {subsets} spezifizierten Teilmengen
  • {redefines } – das Attribut überschreibt eine Attributsdefinition der Oberklasse, daher nur innerhalb der Vererbung sinnig einsetzbar
  • {ordered} – die Attributswerte müssen sortiert vorliegen und zudem unique sein, dürfen also nicht mehrfach vorkommen
  • {seq} oder auch {sequence}– Attributswerte dürfen mehrfach vorkommen, jedoch müssen sie geordnet sein
  • {unique} – Attributswerte dürfen keine Dupletten haben, müssen einzigartig sein
  • {nonunique} – Attributswerte dürfen mehrfach vorkommen und benötigen keine Ordnung
  • {composite} – das Attribut wird aus seinen einzelnen Werten als Ganzes zusammengesetzt, modelliert eine Kompositionsbeziehung

Operationen

Es gilt folgende Schreibweise, die sich an die Schreibweise für die Attribute anlehnt:
[Sichtbarkeit] [/] Name ([Parameter-Liste]) [:Rückgabetyp] [Multiplizität] [{Eigenschaftswert}]

([Parameter-Liste])

Die Parameter-Liste stellt eine Kommata-getrennte Liste aller Parameter dar nach folgendem Aufbau:
[Übergabemodus] Name :Typ [Multiplizität] [=Vorgabewert] [{Eigenschaft}]

[Übergabemodus] -Der Übergabemodus hat drei mögliche Modi:

  • in – default-Angabe: es ist nur lesender Zugriff auf die Parameter erlaubt
  • out – nur schreibender Zugriff auf die Parameter ist erlaubt
  • inout – sowohl lesender wie auch schreibender Zugriff auf die Parameter ist erlaubt

Name

Innerhalb der Operation muss der Name eindeutig sein, weitere Einschränkungen stellt UML nicht an den Namen.

 

([:Rückgabetyp])

Der Datentyp des Rückgabewertes muss angegeben werden, bei Operationen ohne Rückgabewert wird entsprechend void zurück gegeben, was mit () kenntlich zu machen ist.