Programmierpraktikum eXtreme Programming 2005

Slides:



Advertisements
Ähnliche Präsentationen
Vorbereitung zu Praktikum 3
Advertisements

Programmieren im Großen von Markus Schmidt und Benno Kröger.
Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
Harald Köbler Software Design Patterns Prototype.
Dynamische Seiten mit Dreamweaver Zugriff auf (mysql) Datenbank mit PHP.
Kritische Betrachtung
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Design Patterns- Entwurfsmuster
Objektorientierter Entwurf (OOD) Übersicht
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Java: Programmierung grafischer Oberflächen
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Einfache Komponenten in SWING
Java: Grundlagen der Sprache
Java: Grundlagen der Objektorientierung
Cassey - Common Answer Set Evaluation sYstem Jean Gressmann Benjamin Kaufmann Robert Lenk.
Ein Beispiel in Java.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 6 Model-View-Controler als Grundlage für Nutzerschnittstellen Sommersemester 2003 Lars Bernard.
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
Sebastian Grahn Sebastian Kühn
MVC – ein Architekturmuster
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Betreuerin: Kathleen Jerchel
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Software Design Patterns Creational Patterns Structural Patterns Behavioral Patterns –Behavioral Class Patterns Interpreter Template Method Pattern –Behavioral.
Command Pattern Karola Schäuble,
Dependents, Publish-Subscribe, Listener
Entwurfsmuster EDV Entwurfsmuster.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
© 2004 Pohlig - Taulien Swing Ereignissteuerung. © 2004 Pohlig - Taulien GK Informatik mit Java 2 Auf Button-Klick reagieren.
OO Analyse und Entwurf für Anwender XIII. Objektorientierte Benutzeroberfäche Dr. Michael Löwe.
Wizards & Builders GmbH Einführung in die objektorientierte Programmierung Norbert Abb.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 6 Sitzung 6: Model-View-Controller als Grundlage.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
20:00.
Steuerung externer Komponenten über ein USB-Interface.
Konzepte der objektorientierten Programmierung
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 8 Folie 2 Commands (1) s.a.
Einführung in die Programmierung Prof. Dr. Bertrand Meyer
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Analyse von Ablaufdiagrammen
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
Das IT - Informationssystem
Objectives Verstehen was unterDelegate verstanden wird
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Software Design Patterns
Das IT - Informationssystem
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe.
Einführung in die Programmierung mit Java
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Design Pattern1 Motivation Entwurfsmuster Entwurf wiederverwendbarer objektorientierter Software schwer gute Entwürfe entstehen durch Wiederverwen- dung.
Dieser Vortrag wird gesponsort von:
Neukonzeptionierung des SVNCheckers > Malte Legenhausen > DLR > Folie 1 Observer - Pattern Malte Legenhausen, Robert Werschnitzke Asea Brown.
Strategy Pattern Teachlet Autor: Sven Wende Replay durch Stephan Schwake Konzepte objektorientierter Programmiersprachen, SS 2006.
Tutorium Software-Engineering SS14 Florian Manghofer.
Das Entwurfsmuster Model-View-Controller
Informatik Softwareentwicklung – 4.3 Entwurfsmuster
 Präsentation transkript:

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

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

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

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

1.MVC-Pattern Abbildung Quelle: http://java.sun.com/blueprints/patterns/MVC-detailed.html Morad Harrach SS 05 PP_XP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3.Mediator-Pattern Beispiel Morad Harrach SS 05 PP_XP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4.Command-Beispiel Morad Harrach SS 05 PP_XP

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

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

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

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

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

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

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 http://java.sun.com/blueprints/patterns Morad Harrach SS 05 PP_XP