Kompositum

Zweck

Was macht das Kompositum? Was ist sein Grundprinzip? Was ist sein Zweck? Welche Entwurfsprobleme werden damit behandelt?

Günther

Ausarbeitung

Entwurfsproblem:

Klient muss zwischen Blättern und Gruppierungen unterscheiden

Muss sich jedesmal fragen wie er mit dem Objekt umgehen muss

Einheitliche Behandlung von Objekten und Zusammenfassungen von Objekten

Zusammenfassung von Objekten in Baumstrukturen

Klient braucht nicht zwischen Blatt und Knoten (Kompositum) zu unterscheiden

Motivation

Beschreibt ein Beispiel in dem das Kompositum zur Problemlösung verwendet wird.

Günther

Ausarbeitung

Grafische Oberfläche:

Blätter: Buttons, Labels, Scrollbars

Behälter: Panels, Fenster

-> Befehl 'zeichne dich' ist für alle Komponenten vorgeschrieben

-> jede Komponente implementiert diesen Befehl

-> Behälter rufen die 'zeichne dich'-Methode ihrer Kinder auf

Grundidee: Abstrakte Klasse (Komponente)

repräsentiert sowohl Blätter als auch Komposita

deklariert (oder implementiert) alle Operationen die beiden gemeinsam sind

Anwendbarkeit

Beschreibt Situationen, in welchen das Kompositum eingesetzt werden kann. Zeigt Erkennungsmerkmale solcher Situationen auf.

Kuhn

Ausarbeitung

Klient soll Unterschiede zwischen einzelnen & zusammengesetzten Objekten ignorieren können

Teil-Ganzes-Hierarchie (Zimmer ist ein Teil, Haus ist das Ganze) von Objekten sollen repräsentiert werden

Struktur

Grafische Repräsentation der Klassen im Kompositum.

Hammerschmidt

Ausarbeitung

siehe Bild

Teilnehmer

Beschreibt die beim Kompositum beteiligten Klassen und Objekte sowie ihre Zuständigkeiten.

Hammerschmidt

Ausarbeitung

Komponente

deklariert Schnittstelle für die Objekte

implementiert gegebenenfalls Standardverhalten für einige Methoden

kann auch Schnittstelle für Verwaltung von Kindobjekten bereitstellen

Blatt

ist ein primitives Objekt ohne Kinder und implementiert konkrete Methoden

Kompositum

Behälter (Container) für Kindobjekte

implementiert Methoden zur Kinderverwaltung

Klient

- manipuliert die Objekte über die Komponentenschnittstelle

Interaktionen

So arbeiten die Teilnehmer zusammen.

Hammerschmidt

Ausarbeitung

Klient kommuniziert mit Objekten der Kompositionsstruktur über Schnittstelle der

Komponente

ist Empfänger ein Blatt, so direkte Abhandlung

ist Empfänger eine Komposition, so Weiterleitung der Nachricht an Kindobjekte und evtl. Ausführung zusätzlicher Operationen vor oder nach der Weiterleitung

Konsequenzen

Welche Vor- & Nachteile ergeben sich aus der Verwendung des Kompositums.

Kuhn

Vorteile:

primitive Objekte können zu komplexeren zusammengesetzt werden, dies kann

rekursiv wiederholt werden

für Klient besteht kein Unterschied zwischen primitiven und komplexen, zusammengesetzten Objekten (Verbergen von Komplexität) -> vereinfacht Klient

einfach erweiterbar

Nachteil:

kann Entwurf zu allgemein werden lassen

keine Kontrolle über abgeleiteten Klassen bzgl. Einschränkung

Implementierung

Zeigt die Fallen auf, gibt Tips bzw. Techniken zur Java-Implementation.

Kuhn

Ausarbeitung

explizite Referenzen auf Elternobjekt (zwecks Durchschreiten des Baums)

gemeinsame Nutzung von Komponenten (spart Speicherplatz)

Maximierung der Komponentenschnittstelle (verstecken von Blatt- & Kompositionsklassen vor Klienten)

Deklaration von Verwaltungsoperationen für Kindobjekte (zwecks Transparenz -> einheitliche Behandlung aller Komponenten)

Ort des Behälters für enthaltene Komponenten (Abwägung zwischen Speicherverbrauch und einheitlicher Behandlung aller Komponenten)

Ordnung der Kindobjekte

Verbesserung des Laufverhaltens durch Zwischenspeichern (Caching)

Löschen der Komponenten (Wer kümmert sich um das Löschen der Kindobjekte)

Datenstrukturen zum Speichern von Komponenten (anwendungsabhängig)

Verwandte Muster

Zeigt mit welchen Mustern das Kompositum verwendet werden kann und üblicherweise verwendet wird.

Günther

Ausarbeitung

Zuständigkeitskette

Verbindung zwischen Komponente & Elternobjekt

Dekoriermuster

wird oftmals gemeinsam mit Kompositionsmuster verwendet

Fliegengewichtmuster

gemeinsame Nutzung von Komponenten

Iteratormuster

zum Durchlaufen von Komposita

Besuchermuster

Lokalisierung von Operationen, welche sonst über Kompositions- & Blattklassen verteilt würden.

2005-06-15T11:01:43