Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmierpraktikum eXtreme Programming 2005

Ähnliche Präsentationen


Präsentation zum Thema: "Programmierpraktikum eXtreme Programming 2005"—  Präsentation transkript:

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

2 Gliederung 1.MVC (Model View Controller) - Pattern
2.Observer (Beobachter) – Pattern 3.Command (Befehls) – Pattern 4.Mediator (Vermittler) – Pattern 5.Chain of Responsibility (Zuständigkeitskette)-Pattern Morad Harrach SS 05 PP_XP

3 1.MVC – Pattern Struktur Das Model-View-Controller-Muster (MVC)
unterteilt eine interaktive Anwendung in drei Komponenten - Model: enthält die dauerhaften Daten einer Anwendung Verwaltet Daten unabhängig von der Präsentation - View: die Darstellungsschicht präsentiert die Daten Beinhaltet die visuellen Elemente (Fenster, Buttons, HTML, etc.). - Control: die Steuerungsschicht realisiert die eigentliche Arbeit. Sie steuert den Ablauf, ändert Modelldaten, entscheidet, welche View aufgerufen wird. Morad Harrach SS 05 PP_XP

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

5 1.MVC-Pattern Abbildung
Quelle: Morad Harrach SS 05 PP_XP

6 1.MVC-Pattern Interaktion
Wenn ein Anwender das Model mit Hilfe der Steuerungs-komponente einer Ansicht ändert, sollten alle Views des Models diese Änderung anzeigen. Model benachrichtigt seine Views, sobald sich Daten ändern. Views entnehmen die neuen Daten und passen die an-gezeigte Information an. Morad Harrach SS 05 PP_XP

7 1.MVC-Pattern Anwendung
Verwendung: zur Entwicklung Benutzeroberflächen für interaktive Anwendungen, z.B. Smalltalk-80-Umgebung Erstellung von Windows-Anwendungen in der Entwicklungs-umgebung von Visual C++ Vorteile: - mehrere Views desselben Modells. - austauschbare Views - Potential für Frameworks Nacheile: - größere Komplexität - ineffizienter Datenzugriff innerhalb der Views - etc. Morad Harrach SS 05 PP_XP

8 2.Observer-Pattern Zweck: Definiere eine 1-zu-n Abhängigkeit zwischen Objekten, so dass die Änderung des Zustandes eines Objektes zu einer Aktualisierung aller abhängigen Objekte führt. Problem: Das unabhängige Objekt soll die abhängigen Objekte bzgl. Veränderungen benachrichtigen, ohne Annahmen zu treffen, wer und wie viele dies sind (lose gekoppelt). Lösung: Ein oder mehrere Objekte („Observer“) möchten bei der Veränderung eines Objekts („Subject“) eine Methode ausführen, die auf den veränderten Zustand zugreifen kann. Die „Observer“ registrieren sich beim „Subject“. Morad Harrach SS 05 PP_XP

9 1.Observer-Pattern Abbildung
Model-Objekt und drei View-Objekte Quelle: Design Patterns, Elements of Reusable Object Oriented Software Morad Harrach SS 05 PP_XP

10 2.Observer-Pattern Anwendung
- Abstraktion mit zwei voneinander abhängigen Aspekten - wenn ein Aspekt von dem anderen abhängt - Kapselung der Aspekte in unterschiedlichen Objekten - unabhängig widerverwendbar - Kaskadierende Änderung - wenn die Änderung eines Objekts die Änderung anderer Objekte verlangt Ungewißheit über Anzahl der Objekte die geändert werden müssen. - Benachrichtigung unbekannter Objekte - ohne Annahmen über die zu benachrichtigenden Objekte - Vermeidung von eng gekoppelten Objekten. Morad Harrach SS 05 PP_XP

11 2.Observer-Pattern Struktur
Quelle: Design Patterns, Elements of Reusable Object Oriented Software Morad Harrach SS 05 PP_XP

