Klasse (UML)

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Dieser Artikel oder nachfolgende Abschnitt ist nicht hinreichend mit Belegen (beispielsweise Einzelnachweisen) ausgestattet. Die fraglichen Angaben werden daher möglicherweise demnächst entfernt. Bitte hilf der Wikipedia, indem du die Angaben recherchierst und gute Belege einfügst. Näheres ist eventuell auf der Diskussionsseite oder in der Versionsgeschichte angegeben. Bitte entferne zuletzt diese Warnmarkierung.

Eine Klasse (englisch class) ist ein Modellelement in der Unified Modeling Language (UML), einer Modellierungssprache für Software und andere Systeme. Sie beschreibt eine Menge von Ausprägungen mit gleichen Merkmalen, gleichen Einschränkungen und gleicher Semantik.

Beschreibung[Bearbeiten | Quelltext bearbeiten]

Eine Klasse ist ein Typ. Sie besitzt eine Liste von Merkmalen, vor allem Attribute und Operationen, aber auch Ports und Signalempfänger. Zusätzlich kann sie über eine Liste von inneren Klassen verfügen. Innere Klassen sind Klassen, die im Namensraum der Klasse selbst definiert sind.

Eine Klasse kann eine oder mehrere andere Klassen spezialisieren sowie über Assoziationen und Abhängigkeitsbeziehungen in Beziehung zu Klassen und anderen Modellelementen stehen.

Arten von Klassen[Bearbeiten | Quelltext bearbeiten]

Aktive Klassen[Bearbeiten | Quelltext bearbeiten]

Die UML unterscheidet zwischen aktiven und passiven Klassen. Alle Instanzen von aktiven Klassen sind aktive Objekte, das heißt, Objekte, die ein „Eigenleben führen“. Unmittelbar wenn eine Instanz einer aktiven Klasse angelegt wird, startet ein für die Klasse spezifiziertes Verhalten. Dieses Verhalten läuft weiter, bis es explizit gestoppt oder bis das Objekt zerstört wird. Nur aktive Klassen können Signalempfänger besitzen.

Beispiel einer aktiven Klasse mit zwei Signalempfängern

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

Abstrakte Klassen[Bearbeiten | Quelltext bearbeiten]

Abstrakte Klassen sind Klassen, von denen keine Exemplare angelegt werden können. 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.

Detaillierte Darstellung einer abstrakten Klasse

Verschachtelte Klassen[Bearbeiten | Quelltext bearbeiten]

In der UML ist jede Klasse zugleich ein Namensraum. Damit ist einerseits gewährleistet, dass Attribute und Operationen, die einer Klasse gehören, nur im Bereich dieser Klasse einen eindeutigen Namen haben müssen. Zwei Attribute, die unterschiedlichen Klassen gehören, können durchaus gleich heißen. Andererseits erlaubt das Metamodell der UML dadurch auch, dass eine Klasse so genannte verschachtelte Klassen (engl. nested classes) besitzen darf. Die UML-Spezifikation enthält jedoch keine Angaben, wie verschachtelte Klassen grafisch in einem Klassendiagramm dargestellt werden.

In der Softwareentwicklung, zum Beispiel in der Programmiersprache Java, kennt man das Konzept der inneren Klassen. Verschachtelte Klassen im Sinne der UML entsprechen statischen inneren Klassen in Java.

Notation[Bearbeiten | Quelltext bearbeiten]

Klassen werden in Klassendiagrammen dargestellt. Die folgenden drei Abbildungen zeigen drei Varianten der grafischen Notation für eine Klasse. Abhängig davon, ob eine Klasse in einem Klassendiagramm für ein Design- oder 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
Detaillierte Darstellung einer Klasse

Unterschiede zur UML 1.4[Bearbeiten | Quelltext bearbeiten]

Seit der Version 2.0 der UML können Klassen innere Klassen besitzen.

Im Gegensatz zur UML 1.x gibt es in der UML2 kein Modellelement Attribut mehr. Attribute einer Klasse werden neu als Eigenschaften (engl. property) modelliert. Dieser Ansatz wurde eingeführt, damit das Metamodell der UML2 sowohl Attribute einer Klasse als auch Enden von Assoziationen einheitlich als Eigenschaften modellieren kann.

Neben Eigenschaften und Operationen kann eine Klasse in UML2 neu auch über Ports und Signalempfänger als Merkmal verfügen.