article

Das Kompositum (engl. Composite) ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung und gehört zu der Kategorie der Strukturmuster (Structural Patterns). Es wird angewendet um Teil-Ganzes-Hierarchien zu repräsentieren, indem Objekte zu Baumstrukturen zusammengefügt werden. Die Grundidee des Kompositionsmusters (Composite-Pattern) ist, in einer abstrakten Klasse sowohl primitive Objekte als auch ihre Behälter zu repräsentieren. Somit können sowohl einzelne Objekte, als auch ihre Kompositionen einheitlich behandelt werden. Das Kompositionsmuster ist eines der so genannten GoF-Muster.

Verwendung


  • Implementierung von Teil-Ganzes-Hierarchien
  • Die Unterschiede zwischen einzelnen und zusammengesetzten Objekten sollen verborgen werden.

Ein klassisches Beispiel für ein Kompositum sind hierarchische Dateisysteme, insbesondere ihre Repräsentation innerhalb von Dateimanagern oder Filebrowsern als Verzeichnisse und Dateien.

Ein modernes Beispiel sind die Klassendefinitionen der grafischen Benutzeroberfläche von Java. Alle Elemente wie Schaltflächen und Textfelder sind Spezialisierungen der Klasse Component. Die Behälter für diese Elemente sind aber ebenfalls Spezialisierungen derselben Klasse. Mit anderen Worten: Alle Standardelemente werden wesentlich durch eine einzige (Kompositum-) Klasse definiert.

UML-Diagramme


Klassendiagramm

Kompositum_Klassen.png

Objektdiagramm

Kompositum_Objekte.png

Bestandteile


Die Komponente definiert als Basisklasse das gemeinsame Verhalten aller Teilnehmer. Sie ist im Allgemeinen abstrakt und zum Beispiel ein Verzeichniseintrag.

Das Blatt repräsentiert ein Einzelobjekt, es besitzt keine Kindobjekte und ist zum Beispiel in einem Dateiverzeichnis eine Datei.

Das Kompositum enthält Komponenten, also weitere Komposita oder auch Blätter, als Kindobjekte und repräsentiert zum Beispiel ein Verzeichnis

Vorteile


  • einheitliche Behandlung von Primitiven und Kompositionen
  • leichte Erweiterbarkeit um neue Blatt- oder Container-Klassen

Nachteile


Ein zu allgemeiner Entwurf erschwert es, Kompositionen auf bestimmte Klassen (und damit zumeist Typen) zu beschränken. Das Typsystem der Programmiersprache bietet dann keine Hilfe mehr, so dass Typüberprüfungen zur Laufzeit nötig werden.

Beispiel


Javas AWT-Klassen sind nach dem Kompositum-Muster gebaut. Da alle von Container erben, können sie jeweils selbst wieder Elemente aufnehmen.

Verwandte Entwurfsmuster


Entwurfsmuster

Composite pattern | Composite (patrón de diseño) | Objet composite | Composite

 

This article is licensed under the GNU Free Documentation License. It uses material from the "Kompositum (Entwurfsmuster)".

Home Pageartsbusinesscomputersgameshealthhospitalshomekids & teensnewsphysiciansrecreationreferenceregionalscienceshoppingsocietysportsworld