Klassendiagramm
Zweck
Klassendiagramme stellen die statische Struktur eines Systems dar. Sie zeigen die Klassen, die Eigenschaften der Klassen (Attribute), das Verhalten (Operationen) der Klassen und die Beziehungen zwischen den Klassen.
Sie sind der zentrale Diagrammtyp der UML und werden in allen Phasen der Softwareentwicklung eingesetzt.
Notation
Klasse
Eine Klasse kann als Rechteck dargestellt werden, das den Klassennamen enthält. Üblicherweise bestehen Klassen aus drei Bereichen; der obere Bereich enthält den Stereotyp, das Paket zu dem die Klasse gehört und den Namen. Im mittleren Bereich werden die Attribute angegeben und im unteren Bereich stehen die Operationen der Klasse. Laut UML-Spezifikation kann die Darstellung einer Klasse zusätzliche Bereiche enthalten.
Sichtbarkeit der Klassenelemente
Die Sichtbarkeit der Klassenelemente wird so dargestellt:
- - privat
- # protected
- + public
Abstrakte Klasse
Der Name einer abstrakten Klasse wird kursiv geschrieben. Alternativ kann die Eigenschaft {abstract} angegeben werden. Abstrakte Klassen dienen der Strukturierung eines Modells. Sie sind nicht instanziierbar.
Parametrisierte Klasse
auch Template oder Schablone genannt. Die parametrisierte Klasse hat in der rechten, oberen Ecke ein das Klassensymbol überlappendes Rechteck, das die Schablonen-Parameter der Klasse enthält. Die Funktion, die den Parameter verwendet wird angegeben. Die Klasse, die den Parameter bindet, wird über eine gestrichelte Linie mit Pfeil an dem Template verbunden. Diese trägt die Bezeichnung bind.
Assoziation
Eine Linie zwischen den Klassen stellt eine Assoziation dar. Eine Assoziation ist eine Beziehung zwischen Klassen. Die Objekte der Klassen kommunizieren über die Assoziationen miteinander. Die Assoziation kann einen Namen haben. Ein Pfeil an dem Assoziationsnamen gibt die Leserichtung des Namens an. An den Assoziationsenden können die Rollen der beteiligten Klassen und die Multiplizität angegeben werden.
Gerichtete Assoziation
Mit einem Pfeil an der Assoziation kann die Navigationsrichtung angegeben werden. Der Pfeil drückt die Zugriffsrichtung der Objekte aus. Objekt A greift auf B zu, B greift nie auf A zu.
Vererbung
auch Generalisierung/Spezialisierung genannt. Vererbungsbeziehungen werden mit einem Pfeil, der auf die Oberklasse zeigt, dargestellt. Die Oberklasse vererbt ihre Eigenschaften an die Unterklassen.
Aggregation
Eine Aggregation drückt eine Teile-Ganzes-Beziehung aus. Das Ganze-Objekt besteht aus Teil-Objekten. Die Raute befindet sich an dem Ende des Ganzen. Die Aggregation ist eine spezielle Art der Assoziation. Da das Ganze die Teile enthält, sollten am Assoziationsende der Teile ein Navigationspfeil stehen.
Komposition
Die Komposition ist auch eine Beziehung, die Teile zu einem Ganzen in Beziehung setzt. Die Teile und das Ganze sind bei dieser Beziehung existenzabhängig; die Teile können nicht ohne das Ganze existieren. Wird das Ganze gelöscht, so beenden auch die Teile ihre Existenz.
Assoziationsklasse
Ist eine Klasse von dem Vorhandensein einer Assoziation zwischen zwei Klassen abhängig, so kann dies durch eine Assoziationsklasse ausgedrückt werden. Die Assoziationsklasse beschreibt Eigenschaften, die der Assoziation zuordenbar sind. Die Assoziationsklasse wird über eine gestrichelte Linie mit der Assoziation, von der sie abhängt, verbunden. Hat die Assoziation einen Namen, dann muss die Assoziationsklasse den selben Namen erhalten. Die Assoziationsklasse ist ein Analysekonzept.
Mehrgliedrige Assoziation
Eine mehrgliedrige Assoziation drückt eine Beziehung zwischen mehr als 2 gleichwertigen Klassen aus. Die Beziehung wird mit einer Raute markiert.
Anwendungsbereich
Klassendiagramme sind der zentrale Diagrammtyp der UML. Sie beschreiben die Klassen eines Systems, ihre Eigenschaften, Operationen und die Beziehungen zwischen den Klassen. Klassendiagramme werden in allen Phasen der Softwareentwicklung eingesetzt.
Beispiel
Die nachfolgende Abbildung zeigt das Klassendiagramm zu dem Mensa-Beispiel. Die "MensaKarte" wird von einer abstrakten "H_Da_Karte" abgeleitet. Das Attribut "ID" der "H_Da_Karte" hat die Sichtbarkeit protected und wird an die "MensaKarte" vererbt. "MensaAutomat" und "Kasse" stehen jeweils über Aggregationen in Beziehung zu den angegebenen Klassen. "Display" und "Kartenleser" sind Teil von zwei Klassen. Da das Beispiel ein Analysemodell darstellt, sind nur Analyseeigenschaften dargestellt.