Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II :...

45
Morad Harrach SS 05 PP_XP Programmierpraktikum Programmierpraktikum eXtreme eXtreme Programming 2005 Programming 2005 Thema: Thema: Pattern II : “Anpassbare Pattern II : “Anpassbare Kommunikation“ Kommunikation“

Transcript of Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II :...

Page 1: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach SS 05 PP_XP

ProgrammierpraktikuProgrammierpraktikumm

eXtreme eXtreme Programming 2005Programming 2005

Thema: Thema:

Pattern II : “Anpassbare Pattern II : “Anpassbare Kommunikation“Kommunikation“

Page 2: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 2SS 05 PP_XP

Gliederung Gliederung

1.MVC (1.MVC (MModel odel VView iew CController) - Patternontroller) - Pattern

2.Observer (Beobachter) – Pattern2.Observer (Beobachter) – Pattern

3.Command (Befehls) – Pattern 3.Command (Befehls) – Pattern

4.Mediator (Vermittler) – Pattern 4.Mediator (Vermittler) – Pattern

5.Chain of Responsibility 5.Chain of Responsibility (Zuständigkeitskette)-Pattern (Zuständigkeitskette)-Pattern

Page 3: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 3SS 05 PP_XP

1.MVC – Pattern 1.MVC – Pattern StrukturStruktur

Das Model-View-Controller-Muster (MVC)Das Model-View-Controller-Muster (MVC)

unterteilt eine interaktive Anwendung in drei Komponentenunterteilt eine interaktive Anwendung in drei Komponenten

- - ModelModel: : enthält die dauerhaften Daten einer Anwendung. enthält die dauerhaften Daten einer Anwendung. Verwaltet DatenVerwaltet Daten unabhängig von der Präsentation unabhängig von der Präsentation

- View: - View: die Darstellungsschicht die Darstellungsschicht präsentiert die Datenpräsentiert die Daten. . Beinhaltet die visuellen Elemente (Fenster, Buttons, Beinhaltet die visuellen Elemente (Fenster, Buttons, HTML, etc.). HTML, etc.).

- Control:- Control: die Steuerungsschicht realisiert die eigentliche die Steuerungsschicht realisiert die eigentliche Arbeit. Sie Arbeit. Sie steuert den Ablaufsteuert den Ablauf, ändert Modelldaten, , ändert Modelldaten,

entscheidet, welche View aufgerufen wird. entscheidet, welche View aufgerufen wird.

Page 4: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 4SS 05 PP_XP

1.MVC-Pattern1.MVC-Pattern

ProblemeProbleme bei der Anwendung des Musters: bei der Anwendung des Musters:

- Dieselbe Information wird in unterschiedlichsten - Dieselbe Information wird in unterschiedlichsten Fenstern auf verschiedene Weise dargestellt, z.B. Fenstern auf verschiedene Weise dargestellt, z.B. Balken-Balken- oder Kuchendiagramme. oder Kuchendiagramme. - Grafische Darstellung und Verhalten der Anwendung - Grafische Darstellung und Verhalten der Anwendung müssen Datenänderungen sofort widerspiegeln. müssen Datenänderungen sofort widerspiegeln.- Unterstützung verschied. Standards für - Unterstützung verschied. Standards für Erscheinungs- Erscheinungs- bild und Bedienmerkmale, ohne das dabei der bild und Bedienmerkmale, ohne das dabei der funktionale funktionale Kern geändert werden muss. Kern geändert werden muss.- Änderungen an der Benutzeroberfläche auch zur - Änderungen an der Benutzeroberfläche auch zur Laufzeit.Laufzeit.

Page 5: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 5SS 05 PP_XP

1.MVC-Pattern 1.MVC-Pattern AbbildungAbbildung

Quelle: http://java.sun.com/blueprints/patterns/MVC-detailed.html

Page 6: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 6SS 05 PP_XP

1.MVC-Pattern 1.MVC-Pattern InteraktionInteraktion