12 2.Observer-Pattern Struktur
Subject kennt seine Observer Observer definiert update()- Schnittstelle ConcreteObserver verwaltet Referenz auf das Subjekt speichert Zustand der mit dem Subjekt zusammen passen soll implementiert update() um Zustand mit dem des Subjekts konsistent zu halten. Morad Harrach SS 05 PP_XP

13 2.Observer-Pattern Interaktion
Beobachter werden durch Konkretes Subjekt benachrichtigt sobald sich der Zustand (Subjekt) ändert. Mit Hilfe von Anfragen an das Subjekt wird der jeweilige Zustand ermittelt. Subject: - Zustand ändert sich benachrichtigt alle Konkreten Beobachter Concrete Observer: befragt Subjekt nach Informationen verwendet Informationen um seinen Zustand mit dem des Subjekts abzugleichen update() Morad Harrach SS 05 PP_XP

14 3.Mediator-Pattern Zweck: Problem:
Erzeuge ein Objekt, welches das Zusammenspiel einer Menge von Objekten in sich kapselt. Vermittler erreichen, das das Zusammenspiel der Objekte von ihnen unabhängig zu variieren. Problem: Viele Verbindungen zwischen Objekten Schwierigkeit das Verhalten des Systems auf bedeutsame Weise zu ändern, da Verhalten über so viele Objekte verstreut ist => viele Unterklassen. Unterschiedliche Dialogboxen besitzen unterschiedliche Abhängigkeiten. Morad Harrach SS 05 PP_XP

15 3.Mediator-Pattern Lösung: Separates Vermittlerobjekt kapseln.
Vermittler ist für Kontrolle und Koordination der Interaktion innerhalb einer Gruppe von Objekten zuständig. Objekte kennen Vermittler und reduzieren dadurch Anzahl ihrer Verbindungen. Vermittler verhindert das Objekte Bezug zueinander nehmen. Morad Harrach SS 05 PP_XP

16 3.Mediator-Pattern Anwendung
Eine Menge von Objekten vorliegt, die in komplexer Weiser miteinander zusammenarbeiten. Die Wiederverwendung eines Objektes schwierig ist, da es mit vielen anderen Objekten zusammenarbeitet. Ein auf mehrere Klassen verteiltes Verhalten angepaßt werden soll, ohne viele Unterklassen bilden zu müssen. Morad Harrach SS 05 PP_XP

17 3.Mediator-Pattern Struktur
Quelle: Design Patterns, Elements of Reusable Object Oriented Software Morad Harrach SS 05 PP_XP

18 3.Mediator-Pattern Struktur
Mediator (Vermittler): - Schnittstelle für die Interaktion mit KollegenObjekten. ConcreteMediator: implementiert Gesamtverhalten durch Koordination der Kollegen Objekte. Colleague – classes : jede Kollegen-Klasse kennt ihre Mediator-Klasse jedes Kollegen-Objekt arbeitet mit Vermittler zusammen, statt mit Kollegen-Objekten. Morad Harrach SS 05 PP_XP

19 3.Mediator-Pattern Interaktion
Interaktion - Kollegenobjekte senden und empfangen Anfragen von einem Vermittlerobjekt. - Der Vermittler implementiert das Gesamtverhalten durch das Weiterleiten der Anfragen zwischen den richtigen Kollegenobjekten. Morad Harrach SS 05 PP_XP

20 3.Mediator-Pattern Beispiel
Motivation Programm mit verschiedenen Buttons, zwei Listboxes und einem Text Entry Field. Funktion des Programms - wähle einen Namen aus der ListBox aus, Name wird in das Text Entry Field kopiert, Copy-Button enabled. - bei Klick auf Copy, wird der Name in die rechte box kopiert, Clear enabled. - bei Klick auf Clear-Button, wird rechte box und text Entry Field gelöscht. Morad Harrach SS 05 PP_XP

21 3.Mediator-Pattern Beispiel
Morad Harrach SS 05 PP_XP

22 3.Mediator-Pattern Beispiel
Interaktionen anschaulich: Lösung: mit Mediator-Pattern: Morad Harrach SS 05 PP_XP

