Heim

Klassendiagramm

Strukturdiagramme der UML
Klassendiagramm
Komponentendiagramm
Kompositionsstrukturdiagramm
Objektdiagramm
Paketdiagramm
Verteilungsdiagramm
Verhaltensdiagramme der UML
Aktivitätsdiagramm
Anwendungsfalldiagramm
Interaktionsübersichtsdiagramm
Kommunikationsdiagramm
Sequenzdiagramm
Zeitverlaufsdiagramm
Zustandsdiagramm

Ein Klassendiagramm ist in der Informatik eine grafische Darstellung von Klassen sowie der Beziehungen zwischen diesen Klassen. Eine Klasse ist in der Objektorientierung ein abstrakter Oberbegriff für die Beschreibung der gemeinsamen Struktur und des gemeinsamen Verhaltens von Objekten (Klassifizierung). Sie dient dazu Objekte zu abstrahieren. Im Zusammenspiel mit anderen Klassen ermöglichen sie die Modellierung eines abgegrenzten Systems in der Objekt-orientierten Analyse und Entwurf.

Seit den 1990er Jahren werden Klassendiagramme meistens in der Notation der Unified Modeling Language (UML) dargestellt. Das Klassendiagramm ist eine der dreizehn Diagrammarten der UML, einer Modellierungssprache für Software und andere Systeme. Es gehört zu den Strukturdiagrammen.

Inhaltsverzeichnis

Notation in der Unified Modeling Language

Klassen

Klassen werden durch Rechtecke dargestellt, die entweder nur den Namen der Klasse (fett gedruckt) tragen oder zusätzlich auch Attribute, Operationen und Eigenschaften. Dabei werden diese vier Rubriken (engl. compartment) – Klassenname, Attribute, Operationen und Eigenschaften – jeweils durch eine horizontale Linie getrennt. Wenn die Klasse keine Eigenschaften oder Operationen besitzt, kann die unterste horizontale Linie entfallen. Oberhalb des Klassennamens können Schlüsselwörter (engl. keyword) in Guillemets und unterhalb des Klassennamens in geschweiften Klammern zusätzliche Eigenschaften (z. B. {abstrakt}) stehen.

Die Attribute werden wie folgt spezifiziert: [Sichtbarkeit] [/] name [: Typ] [ Multiplizität ] [= Vorgabewert] [{eigenschaftswert*}]. Daraus folgt, dass in der UML ausschließlich der Name eines Attributs angegeben werden muss und zwar eindeutig innerhalb einer Klasse. Klassenattribute werden unterstrichen. Darüber hinaus sind bei Attributsnamen sämtliche Zeichen erlaubt, auch wenn in einigen Programmiersprachen z.B. Umlaute verboten sind.

Operationen werden in ähnlicher Art und Weise spezifiziert: [Sichtbarkeit] name [(Parameterliste)] [: Rückgabetyp] [{eigenschaftswert*}]. Zudem wird die Parameterliste wie folgt aufgebaut: [Übergaberichtung] name : Typ [ Multiplizität ] [= Vorgabewert] [{eigenschaftswert*}]. Die Namensgebung und der Zeichenraum sind hier genauso wie bei den Attributsspezifikationen. Klassenoperationen werden auch hier unterstrichen. Den "Pseudotyp" void gibt es in der UML nicht, daher muss in einem solchen Fall der Rückgabetyp weggelassen werden. Ansonsten können bei Attributen und Operationen sämtliche primitiven Typen sowie selbst definierte Klassen oder Interfaces als Typ bzw. Rückgabetyp verwendet werden.

Die Sichtbarkeit von Operationen und Attributen wird wie folgt gekennzeichnet:

Mögliche Eigenschaften sind:

ordered
die Daten werden geordnet zurück gegeben
redefines <Operationsname> (nur bei Operationen)
diese Operation überschreibt die geerbte Operation <Operationsname>
read-only
auf diese Variable kann nur lesend zugegriffen werden

Die Übergaberichtungen:

