Klassendiagramme sind der zentrale Bestandteil der UML und auch zahlreicher objektorientierter Methoden. Wie die Klassen ermittelt werden, darüber gibt die UML keine Auskunft; hierfür gibt es andere Techniken, z.B.: CRC-Karten (Abkürzung für "Class, Responsibilty and Collaboration") auf die ich in Punkt 10 - Anhang - auf Seite 21 später kurz eingehen möchte.
Die UML beschreibt lediglich die Notation und die Semantik:
5.1. Notation Klasse und Objekt
Klassen werden durch Rechtecke dargestellt, die entweder nur den Namen der Klasse (fett) oder zusätzlich auch Attribute und Operationen tragen. Klassennamen beginnen mit einem Großbuchstaben. Zum besseren Verständnis hier ein kleines Beispiel: Eine Klasse Kreis würde beispielsweise die Attribute radius und position sowie die Operationen anzeigen(), entfernen (), setPosition(pos) und setRadius(neuerRadius) beinhalten. Das darunterliegende Objekt mit dem Namen: einKreis, welches Exemplar der Klasse ist. Objektenamen werden Unterstrichen.
Metaklasse: Klassen für die Klassenobjekte werden Metaklassen genannt und ähnlich wie eine normale Klasse mit dem Stereotyp notiert. In Smalltalk sind Klassen grundsätzlich Instanzen ihrer Metaklassen. Die Metaklassen sind selbst Instanzen der Klasse MetaClass, die ist allerdings wider Instanz der Klasse MetaClassClass. Klassenoperationen müssen in der UML nicht innerhalb der Metaklasse notiert werden, sie können auch in der Klasse selbst enthalten sein, wobei sie dann unterstrichen werden, um sie von normalen Operationen unterscheiden zu können.
Parametrisiebare Klasse: Bei einer parametrisierbaren Klasse wird keine konkrete Klasse definiert, sondern lediglich eine Schablone (template) zur Erzeugung von Klassen. Bei diesen Schablonen handelt es sich meist um einfache Makros, die hauptsächlich Textersetzung durchführen.
Abstrakte Klasse: Eine abstrakte Klasse ist eine Oberklasse, die selbst keine Objekte instanzieren kann. So kann Vehikel ein abstrakte Klasse sein, von der man selbst kein Objekt haben kann, und Auto, Flugzeug , usw sind konkrete Klassen. Eine abstrakte Klasse ist also eine Verallgemeinerung od. Abstraktion.
5.2. Elemente eines Klassendiagramms (Beziehungselemente)
. Abhängigkeitsbeziehungen: werden dargestellt durch einen gestrichelten Pfeil, wobei der Pfeil von einem abhängigen auf das unabhängige Element zeigt:
Klassen - Objekt Beziehungen werden so dargestellt, daß das Objekt auf seine Klasse zeigt.
. Verfeinerungsbeziehungen: werden dargestellt als gestrichelter Generalisierungspfeil in Richtung auf das "Hauptelement":
. Vererbung: Bei einer Vererbung werden die Eigenschaften und Operationen der Oberklasse an die Unterklassen weitervererbt. Notation:
. Generalisierung- Spezialisierung: Bei der Generalisierung - Spezialisierung werden Eigenschaften hierarchisch gegliedert, das bedeutet, das allgemeine Eigenschaften Oberklassen zugeordnet werden, und spezielle werden Unterklassenzugeteilt. Somit erben die Unterklassen die allgemeinen Eigenschaften der Oberklasse. Der Pfeil zeigt von der Unterklasse zur Oberklasse:
. Assoziation: Werden durch eine Linie zwischen den Beteiligten Klassen dargestellt. Sie stellt eine allgemeine Beziehung zwischen 2 Klassen dar und sind notwendig, damit Objekte miteinander kommunizieren können.
Multiplizität: Die Multiplizität einer Assoziatin gibt an, mit wievielen Objekten der anderen Klasse ein Objekt assoziiert sein kann. Man spricht auch von Kardinalität. Liegt das Minimum bei 0, bedeutet das, daß die Beziehung optional ist. Ein * bedeutet "unbestimmt - od. Joker"- man kann alles dafür einsetzen:
1 0..1 1 n m n 1 *
Es gibt viele weiter Arten der Assoziation wie z.B. Rekursive Assoziation, Attributierte Assoziation, Assoziationszusicherung, Qualifizierte Assoziation, Abgeleitete Assoziation, Mehrgliedrige Assoziation, Gerichtete Assoziation. Im Rahmen dieser Arbeit gehe ich nicht näher auf die einzelnen Arten ein, es würde den Rahmen sprengen. Eine gute Beschreibung gibt es in [Oestereich'98]- ab Seite 259.
. Aggregation: Unter einer Aggregation versteht man die Zusammensetzung eines Objektes aus einer Menge von Einzelteilen. Sie gibt an, daß eine Klasse "Teil-Von" in einer Klasse "Gesamtheit" enthalten ist. (IST-TEIL-VON-Beziehung). Eine Aggregation wird durch eine Linie zwischen 2 Klassen dargestellt, bei der zusätzlich auf der Seite des Aggregats, als des Ganzen (mit der Führungsrolle), eine kleine Raute steht:
. Komposition: Eine Komposition ist eine stärkere Form der Aggregation, für sie gelten die gleichen Regeln. Das bedeutet, daß die Kardinalität auf der Seite des Aggregats nur 1 sein kann (nicht wie oben 0..1). Der Teil des Aggregats ist existenzabhäng und hat also die gleiche Lebensdauer wie das Ganze selbst. Notation:
5.3. Beispiel
Die zu diesem Klassendiagramm in Java programmierten ausprogrammierten Klassen sind im Anhang zu finden.
|