Java Reference
In-Depth Information
Objekte
(Gruppen von Objekten) gleich wie einzelne
einfache
oder
primitive
Objekte,
sogenannte Blätter, zu behandeln. Dadurch wird der Aufwand im Client für die Ver-
waltung der resultierenden Baumstruktur verringert.
Die Grundlage des Kompositum-Musters ist die Definition einer abstrakten Klasse
Knoten
, deren Verhalten durch ihre Schnittstelle und ihre Verträge festgelegt wird.
Eine Kompositum-Klasse ist von der abstrakten Klasse
Knoten
abgeleitet. Ein Kom-
positum-Objekt kann auf Grund des Klassendiagramms in Bild 4-20 gleichzeitig meh-
rere Objekte vom Typ
Knoten
aggregieren. An die Stelle einer Referenz auf ein Ob-
jekt der Klasse
Knoten
kann nach dem liskovschen Substitutionsprinzip eine Referenz
auf ein Objekt einer von der Klasse
Knoten
abgeleiteten Klasse treten, wenn der Ver-
trag der Klasse
Knoten
beim Überschreiben eingehalten wird.
Eine Blatt-Klasse ist ebenfalls von der abstrakten Klasse
Knoten
abgeleitet, kann aber
im Gegensatz zu einer Kompositum-Klasse keine Knoten aggregieren. Objekte von
Blatt-Klassen - also Blätter - stellen somit Abschlusselemente einer Baumstruktur dar.
Damit ist es leicht, geschachtelte Objektstrukturen (Bäume) zu bilden.
Ein Baum besteht aus konkreten Objekten und ein Objekt ist ent-
weder eine Instanz einer Kompositum- oder einer Blatt-Klasse.
Das Kompositum-Muster ermöglicht es, eine Baumstruktur von
Objekten aufzubauen.
Die Unterscheidung, ob es sich bei einer Klasse der Baumstruktur um eine Blatt-Klas-
se oder eine Kompositum-Klasse handelt, erfolgt lediglich anhand der Tatsache, ob ein
Objekt dieser Klasse weitere Objekte der Baumstruktur aggregieren kann oder nicht.
Wird eine Nachricht an ein Kompositum versendet, so wird die
Nachricht zum einen lokal für das zusammengesetzte Objekt aus-
geführt und zum anderem an die Kinder weiterdelegiert (
Delega-
tionsprinzip
). Ist der Empfänger hingegen ein Blatt, so wird die
Operation direkt ausgeführt, da das Blatt keine Kinder hat.
4.7.3.1 Klassendiagramm
Das Klassendiagramm in Bild 4-20 zeigt, dass eine Klasse
Blatt
und eine Klasse
Kompositum
von einer abstrakten Klasse
Knoten
abgeleitet sind und dass ein Objekt
der Klasse
Kompositum
mehrere Objekte vom Typ
Knoten
aggregieren kann:
Search WWH ::
Custom Search