Wenn ein Anwender das Model mit Hilfe der Wenn ein Anwender das Model mit Hilfe der Steuerungs-komponente einer Ansicht Steuerungs-komponente einer Ansicht ändert, sollten alle Views des Models diese ändert, sollten alle Views des Models diese Änderung anzeigen. Änderung anzeigen.

Model benachrichtigt seine Views, sobald Model benachrichtigt seine Views, sobald sich Daten ändern.sich Daten ändern.

Views entnehmen die neuen Daten und Views entnehmen die neuen Daten und passen die an-gezeigte Information an.passen die an-gezeigte Information an.

Page 7: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 7SS 05 PP_XP

1.MVC-Pattern 1.MVC-Pattern AnwendungAnwendung

Verwendung:Verwendung: zur Entwicklung zur Entwicklung Benutzeroberflächen für Benutzeroberflächen für interaktive Anwendungen, z.B. Smalltalk-80-interaktive Anwendungen, z.B. Smalltalk-80-UmgebungUmgebung

Erstellung von Windows-Anwendungen in der Erstellung von Windows-Anwendungen in der Entwicklungs-umgebung von Visual C++Entwicklungs-umgebung von Visual C++

Vorteile:Vorteile: - mehrere Views desselben Modells.- mehrere Views desselben Modells. - austauschbare Views - austauschbare Views - Potential für Frameworks- Potential für Frameworks Nacheile:Nacheile: - größere Komplexität- größere Komplexität - ineffizienter Datenzugriff innerhalb der Views- ineffizienter Datenzugriff innerhalb der Views - etc.- etc.

Page 8: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 8SS 05 PP_XP

2.Observer-Pattern2.Observer-Pattern Zweck:Zweck: Definiere eine 1-zu-n Abhängigkeit zwischen Definiere eine 1-zu-n Abhängigkeit zwischen

Objekten, so dass die Änderung des Zustandes eines Objekten, so dass die Änderung des Zustandes eines Objektes zu einer Aktualisierung aller abhängigen Objektes zu einer Aktualisierung aller abhängigen Objekte führt.Objekte führt.

Problem:Problem: Das unabhängige Objekt soll die Das unabhängige Objekt soll die abhängigen Objekte bzgl. Veränderungen abhängigen Objekte bzgl. Veränderungen benachrichtigen, ohne Annahmen zu treffen, wer und benachrichtigen, ohne Annahmen zu treffen, wer und wie viele dies sind (lose gekoppelt).wie viele dies sind (lose gekoppelt).

Lösung:Lösung: Ein oder mehrere Objekte („Observer“) Ein oder mehrere Objekte („Observer“) möchten bei der Veränderung eines Objekts möchten bei der Veränderung eines Objekts („Subject“) eine Methode ausführen, die auf den („Subject“) eine Methode ausführen, die auf den veränderten Zustand zugreifen kann. Die „Observer“ veränderten Zustand zugreifen kann. Die „Observer“ registrieren sich beim „Subject“.registrieren sich beim „Subject“.

Page 9: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 9SS 05 PP_XP

1.Observer-Pattern 1.Observer-Pattern AbbildungAbbildung

Model-Objekt und drei View-ObjekteModel-Objekt und drei View-Objekte

Quelle: Design Patterns, Elements of Reusable Object Oriented Software

Page 10: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 10SS 05 PP_XP

2.Observer-Pattern 2.Observer-Pattern AnwendungAnwendung

- Abstraktion mit zwei voneinander abhängigen - Abstraktion mit zwei voneinander abhängigen AspektenAspekten - wenn ein Aspekt von dem anderen abhängt- wenn ein Aspekt von dem anderen abhängt - Kapselung der Aspekte in unterschiedlichen - Kapselung der Aspekte in unterschiedlichen ObjektenObjekten - unabhängig widerverwendbar - unabhängig widerverwendbar

- Kaskadierende Änderung- Kaskadierende Änderung - wenn die Änderung eines Objekts die Änderung - wenn die Änderung eines Objekts die Änderung anderer anderer

Objekte verlangt.Objekte verlangt. - Ungewißheit über Anzahl der Objekte die geändert - Ungewißheit über Anzahl der Objekte die geändert werden müssen. werden müssen.