23 3.Mediator-Pattern Beispiel
Mediator vereinfacht das System, ist einzige Klasse über alle anderen. Alle anderen Klassen werden als Kollegen bezeichnet. Jeder Kollege informiert den Mediator über neue Aktion. Mediator wird über alle Vorgänge informiert, die stattfinden. Morad Harrach SS 05 PP_XP

24 3.Mediator-Pattern Beispiel
1.Schritt: Erstelle Instanz vom Mediator und setzte diese 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: Copy- und Clear-Button mit dem Mediator initialisieren Beispiel: für Copy-Button, Clear-Button analog Morad Harrach SS 05 PP_XP

25 3.Mediator-Pattern Beispiel
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(); Morad Harrach SS 05 PP_XP

26 3.Mediator-Pattern Beispiel
3.Schritt : Erstellen eine Klasse ListSelectionListener, erreichen über ein Klick jedes List Item bis zum Mediator dieser Klasse. Morad Harrach SS 05 PP_XP

27 3.Mediator-Pattern Beispiel
public class KidList extends JawtList implements ListSelectionListener } KidData kdata; //reads the data from the file Mediator med; //copy of the mediator public 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()); Morad Harrach SS 05 PP_XP

28 3.Mediator-Pattern Beispiel
Beispiel: für Text Field: public class KTextField extends JTextField { Mediator med; public KTextField(Mediator md) { super(10); med = md; med.registerText(this); } Morad Harrach SS 05 PP_XP

29 3.Mediator-Pattern Beispiel
Mediator Klasse unterstützt Copy, Clear und ausgewählte Registermethoden für jeden Befehl. Beispiel : 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 } Morad Harrach SS 05 PP_XP

30 3.Mediator-Beispiel Control Tower am Flughafen ist zentrale Punkt zur
Kommunikation zwischen den Flugzeugen. Erlaubnisse zur Landung nur durch Conrol Tower. Mit der zentralen Kommunikation und Verwaltung der Erlaubnisse, stellt der Control Tower den Mediator dar. Morad Harrach SS 05 PP_XP

31 4.Command-Pattern Zweck - Befehle zu kapseln, die innerhalb eines Entwurfs transportiert werden müssen, in Objekte mit gleicher Schnittstelle. - Bietet Möglichkeit Befehle rückgängig zu machen, Operationen können in eine Queue gestellt werden. Problem - Verschiedene Benutzer wollen mit einer Anwendung auf verschiedene Art und Weise arbeiten. - Zusätzliche Dienste wie undo sollen für alle Operationen implementiert werden Morad Harrach SS 05 PP_XP

32 4.Command-Pattern Anwendung
Objekte mit einer auszuführenden Aktion zu parametrieren, und zu einem späteren Zeitpunkt wieder aufzurufen (Callback Funktion). Anfragen zu unterschiedlichen Zeitpunkten zu spezi-fizieren, aufreihen und ausführen wollen. Operationen rückgängig zu machen (undo) oder wieder herzustellen (redo). Protokollieren von Änderungen, Bsp. im Falle eines Absturz des Systems (Logbuch). Komplexe Operationen zu strukturieren. Morad Harrach SS 05 PP_XP

33 4.Command-Pattern Struktur
Quelle: Design Patterns, Elements of Reusable Object Oriented Software Morad Harrach SS 05 PP_XP

34 4.Command-Pattern Struktur
Command: definiert eine Schnittstelle zum Ausführen von Operationen. ConcreteCommand: implementiert die Anbindung eines Empfängers an eine Aktion. Adressee: weiß, wie die an die Ausführung einer Anfrage gebundenen Operationen auszuführen sind Jede Klasse kann Empfänger sein. Invoker: fordert Befehlsobjekt auf, Anfrage auszuführen. Client: erzeugt ConcreteCommand Objekt und übergibt es dem Empfänger. Morad Harrach SS 05 PP_XP