in
Der übergebene Parameter wird nur gelesen (Std, wenn nichts angegeben wurde).
out
Der übergebene Parameter wird beschrieben, ohne ihn vorher zu lesen.
inout
Der übergebene Parameter wird gelesen bzw. verarbeitet und beschrieben, z.B. um das Ergebnis zurück zu geben.

Die folgenden Abbildungen zeigen zwei Varianten der grafischen Notation für eine Klasse. Abhängig davon, ob eine Klasse in einem Klassendiagramm für ein Design- oder für ein Analysemodell gezeichnet wird, können mehr oder weniger Details dargestellt werden.

Einfachste Form der Darstellung für eine Klasse
Zusätzliche Darstellung von Attributen



Abstrakte Klassen sind Klassen, von denen keine Instanz angelegt werden kann. Abstrakte Klassen sehen in UML wie normale Klassen aus. Um sie zu unterscheiden, steht unterhalb des Klassennamens das Wort abstract in geschweiften Klammern. Alternativ kann der Klassenname auch kursiv geschrieben werden, wenn dies gut erkennbar ist.

Beispiel einer aktiven Klasse mit zwei Signalempfängern

Eine aktive Klasse wird mit einem doppelten linken und rechten Rand gezeichnet.

Klassenschablone

Manche Programmiersprachen ermöglichen eine Parametrisierung von Klassenschablonen (Class Templates) um Objekte basierend auf diesen Vorlagenparametern zu erzeugen. Die UML bietet dafür die Notation für Template Arguments an. Dabei werden die Vorlagenparameter in einem gestrichelten Rechteck überlappend an die rechte obere Ecke der Klasse eingetragen. Im Beispiel ist eine Klasse „Vector“ mit dem Vorlagenparametertype „int“ und dem Parameternamen „T_VALUE“ eingetragen.


Schnittstellen

Eine Schnittstelle wird ähnlich wie eine Klasse mit einem Rechteck dargestellt, zur Unterscheidung aber mit dem Schlüsselwort interface gekennzeichnet.

Eine Schnittstelle wird mit dem Schlüsselwort <<interface>> markiert
Angebotene Schnittstelle, dargestellt mit einer Schnittstellenrealisierungsbeziehung


Wichtige Beziehungen

Generalisierung

Eine Generalisierung in der UML ist eine gerichtete Beziehung zwischen einer generelleren und einer spezielleren Klasse. Exemplare der spezielleren Klasse sind damit auch Exemplare der generelleren Klasse. Konkret bedeutet dies, dass die speziellere Klasse implizit über alle Merkmale (Struktur- und Verhaltensmerkmale) der generelleren Klasse verfügt – implizit deshalb, weil diese Merkmale in der spezielleren Klasse nicht explizit deklariert werden. Man sagt, dass die speziellere Klasse sie von der generelleren Klasse „erbt“ oder „ableitet“.

Eine Generalisierung wird als durchgezogene Linie zwischen den beiden beteiligten Classifiern dargestellt. Am Ende mit dem generelleren Classifier wird eine geschlossene, nicht ausgefüllte Pfeilspitze gezeichnet.

Assoziation

Eine Assoziation beschreibt eine Beziehung zwischen zwei oder mehr Klassen. An den Enden von Assoziationen sind häufig Multiplizitäten vermerkt. Diese drücken aus, wie viele dieser Objekte in Relation zu den anderen Objekten dieser Assoziation stehen.

Beispiel für eine binäre Assoziation
Beispiel für eine reflexive Assoziation


Komposition und Aggregation

Zwei Beispiele für Komposition und Aggregation

Eine Beziehung zwischen Klassen, die relativ häufig modelliert wird, ist die Beziehung zwischen einem Ganzen und seinen Teilen. Die UML sieht dafür zwei spezielle Assoziationen vor: die Komposition und die Aggregation.

In der grafischen Darstellung einer Komposition dekoriert eine ausgefüllte Raute das Ende, das mit dem Ganzen verbunden ist. Im Fall der Aggregation ist es eine nicht ausgefüllte Raute.

Die Aggregation ist ein Spezialfall der Komposition und bildet den Fall ab, bei dem die Teile ohne das Ganze existieren können. Daher wird sie auch schwache Komposition genannt.

Beispieldiagramm


Siehe auch

Literatur