- Benachrichtigung unbekannter Objekte- Benachrichtigung unbekannter Objekte - ohne Annahmen über die zu benachrichtigenden - ohne Annahmen über die zu benachrichtigenden ObjekteObjekte - Vermeidung von eng gekoppelten Objekten. - Vermeidung von eng gekoppelten Objekten.

Page 11: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 11SS 05 PP_XP

2.Observer-Pattern 2.Observer-Pattern StrukturStruktur

Quelle: Design Patterns, Elements of Reusable Object Oriented Software

Page 12: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 12SS 05 PP_XP

2.Observer-Pattern 2.Observer-Pattern StrukturStruktur

Subject Subject - kennt seine Observer - kennt seine Observer ObserverObserver

- definiert - definiert update()-update()- SchnittstelleSchnittstelle ConcreteObserverConcreteObserver

- verwaltet Referenz auf das Subjekt - verwaltet Referenz auf das Subjekt - - speichert Zustandspeichert Zustand der mit dem der mit dem Subjekt Subjekt zusammen passen soll. zusammen passen soll. - implementiert - implementiert update()update() um um Zustand mit dem Zustand mit dem des Subjekts konsistent zu halten. des Subjekts konsistent zu halten.

Page 13: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 13SS 05 PP_XP

2.Observer-Pattern 2.Observer-Pattern InteraktionInteraktion

Beobachter werden durch Konkretes Subjekt Beobachter werden durch Konkretes Subjekt benachrichtigtbenachrichtigtsobald sich der Zustand (Subjekt) ändert.sobald sich der Zustand (Subjekt) ändert.

Mit Hilfe von Anfragen an das Subjekt wird der Mit Hilfe von Anfragen an das Subjekt wird der jeweilige jeweilige Zustand ermittelt.Zustand ermittelt.

SubjectSubject:: - Zustand ändert sich - Zustand ändert sich - benachrichtigt alle Konkreten Beobachter - benachrichtigt alle Konkreten Beobachter

Concrete Observer:Concrete Observer: - befragt - befragt SubjektSubjekt nach Informationen nach Informationen - verwendet - verwendet InformationenInformationen um seinen um seinen Zustand mit Zustand mit dem des Subjekts dem des Subjekts abzugleichenabzugleichen - - update()update()

Page 14: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 14SS 05 PP_XP

3.Mediator-Pattern3.Mediator-Pattern Zweck:Zweck: Erzeuge ein Objekt, welches das Zusammenspiel einer Erzeuge ein Objekt, welches das Zusammenspiel einer

MengeMenge von Objekten in sich kapselt. Vermittler erreichen, das von Objekten in sich kapselt. Vermittler erreichen, das

dasdas Zusammenspiel der Objekte von ihnen unabhängig zu Zusammenspiel der Objekte von ihnen unabhängig zu

variieren.variieren. Problem:Problem: - Viele Verbindungen zwischen ObjektenViele Verbindungen zwischen Objekten- Schwierigkeit das Verhalten des Systems auf Schwierigkeit das Verhalten des Systems auf

bedeutsame Weise zu ändern, da Verhalten über so bedeutsame Weise zu ändern, da Verhalten über so viele Objekte verstreut ist viele Objekte verstreut ist => viele Unterklassen. => viele Unterklassen.

- Unterschiedliche Dialogboxen besitzen Unterschiedliche Dialogboxen besitzen unterschiedliche Abhängigkeiten.unterschiedliche Abhängigkeiten.

Page 15: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 15SS 05 PP_XP

3.Mediator-Pattern 3.Mediator-Pattern

Lösung:Lösung: Separates Vermittlerobjekt kapseln. Separates Vermittlerobjekt kapseln. Vermittler ist für Kontrolle und Koordination Vermittler ist für Kontrolle und Koordination

der Interaktion innerhalb einer Gruppe von der Interaktion innerhalb einer Gruppe von Objekten zuständig.Objekten zuständig.

Objekte kennen Vermittler und reduzieren Objekte kennen Vermittler und reduzieren dadurch Anzahldadurch Anzahlihrer Verbindungen.ihrer Verbindungen.

