Hintergrundinformationen
Eine Klasse (engl. class) definiert die Attribute, Operationen
sowie die Semantik für eine Menge von Objekten. Alle Objekte einer
Klasse entsprechen dieser Definition (vgl. /Oest
97/, S. 271). Eine Klasse kann zu anderen Klassen in Beziehungen stehen.
Attribute (engl. attributes) sind benannte Datenelemente
eines Datentyps, die in jedem Objekt einer Klasse gleichermaßen enthalten
sind und von jedem Objekt mit individuellen Werten belegt werden. Attribute
sind untrennbar mit den Objekten verbunden, deren Teil sie sind (vgl. /Oest
97/, S. 267).
Operationen (engl. operations) sind Dienstleistungen eines
Objekts einer Klasse, die von ihm selbst oder von einem anderen Objekt
per Benachrichtigung angefordert werden können, um ein bestimmtes
Verhalten zu bewirken (vgl. /Oest 97/, S.
275).
Das Klassenmodell (engl. class model) beschreibt die statische
Struktur eines Anwendungssystems durch Klassen mit Attributen und Operationen,
die zueinander auf verschiedene Arten in Beziehung stehen können.
Außerdem beinhaltet ein Klassenmodell ein oder mehrere Klassendiagramme,
die diese Klassen und ihre Beziehungen zueinander darstellen. Die folgende
Abbildung zeigt das Klassendiagramm für unser Beispielprojekt in seiner
endgültigen Fassung:
Abbildung: Endgültige Version des Klassendiagramms von JWI
Folgende Arten von Beziehungen sind in der UML 1.1 definiert:
-
Assoziation:
-
Definition: Eine Assoziation beschreibt eine Verbindung zwischen
Klassen. Diese Verbindung ist erforderlich, damit Objekte dieser Klassen
miteinander kommunizieren können. Gewöhnlich besteht eine Assoziation
zwischen zwei verschiedenen Klassen; eine Klasse kann aber auch eine Assoziation
mit sich selbst haben (=> Rekursivität). Assoziationen sind im Regelfall
bidirektional (also ungerichtet), können aber auch unidirektional
(gerichtet) sein. Im letzteren Fall kennt nur die Klasse auf der einen
Seite der Assoziation ihren Partner auf der anderen Seite, aber nicht umgekehrt.
Dagegen kennen sich in der ungerichteten Assoziation die Partner gegenseitig.
-
Notation: Assoziationen werden als Verbindungslinie zwischen den
beteiligten Klassen notiert, an deren Enden Kardinalitäten
(z. B. "0", "1", "1..*", "*") angeben, mit wie vielen Objekten einer in
Beziehung stehenden Klasse ein Objekt assoziiert sein kann. Assoziationen
sollten generell Namen bekommen, die beschreiben, worin oder warum die
Beziehung besteht. Pfeilspitzen beim Namen geben die Richtung an, in der
die Assoziationbezeichnung zu lesen ist. Außerdem kann für jede
Klasse an ihrem Ende der Assoziation noch ein Rollenbezeichner notiert
werden, um zu verdeutlichen, welche Rolle die bezeichnete Klasse in der
Beziehung spielt. Bei einer unidirektionalen Assoziation wird die Verbindungslinie
mit einer Pfeilspitze versehen, die anzeigt, wer wen kennt. Beispielsweise
bedeutet eine solche Assoziation zwischen einer Klasse "Polygon" und einer
Klasse "Punkt", daß ein Polygon zwar die Punkte kennen muß,
die zu ihm gehören, umgekehrt aber ein Punkt nicht unbedingt zu wissen
braucht, zu welchem Polygon er gehört. Hierbei ist die Pfeilspitze
auf Seite der Punktobjekte anzutreffen.
-
Qualifizierende Assoziation:
-
Definition: Bei der qualifizierenden Assoziation erfolgt der Zugriff
auf die Objekte von der einen zur anderen Seite der Assoziation stets über
ein bestimmtes Attribut (der anderen Seite). Zum Beispiel greifen in unserem
Klassendiagramm die Instanzen von "Liefer-Kartei"
bzw. "Wartei-Kartei" immer über die beiden qualifizierenden Attribute
"bnr" und "lfdnr" der Klasse "Bestellposten Kundenbestellung" auf die Instanzen
dieser Klasse zu. Das qualifizierende Attribut ist Teil der Assoziation,
jedoch muß es in der Klasse, auf die darüber zugegriffen wird,
definiert sein. Qualifizierende Attribute können benutzt werden, um
die Kardinalität von Assoziationen zu reduzieren.
-
Notation: Qualifizierende Attribute werden in einem kleinen Rechteck
auf derjenigen Seite der Assoziation dargestellt, die auf die Objekte der
anderen Seite zugreift, im Beispiel also
auf der Seite von "Liefer-Kartei" bzw. "Warte-Kartei".
-
Aggregation
-
Definition: Eine Aggregation ist eine Assoziation, die die Zusammensetzung
eines Objekts aus einer Menge von Einzelteilen (also eine Ganzes-Teile-Hierarchie)
beschreibt. Kennzeichnendes Merkmal von Aggregationen ist, daß das
gesamte Aggregat Aufgaben stellvertretend für seine Teile wahrnimmt.
-
Notation: Aggregationen werden wie Assoziationen als Linie
zwischen den beteiligten Klassen dargestellt. Zusätzlich steht auf
der Seite des Aggregats, also des Ganzen, eine kleine nicht ausgefüllte
Raute.
-
Komposition
-
Definition: Eine Komposition ist eine strenge Form der Aggregation,
bei der die Teile vom Ganzen existenzabhängig sind. Die Kardinalität
einer Komposition kann auf der Seite des Aggregats nur 1 sein.
-
Notation: Kompositionen werden wie Assoziationen notiert, nur daß
die Raute ausgefüllt ist (im Klassendiagramm
beispielsweise zwischen "Kundenbestellung" und "Bestellposten Kundenbestellung").
-
Generalisierung
-
Definition: Unter "Generalisierung" ist die taxonomische Beziehung
zwischen einem allgemeineren und einem spezielleren Element zu verstehen,
wobei das spezielle Element semantisch vollständig konsistent zum
allgemeinen Element ist, jedoch weitere Informationen hinzufügt (vgl.
/UML 97/, UML Notation Guide, S. 67).
Das allgemeine Element kann eine (abstrakte) Oberklasse und das spezielle
Element eine davon abgeleitete Klasse sein. Im Klassendiagramm
von JWI liegen mehrere solcher Beziehungen vor: zwischen "Bestellposten"
und "Bestellposten Kundenbestellung" bzw. "Bestellposten Nachbestellung"
sowie zwischen "Geschäftspartner" und "Kunde" bzw. "Lieferant".
-
Notation: Die Generalisierung wird durch einen Pfeil mit nicht ausgefüllter
Spitze vom speziellen zum allgemeinen Element dargestellt, im Klassendiagramm
also beispielsweise von "Kunde" zu "Geschäftspartner".
Klassenmodelle bilden das Rückgrat fast aller objektorientierten Modellierungstechniken,
so auch der UML. Sie beschreiben die statische Struktur des zu modellierenden
Anwendungssystems durch Klassen mit Attributen und Operationen, die zueinander
Beziehungen haben. Klassendiagramme dienen der visuellen Darstellung des
Klassenmodells, indem sie die Klassen des Anwendungssystems und ihre Beziehungen
zueinander aufzeigen.