35 4.Command-Pattern Interaktion
Der Client erzeugt Befehlsobjekt einer konkreten Befehlsklasse und bestimmt ihren Empfänger. Invoker speichert das Befehlsobjekt der konkreten Klasse. Invoker löst Anfrage über execute()-Operation aus. Wenn Befehle rückgängig gemacht werden können, speichert das Befehlsobjekt vor Ausführen des Befehls den Zustand des Empfängers, um später wiederherstellen zu können. Das konkrete Befehlsobjekt ruft Operationen auf seinem Empfängerobjekt auf und setzt die Anfrage um. Morad Harrach SS 05 PP_XP

36 4.Command-Pattern Beispiel
Motivation Erstellen eines einfachen Java UI, mit Menu Items, Buttons etc. , erlauben dem User Anweisungen an das Programm zu geben. Programm besteht aus den Menu Items: -File, Open and File, Exit und einem Button, der durch Klick den Hintergrund rot darstellt. Morad Harrach SS 05 PP_XP

37 4.Command-Pattern Beispiel
Bei Beispiel mit wenig Menu Items and Buttons, funktioniert das gut. Problem: bei vielen Menu Items und Buttons => uneleganter Code. Lösung: Jedem Objekt seine Befehle direkt empfangen zu lassen Morad Harrach SS 05 PP_XP

38 4.Command-Beispiel Morad Harrach SS 05 PP_XP

39 5.Chain of Responsibility
Zweck: Entkopplung von Sender und Empfänger einer Nachricht. Problem: Jenes Objekt das die Hilfsinformation bereit stellt, jenem Objekt nicht bekannt ist, das die Hilfsanfrage anstößt. Lösung: Mehrere Objekte erhalten Möglichkeit eine Anfrage zu bearbeiten. Nachricht wird entlang einer Kette weitergegeben, bis sie bearbeitet wird. Morad Harrach SS 05 PP_XP

40 5.Chain of Responsibility Anwendung
Mehrere Objekte eine Anfrage bearbeiten, welches Objekt ist nicht bekannt. Eine Anfrage an eines von mehreren Objekten zu senden, ohne den Empfänger anzugeben. Die Menge der Objekte, welche eine Anfrage bearbeiten sollen, dynamisch festgelegt wird. Morad Harrach SS 05 PP_XP

41 5.Chain of Responsibility Struktur
Quelle: Design Patterns, Elements of Reusable Object Oriented Software Morad Harrach SS 05 PP_XP

42 5.Chain of Responsibility Struktur
Client: löst Anfrage bei einem ConcreteHandler – Objekt in der Kette aus. ConcreteHandler: - arbeitet Anfrage ab kann auf seinen Nachfolger zugreifen Möglichkeit zum bearbeiten der Anfrage, andernfalls wird Anfrage an Nachfolgeobjekt weitergereicht. Handler: definiert Schnittstelle zur Bearbeitung von Schnittstellen beinhaltet Verbindung zum Nachfolgeobjekt. Morad Harrach SS 05 PP_XP

43 5.Chain of Responsibility Vorteile
Reduzierte Kopplung Sender muß Empfänger nicht kennen lediglich Referenz auf das Nachfolgeobjekt Flexibilität Kettenstruktur ist dynamisch erweiterbar und änderbar Keine Abarbeitungsgarantie da kein impliziter Empfänger Anfragen können verloren gehen Morad Harrach SS 05 PP_XP

44 5.Chain of Responsibility-Beispiel
bn Ein Bankautomat verwendet einen einzigen Slot für alle Münzen. Wenn eine Münze eingeworfen wird entscheidet 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. Morad Harrach SS 05 PP_XP

45 Literatur Entwurfsmuster, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Addison-Wesley 1996 Patternorientierte Softwarearchitektur, Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerland, Michael Stal. Addison-Wesley 1998 Vorlesung SS 2002 Design Patterns The Design Patterns, James W.Cooper, Addison-Wesley 1998 Morad Harrach SS 05 PP_XP


Herunterladen ppt "Programmierpraktikum eXtreme Programming 2005"

Ähnliche Präsentationen


Google-Anzeigen