Vermittler verhindert das Objekte Bezug Vermittler verhindert das Objekte Bezug zueinander nehmen.zueinander nehmen.

Page 16: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 16SS 05 PP_XP

3.Mediator-Pattern 3.Mediator-Pattern AnwendungAnwendung

Eine Menge von Objekten vorliegt, die in Eine Menge von Objekten vorliegt, die in komplexer Weiser miteinander komplexer Weiser miteinander zusammenarbeiten.zusammenarbeiten.

Die Wiederverwendung eines Objektes Die Wiederverwendung eines Objektes schwierig ist, schwierig ist,

da es mit vielen anderen Objekten da es mit vielen anderen Objekten zusammenarbeitet.zusammenarbeitet.

Ein auf mehrere Klassen verteiltes Verhalten Ein auf mehrere Klassen verteiltes Verhalten angepaßt werden soll, ohne viele angepaßt werden soll, ohne viele Unterklassen bilden zu müssen.Unterklassen bilden zu müssen.

Page 17: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 17SS 05 PP_XP

3.Mediator-Pattern 3.Mediator-Pattern StrukturStruktur

Quelle: Design Patterns, Elements of Reusable Object Oriented Software

Page 18: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 18SS 05 PP_XP

3.Mediator-Pattern 3.Mediator-Pattern StrukturStruktur

Mediator (Vermittler): - Mediator (Vermittler): - SchnittstelleSchnittstelle für die für die Interaktion mit Interaktion mit KollegenObjekten.KollegenObjekten.

ConcreteMediator: - ConcreteMediator: - implementiertimplementiert GesamtverhaltenGesamtverhalten

durch Koordination der durch Koordination der Kollegen-Kollegen- Objekte. Objekte.

Colleague – classes : - jede Colleague – classes : - jede KollegeKollegenn--Klasse Klasse kenntkennt ihre ihre MediatorMediator-Klasse.-Klasse. - jedes Kollegen-Objekt - jedes Kollegen-Objekt arbeitet mit arbeitet mit Vermittler zusammen, statt Vermittler zusammen, statt mit mit Kollegen-Objekten. Kollegen-Objekten.

Page 19: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 19SS 05 PP_XP

3.Mediator-Pattern 3.Mediator-Pattern InteraktionInteraktion

InteraktionInteraktion - Kollegenobjekte senden und empfangen - Kollegenobjekte senden und empfangen Anfragen von Anfragen von einem Vermittlerobjekt. einem Vermittlerobjekt. - Der Vermittler implementiert das - Der Vermittler implementiert das Gesamtverhalten durch Gesamtverhalten durch das Weiterleiten der Anfragen zwischen den das Weiterleiten der Anfragen zwischen den richtigen richtigen Kollegenobjekten. Kollegenobjekten.

Page 20: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 20SS 05 PP_XP

3.Mediator-Pattern 3.Mediator-Pattern BeispielBeispiel

MotivationMotivation Programm mit verschiedenen Buttons, zwei Listboxes Programm mit verschiedenen Buttons, zwei Listboxes und und einem Text Entry Field. einem Text Entry Field.

Funktion des ProgrammsFunktion des Programms - wähle einen Namen aus der ListBox aus, Name wird - wähle einen Namen aus der ListBox aus, Name wird in in das Text Entry Field kopiert, Copy-Button enabled. das Text Entry Field kopiert, Copy-Button enabled.

- bei Klick auf Copy, wird der Name in die rechte box - bei Klick auf Copy, wird der Name in die rechte box kopiert, Clear enabled. kopiert, Clear enabled.

- bei Klick auf Clear-Button, wird rechte box und text - bei Klick auf Clear-Button, wird rechte box und text Entry Field gelöscht. Entry Field gelöscht.

Page 21: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 21SS 05 PP_XP

3.Mediator-Pattern 3.Mediator-Pattern BeispielBeispiel

Page 22: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 22SS 05 PP_XP

3.Mediator-Pattern 3.Mediator-Pattern BeispielBeispiel

InteraktionenInteraktionen anschaulich: anschaulich:

Lösung:Lösung: mit Mediator-Pattern: mit Mediator-Pattern:

Page 23: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 23SS 05 PP_XP

3.Mediator-Pattern 3.Mediator-Pattern BeispielBeispiel

Mediator vereinfacht das System, ist einzige Mediator vereinfacht das System, ist einzige Klasse über alle anderen.Klasse über alle anderen.

Alle anderen Klassen werden als Kollegen Alle anderen Klassen werden als Kollegen bezeichnet.bezeichnet.

Jeder Kollege informiert den Mediator über Jeder Kollege informiert den Mediator über neue Aktion.neue Aktion.

Mediator wird über alle Vorgänge informiert, Mediator wird über alle Vorgänge informiert, die stattfinden.die stattfinden.

Page 24: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 24SS 05 PP_XP

3.Mediator-Pattern 3.Mediator-Pattern BeispielBeispiel

1.Schritt:1.Schritt: Erstelle Instanz vom Mediator und Erstelle Instanz vom Mediator und setzte diesesetzte diese in jede Klasse ein in jede Klasse ein

Mediator med = new Mediator(); kidList = new KidList( med); tx = new KTextField(med); Move = new MoveButton(this, med); Clear = new ClearButton(this, med); med.init();

2.Schritt:2.Schritt: Copy- und Clear-Button mit dem Copy- und Clear-Button mit dem Mediator Mediator initialisieren initialisieren

Beispiel: für Copy-Button, Clear-Button analogBeispiel: für Copy-Button, Clear-Button analog

Page 25: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 25SS 05 PP_XP

3.Mediator-Pattern 3.Mediator-Pattern BeispielBeispiel

public class CopyButton extends JButton implements Command { Mediator med; //copy of the Mediator public CopyButton(ActionListener fr, Mediator md) { super("Copy"); //create the button addActionListener(fr); //add its listener med = md; //copy in Mediator

instance med.registerMove(this); //register with the

Mediator } public void Execute() { //execute the copy med.Copy(); }}

Page 26: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 26SS 05 PP_XP

3.Mediator-Pattern 3.Mediator-Pattern BeispielBeispiel

3.Schritt : Erstellen eine Klasse 3.Schritt : Erstellen eine Klasse ListSelectionListener, erreichen über ein ListSelectionListener, erreichen über ein Klick jedes List Item bis zum Mediator dieser Klick jedes List Item bis zum Mediator dieser Klasse.Klasse.

Page 27: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 27SS 05 PP_XP

3.Mediator-Pattern 3.Mediator-Pattern BeispielBeispiel

public class KidList extends JawtList implements

ListSelectionListener } KidData kdata; //reads the data

from the file Mediator med; //copy of the

mediatorpublic KidList(Mediator md){ super(20); //create the JList kdata = new KidData

("50free.txt"); fillKidList(); //fill the list with

names med = md; //save the mediator med.registerKidList(this); addListSelectionListener(this);}

public void valueChanged(ListSelectionEvent ls)

{ //if an item was selected pass on to

mediator JList obj = (JList)ls.getSource(); if (obj.getSelectedIndex() >= 0) med.select(); } //----------------------------------private void fillKidList() { Enumeration ekid =

kdata.elements(); while (ekid.hasMoreElements()) { Kid k =(Kid)ekid.nextElement(); add(k.getFrname()+"

"+k.getLname()); } }}

Page 28: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 28SS 05 PP_XP

3.Mediator-Pattern 3.Mediator-Pattern BeispielBeispiel

Beispiel: für Text Field:Beispiel: für Text Field:public class KTextField extends JTextField{ Mediator med; public KTextField(Mediator md) { super(10); med = md; med.registerText(this); }}

Page 29: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 29SS 05 PP_XP

3.Mediator-Pattern 3.Mediator-Pattern BeispielBeispiel

Mediator Klasse unterstützt Copy, Clear und Mediator Klasse unterstützt Copy, Clear und ausgewählte Registermethoden für jeden Befehl. ausgewählte Registermethoden für jeden Befehl.

Beispiel : Mediator Klasse mit der Methode CopyBeispiel : Mediator Klasse mit der Methode Copy public class Mediator { private ClearButton clearButton;

private CopyButton copyButton;private KTextField ktext;private KidList klist;private PickedKidsList picked;public void Copy() { picked.add(ktext.getText()); //copy text clearButton.setEnabled(true); //enable Clear}

Page 30: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 30SS 05 PP_XP

3.Mediator-Beispiel3.Mediator-Beispiel

Control Tower am Flughafen ist zentrale Punkt zur Kommunikation zwischenden Flugzeugen.Erlaubnisse zur Landung nur durch Conrol Tower.Mit der zentralen Kommunikationund Verwaltung der Erlaubnisse, stellt der Control Tower den Mediator dar.

Page 31: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 31SS 05 PP_XP

4.Command-Pattern4.Command-Pattern

ZweckZweck - - Befehle zu kapselnBefehle zu kapseln, die innerhalb eines Entwurfs , die innerhalb eines Entwurfs transportiert werden müssen, in transportiert werden müssen, in Objekte Objekte mit gleicher mit gleicher Schnittstelle. Schnittstelle.

- Bietet Möglichkeit - Bietet Möglichkeit Befehle rückgängigBefehle rückgängig zu machen, zu machen,

Operationen können in eine Operationen können in eine QueueQueue gestellt werden. gestellt werden.

Problem Problem - Verschiedene Benutzer wollen mit einer Anwendung auf - Verschiedene Benutzer wollen mit einer Anwendung auf

verschiedene Art und Weise arbeiten. verschiedene Art und Weise arbeiten.

- Zusätzliche Dienste wie - Zusätzliche Dienste wie undoundo sollen für alle Operationen sollen für alle Operationen implementiert werden implementiert werden

Page 32: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 32SS 05 PP_XP

4.Command-Pattern 4.Command-Pattern AnwendungAnwendung

Objekte mit einer auszuführenden Aktion zu Objekte mit einer auszuführenden Aktion zu parametrieren,parametrieren,und zu einem späteren Zeitpunkt wieder und zu einem späteren Zeitpunkt wieder aufzurufen (Callback Funktion).aufzurufen (Callback Funktion).

Anfragen zu unterschiedlichen Zeitpunkten zu Anfragen zu unterschiedlichen Zeitpunkten zu spezi-fizieren, aufreihen und ausführen wollen.spezi-fizieren, aufreihen und ausführen wollen.

Operationen rückgängig zu machen (undo) oder Operationen rückgängig zu machen (undo) oder wiederwiederherzustellen (redo).herzustellen (redo).

Protokollieren von Änderungen, Bsp. im Falle Protokollieren von Änderungen, Bsp. im Falle eines Absturz des Systems (Logbuch).eines Absturz des Systems (Logbuch).

Komplexe Operationen zu strukturieren.Komplexe Operationen zu strukturieren.

Page 33: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 33SS 05 PP_XP

4.Command-Pattern 4.Command-Pattern StrukturStruktur

Quelle: Design Patterns, Elements of Reusable Object Oriented Software

Page 34: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 34SS 05 PP_XP

4.Command-Pattern 4.Command-Pattern StrukturStruktur

Command: - Command: - definiertdefiniert eine eine SchnittstelleSchnittstelle zum zum Ausführen von Operationen. Ausführen von Operationen.

ConcreteCommand: - implementiert die ConcreteCommand: - implementiert die AnbindungAnbindung eines eines EmpfängersEmpfängers an eine Aktion. an eine Aktion. Adressee: - weiß, wie die an die Ausführung Adressee: - weiß, wie die an die Ausführung

einer einer AnfrageAnfrage gebundenen gebundenen Operationen auszuführen sind. Operationen auszuführen sind. Jede Klasse kann Jede Klasse kann EmpfängerEmpfänger sein. sein.

Invoker: Invoker: - - fordertfordert Befehlsobjekt auf, Befehlsobjekt auf, AnfrageAnfrage auszuführen. auszuführen.

Client: - Client: - erzeugt ConcreteCommanderzeugt ConcreteCommand ObjektObjekt und übergibt es dem Empfänger. und übergibt es dem Empfänger.

Page 35: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 35SS 05 PP_XP

4.Command-Pattern 4.Command-Pattern InteraktionInteraktion

Der Client erzeugt Befehlsobjekt einer konkreten Der Client erzeugt Befehlsobjekt einer konkreten Befehlsklasse und bestimmt ihren Empfänger.Befehlsklasse und bestimmt ihren Empfänger.

Invoker speichert das Befehlsobjekt der konkreten Invoker speichert das Befehlsobjekt der konkreten Klasse.Klasse.

Invoker löst Anfrage über Invoker löst Anfrage über execute()execute()-Operation aus. -Operation aus. Wenn Befehle rückgängig gemacht werden können, Wenn Befehle rückgängig gemacht werden können, speichert das Befehlsobjekt vor Ausführen des speichert das Befehlsobjekt vor Ausführen des Befehls den Zustand des Empfängers, um später Befehls den Zustand des Empfängers, um später wiederherstellen zu können.wiederherstellen zu können.

Das konkrete Befehlsobjekt ruft Operationen auf Das konkrete Befehlsobjekt ruft Operationen auf seinem Empfängerobjekt auf und setzt die Anfrage seinem Empfängerobjekt auf und setzt die Anfrage um.um.

Page 36: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 36SS 05 PP_XP

4.Command-Pattern 4.Command-Pattern BeispielBeispiel

MotivationMotivation Erstellen eines einfachen Java UI, mit Menu Erstellen eines einfachen Java UI, mit Menu

Items, Items,

Buttons etc. , erlauben dem User Buttons etc. , erlauben dem User Anweisungen an Anweisungen an

das Programm zu geben.das Programm zu geben. Programm besteht aus den Menu Items: -Programm besteht aus den Menu Items: -

File, Open and File, Exit und einem Button, File, Open and File, Exit und einem Button, der durch Klick den Hintergrund rot der durch Klick den Hintergrund rot darstellt.darstellt.

Page 37: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 37SS 05 PP_XP

4.Command-Pattern 4.Command-Pattern BeispielBeispiel

Bei Beispiel mit wenig Menu Items and Bei Beispiel mit wenig Menu Items and Buttons, funktioniert das gut. Buttons, funktioniert das gut.

Problem:Problem: bei vielen Menu Items und Buttons bei vielen Menu Items und Buttons

=> uneleganter Code.=> uneleganter Code. Lösung:Lösung:

Jedem Objekt seine Befehle direkt empfangen Jedem Objekt seine Befehle direkt empfangen zu lassenzu lassen

Page 38: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 38SS 05 PP_XP

4.Command-Beispiel4.Command-Beispiel

Page 39: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 39SS 05 PP_XP

5.Chain of Responsibility5.Chain of Responsibility Zweck:Zweck: Entkopplung von Sender und Empfänger einer Entkopplung von Sender und Empfänger einer

Nachricht. Nachricht.

Problem:Problem: Jenes Objekt das die Hilfsinformation bereit- Jenes Objekt das die Hilfsinformation bereit- stellt, jenem Objekt nicht bekannt ist, das die stellt, jenem Objekt nicht bekannt ist, das die Hilfsanfrage anstößt. Hilfsanfrage anstößt.

Lösung:Lösung: Mehrere Objekte erhalten Möglichkeit eine Mehrere Objekte erhalten Möglichkeit eine Anfrage zu bearbeiten. Nachricht wird entlang Anfrage zu bearbeiten. Nachricht wird entlang einer Kette weitergegeben, bis sie bearbeitet einer Kette weitergegeben, bis sie bearbeitet wird.wird.

Page 40: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 40SS 05 PP_XP

5.Chain of Responsibility 5.Chain of Responsibility AnwendungAnwendung

Mehrere Objekte eine Anfrage bearbeiten, Mehrere Objekte eine Anfrage bearbeiten, welches Objekt ist nicht bekannt.welches Objekt ist nicht bekannt.

Eine Anfrage an eines von mehreren Eine Anfrage an eines von mehreren Objekten zu senden, ohne den Empfänger Objekten zu senden, ohne den Empfänger anzugeben.anzugeben.

Die Menge der Objekte, welche eine Anfrage Die Menge der Objekte, welche eine Anfrage bearbeiten sollen, dynamisch festgelegt wird.bearbeiten sollen, dynamisch festgelegt wird.

Page 41: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 41SS 05 PP_XP

5.Chain of Responsibility 5.Chain of Responsibility StrukturStruktur

Quelle: Design Patterns, Elements of Reusable Object Oriented Software

Page 42: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 42SS 05 PP_XP

5.Chain of Responsibility 5.Chain of Responsibility StrukturStruktur

Client: - Client: - löst Anfragelöst Anfrage bei einem bei einem ConcreteHandler ConcreteHandler – Objekt in der Kette – Objekt in der Kette ausaus..

ConcreteHandler: - ConcreteHandler: - arbeitet Anfrage abarbeitet Anfrage ab.. - kann auf seinen Nachfolger zugreifen. - kann auf seinen Nachfolger zugreifen. - Möglichkeit zum - Möglichkeit zum bearbeitenbearbeiten der der Anfrage, andernfalls wird Anfrage, andernfalls wird AnfrageAnfrage an an NachfolgeobjektNachfolgeobjekt weitergereicht. weitergereicht.

Handler: - Handler: - definiert Schnittstelledefiniert Schnittstelle zur Bearbeitung zur Bearbeitung von Schnittstellen. von Schnittstellen. - beinhaltet Verbindung zum - beinhaltet Verbindung zum Nachfolgeobjekt. Nachfolgeobjekt.

Page 43: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 43SS 05 PP_XP

5.Chain of Responsibility 5.Chain of Responsibility VorteileVorteile

Reduzierte KopplungReduzierte Kopplung - Sender muß Empfänger nicht kennen- Sender muß Empfänger nicht kennen - lediglich Referenz auf das Nachfolgeobjekt - lediglich Referenz auf das Nachfolgeobjekt

FlexibilitätFlexibilität - - Kettenstruktur ist dynamisch erweiterbar Kettenstruktur ist dynamisch erweiterbar und und änderbar änderbar

Keine AbarbeitungsgarantieKeine Abarbeitungsgarantie - da kein impliziter Empfänger - da kein impliziter Empfänger - Anfragen können verloren gehen - Anfragen können verloren gehen

Page 44: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 44SS 05 PP_XP

5.Chain of Responsibility-5.Chain of Responsibility-BeispielBeispiel

bnEin Bankautomat verwendet einen

einzigen Slot für alle Münzen.Wenn eine Münze eingeworfen wirdentscheidet eine Kette, welches Rohr das richtige ist für jede Münze.Wenn ein Rohr eine Münze nicht an-nimmt, wird es solange weiterge-leitet bis ein Rohr die Münze an-nimmt.

Page 45: Morad Harrach SS 05 PP_XP Programmierpraktikum eXtreme Programming 2005 Thema: Pattern II : Anpassbare Kommunikation.

Morad Harrach 45SS 05 PP_XP

LiteraturLiteratur EntwurfsmusterEntwurfsmuster, Erich Gamma, Richard Helm, , Erich Gamma, Richard Helm,

Ralph Johnson, John Vlissides. Addison-Wesley Ralph Johnson, John Vlissides. Addison-Wesley 19961996

Patternorientierte SoftwarearchitekturPatternorientierte Softwarearchitektur, Frank , Frank Buschmann, Regine Meunier, Hans Rohnert, Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerland, Michael Stal. Addison-Peter Sommerland, Michael Stal. Addison-Wesley 1998Wesley 1998

Vorlesung SS 2002 Vorlesung SS 2002 Design PatternsDesign Patterns The Design PatternsThe Design Patterns, James W.Cooper, Addison-, James W.Cooper, Addison-

Wesley 1998Wesley 1998 http://java.sun.com/blueprints/patterns