homeSoftwaredesign Softwaredesign: Kompositum Prof. Dr. Uwe Schmidt FH Wedel

Kompositum

weiter

weiter

Kompositum

Klassifizierung
objektbasiertes Strukturmuster
weiter
Zweck
einheitliche Verarbeitung von
Hierarchien
Baumstrukturen
Graphen
rekursiven Datenstrukturen
weiter
Alias
composite
weiter
Motivation
widget Bibliotheken
weiter
Beispiel

in Java: binärer Baum als Kompositum
weiter
Anwendbarkeit
gerichtete Graphen, Bäume
Klienten sollen zusammengesetzte und einfache Objekte nicht unterscheiden können
merke
NICHT: Transformationsalgorithmen
diese müssen die Struktur analysieren
weiter
Struktur
Strukturdiagramm
weiter
Teilnehmer
  Komponente
abstrakt
legt gemeinsame Schnittstelle fest
einschließlich Einfügen, Löschen, Suchen, Selektieren
kann default-Verhalten implementieren
  Blatt
konkret
legt Verhalten einfacher Objekte fest
legt die Struktur der Blätter fest
  Kompositum
konkret
legt die Struktur und das Verhalten der inneren Knoten fest
  Klient
benutzt ausschließlich Referenzvariablen vom Typ Komponente
weiter
Konsequenzen
zusammengesetzte Objekte können beliebig komplex werden
Klienten sehen nur die Schnittstelle, nicht die Komplexität
flexibel:
neue Komponenten, Blätter oder Komposita, können einfach hinzugefügt werden ohne die Klienten zu verändern.
weiter
?
Einfachstes Kompositum: Abstrakte Syntax und Klassendiagramm?
Implementierung
verschiedene Klassen für Blätter
weiter
verschiedene Klassen für Komposita
weiter
Containerklassen für Komposita:
Liste, Menge, Tabelle
weiter
typische Verarbeitungsstrategien für Listen, Mengen, ....
aber im Strukturdiagramm nicht unterscheidbar
weiter
Zugriffspfade
weiter
nur von der Wurzel zu den Blättern:
Navigation nur durch rekursiven Abstieg
Transformation einfach
weiter
explizite Referenz auf Vorgänger: Traversierung flexibler: Iterator
weiter
bei Graphen: mehrere Vorgänger: explizite Verzweigung aufwendiger
Transformationsoperationen aufwendiger
weiter
gemeinsame Nutzung von Knoten: Speicherersparnis
--> Fliegengewicht
weiter
Zustandsänderung von Knoten: Seiteneffekte
weiter
Bei breiter Schnittstelle möglichst viele default-Implementierungen in der abstrakten Klassen realisieren
--> Arbeitsaufwand bei Erweiterungen minimieren
weiter
Aufgabe
Arithmetische Audrücke mit ganzzahliger und Fließkomma-Arithmetik,
mit den üblichen unären und binären arithmetischen Operatoren
und mit Konversion zwischen Ganzzahl- und Fließkomma-Arithmetik
Lösungen
 
in Java Arithmetische Ausdrücke (aus den Unterlagen zur Vorlesung OOP)
weiter
Fallstudie
XML Dokumentenstruktur: Aufgabenbeschreibung
?
Lösung: Abstrakte Syntax und Java-Implementierung
weiter
Bekannte Verwendungen
überall, sowie die Objekte und Komponenten der Objekte beliebig komplex werden können
weiter
verwandte Muster
kann mit Kompositum zusammen verwendet werden
weiter
für Blätter zur Speicherplatzoptimierung
weiter
für die Traversierung der zusammengesetzten Objekte
besser zur Traversierung geeignet als der Iterator, da keine zusätzlichen Objekte für die Verwaltung der Position im Kompositum notwendig sind
für die Traversierung eines Kompositums mit variablen Verarbeitungs-Methoden
weiter

Letzte Änderung: 27.05.2014
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel