-LABORPRAKTIKUMSOMMERSEMESTER 2005 -LaborpraktikumSommersemester 2005 „Umsetzung von Pattern“ Folie 1 Karsten Ameling Anja Rothe Fernstudium Informatik Matrikel 2000 „Umsetzung von Pattern“ Muster: Kompositum Gruppe: Karsten Ameling Anja Rothe Quelle: Gamma, E., Helm, R., Jonson, R., Vlissides, J., „Entwurfsmuster“, Addison Wesley, Bonn, 1996 Zweck -LaborpraktikumSommersemester 2005 „Umsetzung von Pattern“ Kompositum (Composite): - objektbasiertes Strukturmuster Kompositum (Composite) 1. Zweck 2. Motivation 3. Anwendbarkeit 4. Struktur 5. Interaktionen 6. Konsequenzen 7. Implementierung 8. Verwandte Muster Zweck: - Zusammenfügung von Objekten zu Baumstrukturen, um TeilGanzes-Hierarchien zu repräsentieren - ermöglicht es Klienten, sowohl einzelne Objekte als auch Kompositionen von Objekten einheitlich zu behandeln Folie 2 Karsten Ameling Anja Rothe Fernstudium Informatik Matrikel 2000 Motivation -LaborpraktikumSommersemester 2005 „Umsetzung von Pattern“ Beispielszenario: Dateisystem einOrdner Kompositum (Composite) 1. Zweck 2. Motivation 3. Anwendbarkeit 4. Struktur 5. Interaktionen 6. Konsequenzen 7. Implementierung 8. Verwandte Muster eineDatei eineDatei einOrdner eineDatei eineDatei einOrdner eineDatei eineDatei eineDatei Folie 3 Karsten Ameling Anja Rothe Fernstudium Informatik Matrikel 2000 Abb. 1: rekursiv zusammengefügte Objektstruktur Anwendbarkeit -LaborpraktikumSommersemester 2005 „Umsetzung von Pattern“ Kompositum (Composite) 1. Zweck 2. Motivation 3. Anwendbarkeit 4. Struktur 5. Interaktionen 6. Konsequenzen 7. Implementierung 8. Verwandte Muster Folie 4 Karsten Ameling Anja Rothe Fernstudium Informatik Matrikel 2000 Die Verwendung des Kompositionsmusters bietet sich an, wenn - Teil-Ganzes-Hierarchien von Objekten repräsentiert werden sollen - Klienten in der Lage sein sollen, die Unterschiede zwischen zusammengesetzten und einzelnen Objekten zu ignorieren Struktur -LaborpraktikumSommersemester 2005 „Umsetzung von Pattern“ Klient Komponente Operation() FuegeHinzu(Komponente) Entferne(Komponente) GibKindobjekt(int) Kompositum (Composite) 1. Zweck 2. Motivation 3. Anwendbarkeit 4. Struktur 5. Interaktionen 6. Konsequenzen 7. Implementierung 8. Verwandte Muster Blatt Kompositum Operation() Operation() FuegeHinzu(Komponente) Entferne(Komponente) GibKindobjekt(int) Folie 5 Karsten Ameling Anja Rothe Fernstudium Informatik Matrikel 2000 Abb. 2: grundlegende Struktur des Kompositionsmusters kindobjekte für alle g in kindobjekte g.Operation(); Interaktionen -LaborpraktikumSommersemester 2005 „Umsetzung von Pattern“ Kompositum (Composite) 1. Zweck 2. Motivation 3. Anwendbarkeit 4. Struktur 5. Interaktionen 6. Konsequenzen 7. Implementierung 8. Verwandte Muster - Klassenschnittstelle von Komponente zur Interaktion mit Objekten in der Kompositionsstruktur verwendet - Fälle: 1.) Empfänger ist ein Blatt: - Anfrage wird direkt abgehandelt 2.) Empfänger ist ein Kompositum: - Weiterleitung der Anfrage an die Kindobjektkomponenten - ggf. Ausführung zusätzlicher Operationen vor und/oder nach der Weiterleitung Folie 6 Karsten Ameling Anja Rothe Fernstudium Informatik Matrikel 2000 Konsequenzen -LaborpraktikumSommersemester 2005 „Umsetzung von Pattern“ Kompositum (Composite) 1. Zweck 2. Motivation 3. Anwendbarkeit 4. Struktur 5. Interaktionen 6. Konsequenzen 7. Implementierung 8. Verwandte Muster Das Kompositionsmuster + definiert Klassenhierarchien auf Basis von Klassen für primitive und zusammengesetzte Objekte + vereinfacht den Klienten dadurch, dass er Kompositionsstrukturen und einzelne Objekte einheitlich behandeln kann + vereinfacht es, neue Arten von Komponenten hinzuzufügen - kann ihren Entwurf zu allgemein werden lassen Folie 7 Karsten Ameling Anja Rothe Fernstudium Informatik Matrikel 2000 Implementierung (1/3) -LaborpraktikumSommersemester 2005 „Umsetzung von Pattern“ Kompositum (Composite) 1. Zweck 2. Motivation 3. Anwendbarkeit 4. Struktur 5. Interaktionen 6. Konsequenzen 7. Implementierung 8. Verwandte Muster Bei der Implementierung zu bedenkende Punkte: 1.) Explizite Referenz auf das Elternobjekt - Aufrechterhaltung von Referenzen vereinfacht Traversierung und Verwaltung einer Kompositionsstruktur 2.) Gemeinsame Nutzung von Komponenten - zur Senkung der Speicheranforderungen - ggf. Speicherung mehrfacher Elternobjekte durch die Kindobjekte 3.) Maximierung der Komponentenschnittstelle Folie 8 Karsten Ameling Anja Rothe Fernstudium Informatik Matrikel 2000 - Definition möglichst vieler gemeinsamer Operationen der Blattund Kompositionsklassen in der Komponentenklasse - Komponentenklasse bietet Defaultimplementierungen, die von den Blatt- und Kompositionsklassen überschrieben werden Implementierung (2/3) -LaborpraktikumSommersemester 2005 „Umsetzung von Pattern“ Kompositum (Composite) 1. Zweck 2. Motivation 3. Anwendbarkeit 4. Struktur 5. Interaktionen 6. Konsequenzen 7. Implementierung 8. Verwandte Muster 4.) Deklaration von Verwaltungsoperationen für Kindobjekte - Entscheidung für den Ort der Definition nach Abwägen der Vorund Nachteile bzgl. Sicherheit und Transparenz Komponentenklasse + Transparenz - Sicherheit Kompositionsklasse + Sicherheit - Transparenz 5.) Ort des Behälters für enthaltene Komponenten - Einfügen der Behälterreferenz in die Oberklasse (Komponentenklasse) führt zur Verschwendung von Speicherplatz in den Blättern 6.) Ordnung der Kindobjekte Folie 9 Karsten Ameling Anja Rothe Fernstudium Informatik Matrikel 2000 - Entwurf von Zugriffs- und Verwaltungsschnittstellen zur korrekten Verwaltung der Kindobjekt-Reihenfolge erforderlich Implementierung (3/3) -LaborpraktikumSommersemester 2005 „Umsetzung von Pattern“ Kompositum (Composite) 1. Zweck 2. Motivation 3. Anwendbarkeit 4. Struktur 5. Interaktionen 6. Konsequenzen 7. Implementierung 8. Verwandte Muster 7.) Verbessern des Laufzeitverhaltens durch Zwischenspeicherung (Caching) - Zwischenspeicherung von Traversierungs- und Suchinformationen über Kindobjekte in Kompositionsklasse möglich, um Traversierung oder Suche abzukürzen - Definition einer Schnittstelle erforderlich, um bei Änderungen einer Komponente die Invalidierung des Zwischenspeichers ihres Elternobjektes zu erreichen 8.) Löschen der Komponenten - üblicherweise Kompositum für das Löschen seiner Kindobjekte zuständig gemacht, wenn es selbst gelöscht wird 9.) Datenstrukturen zum Speichern von Komponenten Folie 10 Karsten Ameling Anja Rothe Fernstudium Informatik Matrikel 2000 - Vielzahl von Datenstrukturen (z. B. verkettete Listen, Bäume, Arrays, Hash-Tabellen) zum Speichern von Kindobjekten geeignet - Wahl der Datenstruktur von der gewünschten Effizienz abhängig Verwandte Muster -LaborpraktikumSommersemester 2005 „Umsetzung von Pattern“ Kompositum (Composite) 1. Zweck 2. Motivation 3. Anwendbarkeit 4. Struktur 5. Interaktionen 6. Konsequenzen 7. Implementierung 8. Verwandte Muster Bezug zu anderen Entwurfsmustern - Zuständigkeitskette - Dekorierermuster - Fliegengewichtmuster - Iteratormuster - Besuchermuster Folie 11 Karsten Ameling Anja Rothe Fernstudium Informatik Matrikel 2000