Objektorientiertes Software-Engineering Vorlesung VIII Inhalt der Vorlesung Wiederholung Vorlesung VII Factory Method Observer s Übung Vorstellung des (Gruppe Jukebox) Folie 2
Definiert ein Objekt zur Kapselung der Interaktion einer Reihe zusammengehöriger Objekte Präsentation der Gruppe Jukebox Folie 3 - Einleitung (1) Kurzbeschreibung / Zweck = Vermittler Definiert ein Objekt zur Kapselung der Interaktion einer Reihe zusammengehöriger Objekte unterstützt die lose Kopplung, indem eine explizite Referenz mehrerer Objekte untereinander vermieden wird. Dies ermöglicht eine flexible, unabhängige Interaktion der Objekte untereinander Folie 4 Motivation für das Pattern Objektorientiertes Design fördert die Verteilung von Verhalten zwischen unterschiedlichen Objekten Damit ist eine komplexe vielfältige Verknüpfungsstruktur zwischen Objekten möglich, im schlimmsten Fall ist jedes Objekt mit jedem verknüpft. Beispiel: Implementierung von Dialog-Boxen in einer grafischen Benutzeroberfläche mit Buttons, Menüs und Eingabe-Feldern
- Einleitung (2) Beispiel: Eingabefenster des UNIX-Assistenten [G95] Folie 5 - Einleitung (3) Beispiel ac :Client aw :WidgetDirector al :ListBox ab :Button ane :Entry Folie 6
- Einleitung (4) Beispiel - Sequenzdiagramm Colleagues ac :Client aw :WidgetDirector ane :Entry al :ListBox showdialog() WidgetChanged() GetText() calculateentriestoshow() Folie 7 - Einleitung (5) Anwendungsempfehlung in folgenden Fällen: Eine Menge von Objekten kommuniziert in einer genau definierten, aber komplexen Art und Weise miteinander Wiederverwendung eines Objekts ist schwierig, weil es auf viele andere Objekte referenziert und mit diesen kommuniziert Zwischen unterschiedlichen Klassen verteiltes Verhalten soll ohne eine Menge von Unterklassen steuerbar sein Folie 8
- Struktur Definiert eine Schnittstelle, um mit Colleague - Objekten zu kommunizieren Colleague Concrete ConcreteColleague Folie 9 Implementiert kooperierendes Verhalten weiß über die Colleagues Bescheid und arbeitet mit ihnen Jede Colleague-Klasse kennt ihr -Objekt Die Kommunikation mit einer anderen Colleague-Klasse erfolgt indirekt, nämlich über den - Zusammenarbeit Colleagues senden und erhalten Anfragen vom -Objekt Der implementiert das kooperierende Verhalten mit der Koordination der Anfragen zwischen Colleagues - Konsequenzen (1) Folie 10 Beschränkung von Unterklassen Lokalisierung von Verhalten, das ansonsten zwischen unterschiedlichen Objekten verteilt würde Eine Änderung dieses Verhaltens erfordert nur eine Unterklasse des. Die Colleagues können so wie sie sind wiederverwendet werden Entkoppeln von Colleagues Durch lose Kopplung können die - und Colleague- Klassen unabhängig voneinander modifiziert werden
- Konsequenzen (2) Vereinfachung der Objekt-Protokolle 1:n-Beziehungen ( Colleague) statt n:n-beziehungen (Colleagues untereinander) einfacher... zu verstehen zu warten und zu erweitern Abstraktion der Kooperation der Objekte Konzentration darauf, wie die Objekte miteinander interagieren - unabhängig von deren individuellen Verhalten Folie 11 Zentralisierung der Kontrolle Komplexität der Kommunikation wird vom (Gesamt-) System in den verlagert Üblicherweise wird der komplexer als jeder individuelle Colleague Der selbst kann monolithisch und damit sehr schwer überschaubar und wartbar werden - Implementierung Weglassen des abstrakten Wenn die Colleagues nur mit einem arbeiten, kann man sich die Abstrahierung sparen Kommunikation zwischen und Colleagues... ist nötig, wenn ein interessantes Ereignis geschieht; Ideen: Implementierung des als Observer Realisierung einer speziellen Informations-Schnittstelle im, um eine direktere Kommunikation zu den Colleagues zu erreichen; z.b. mit Übergabe einer eigenen Referenz Folie 12
- Anwendungen Beispiele aus [GHJ+95] ET++ und die THINK C-Bibliothek verwenden Direktor - Objekte, welche als en zwischen Widgets fungieren Smalltalk/V for Windows... basiert auf einer -Struktur Das -Pattern wird auch verwendet, um komplexe Updates zu koordinieren Folie 13 Gruppenarbeit: Vorstellung und Diskussion eines (Ziel: 90 Minuten) 07.11.03 Gruppe Galerie : Memento 14.11.03 Gruppe Vokabeltrainer : Factory Method 25.11.03 Gruppe Jukebox : 28.11.03 Gruppe Literaturverwaltung : Decorator 05.12.03 Gruppe Schachmannschaften : Composite Folie 14