Behavioral Patterns. Seminar Software-Entwurf WS 04/05. Przemyslaw Dul

Ähnliche Dokumente
Objektorientiertes Software-Engineering

Entwurfsprinzip. Entwurfsprinzip

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Software-Architektur Design Patterns

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D

Inhaltsverzeichnis. Vorwort Geleitwort von Grady Booch Einleitung... 23

Factory Method (Virtual Constructor)

SE Besprechung. Übung 4 Architektur, Modulentwurf

Tutorium Softwaretechnik I

Objektorientierte Programmierung

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Überblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio

Einführung in die Programmierung

4. AuD Tafelübung T-C3

Software-Architektur. Design Patterns. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Design Patterns 2. Model-View-Controller in der Praxis

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Inventur. Bemerkung. / Inventur

TYPO3 Tipps und Tricks

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Java: Vererbung. Teil 3: super()

Objektorientierte Programmierung OOP

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?

Objektorientierte Programmierung. Kapitel 12: Interfaces

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

GEZIELT MEHR SICHERHEIT MIT 4I ACCESS SERVER & 4I CONNECT CLIENT

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Arbeiten mit UMLed und Delphi

5. Abstrakte Klassen

Freigabemitteilung: Nr. 9 System: DFBnet Lizenzverwaltung Version

Vererbung & Schnittstellen in C#

Hochschule Ravensburg-Weingarten. Technik Wirtschaft Sozialwesen. Projektarbeit

Abwesenheitsnotiz im Exchange Server 2010

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

Menü auf zwei Module verteilt (Joomla 3.4.0)

U08 Entwurfsmuster (II)

Applet Firewall und Freigabe der Objekte

1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten.

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Dokumentenverwaltung im Internet

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Objektorientierte Programmierung

SEND-IT Bedienungsanleitung

ejgp Webseite Kurzeinführung

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Enigmail Konfiguration

Auktionen erstellen und verwalten mit dem GV Büro System und der Justiz Auktion

Konzepte der Informatik

Effiziente Prozesse. Die Formel 1 und die Druckindustrie

Nutzung des Retain-Archivs

Man liest sich: POP3/IMAP

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

Client-Server-Beziehungen

OO Softwareentwicklung

Erweiterungen Webportal

Human-Computer-Interaction und Psychologie Aufgaben- und Kontextanalyse

Mobilgeräteverwaltung

Universität Bremen. Entwurfsmuster. Thomas Röfer. Wettbewerb Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster

1 Informationelle Systeme begriffliche Abgrenzung

HP Product Content Syndication Steigern Sie Ihre Add-to-Cart Rate in 3 einfachen Schritten

I Serverkalender in Thunderbird einrichten

Anleitung Postfachsystem Inhalt

MCRServlet Table of contents

Mehrere Diagramme zu einer Darstellung kombinieren

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Integration verteilter Datenquellen in GIS-Datenbanken

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

Lehrer: Einschreibemethoden

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Design Patterns. OO-GetTogether. Volker Michels

Wireless LAN PCMCIA Adapter Installationsanleitung

Software Engineering II (IB) Design Patterns

Workflows verwalten. Tipps & Tricks

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Anleitung über den Umgang mit Schildern

Moni KielNET-Mailbox

Kapitel 3 Bilder farblich verändern - Arbeiten mit Objekten

Die Captimizer BTZ-Datei 2015

Übungen zu Softwaretechnik

4 Aufzählungen und Listen erstellen

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

WinWerk. Prozess 6a Rabatt gemäss Vorjahresverbrauch. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang Effretikon

Software Engineering II (IB) Design Patterns

Typumwandlungen bei Referenztypen

8 Design Patterns. Events

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Studentische Lösung zum Übungsblatt Nr. 7

14 Design Patterns Einführung 14.2 Composite Pattern

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Sichern auf den zentralen TSM-Servern unter Windows. Sichern auf den zentralen TSM-Servern unter Windows

AutoSPARQL. Let Users Query Your Knowledge Base

5.2 Neue Projekte erstellen

Transkript:

Behavioral Patterns Seminar Software-Entwurf WS 04/05 Przemyslaw Dul

Gliederung Design Pattern (Wiederholung) Einordnung Übersicht über die Kategorien: Creational,Structural,Behavioral Übersicht über die Behavioral Patterns Zwei Patterns im Detail Command, Chain Of Responsibility Aspekte: Kapselung der Variation Entkopplung von Sender und Empfänger 2

Design Patterns (Wiederholung) Lösungssammlung für Software-Design Probleme Geben Design-Erfahrungen an andere weiter Bessere Lehre Vermeiden/Verringern die Suche nach bereits vorhandenen Lösungen Steigerung der Effizienz Unterstützen die Kommunikation zwischen Entwicklern Leichtere Verständigung Dokumentieren Design-Entscheidungen Bessere Wartbarkeit 3

Einordnung Creational Structural Behavioral Design Patterns UML OO Analyse & Design OOP Software-Entwurf 4

Übersicht Creational Patterns erzeugen Objekte. Entscheiden flexibel welche Objekte für welchen Fall erzeugt werden sollen. Structural Patterns helfen bei der Gruppierung von Objekten in Strukturen, wie z.b. komplexe User Interfaces. Behavioral Patterns stellen die Kommunikation zwischen Objekten her und helfen bei der Steuerung des Ablaufs der Kommunikation. 5

Übersicht Creational Structural Behavioral Abstract Factory Adapter Chain of Responsibility Builder Bridge Command Factory Composite Interpreter Prototype Decorator Iterator Singleton Facade Mediator Flyweight Memento Proxy Observer State Strategy Template Visitor 6

Chain of Responisibility Entkoppelt den Sender einer Nachricht von seinem Empfänger, Indem die Empfänger verkettet werden Und die Anfrage entlang der Kette geleitet wird Bis ein Empfänger die Anfrage erledigt. Behavioral Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Visitor 7

Command Kapselt einen Befehl als ein Objekt. Trennt die Ausführung eines Befehls von der Umgebung, die ihn erzeugt. Befehle können als Parameter übergeben werden. Befehle können in eine Queue oder in einen Stack gestellt werden Um z.b. Operationen rückgängig zu machen. Behavioral Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Visitor 8

Interpreter Definiert eine Repräsentation einer Grammatik zu einer Sprache Sowie einen Interpreter, um die Sätze in dieser Sprache zu interpretieren. Z.B. für reguläre Ausdrücke, kleine Grammatiken. Behavioral Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Visitor 9

Iterator Ermöglicht den sequentiellen Zugriff auf die Elemente eines zusammengesetzten Objektes. Die zugrundeliegende Repräsentation wird nicht offengelegt. Behavioral Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Visitor 10

Mediator Fördert die lose Kopplung von miteinander kommunizierenden Objekten, Indem eine Klasse das Zusammenspiel einer Menge von Objekten kapselt. Die Objekte müssen also nicht aufeinander explizit Bezug nehmen. Ermöglicht das Zusammenspiel unabhängig von diesen Objekten zu variieren. Behavioral Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Visitor 11

Memento Erfasst und externalisiert (für Speicherung) den internen Zustand eines Objekts. Seine Kapselung wird dabei nicht aufgegeben. Objekt kann später in diesen Zustand zurückversetzt werden. Behavioral Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Visitor 12

Observer Ändert sich der Zustand eines Objektes, so werden alle seine Beobachter darüber informiert. Nützlich bei 1-zu-N Abhängigkeitsbeziehungen. Behavioral Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Visitor 13

State Ein Objekt ändert sein Verhalten, wenn sein interner Zustand sich ändert. Nützlich wenn das Verhalten von mehreren Methoden vom aktuellen Zustand abhängt, Und flexibel weitere Zustände hinzugefügt werden sollen. Behavioral Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Visitor 14

Strategy Kapselt einen Algorithmus in eine Klasse. Macht Algorithmen austauschbar. Nützlich bei Familien von Algorithmen. Behavioral Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Visitor 15

Template In einer abstrakten Klasse wird das Skelett eines Algorithmus definiert. Einzelne Schritte werden an Unterklassen delegiert. Unterklassen können bestimmte Schritte gestalten, Ohne die Struktur des Algorithmus zu verändern. Behavioral Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Visitor 16

Visitor Kapselt Operationen auf Elementen einer Objektstruktur (z.b. Baum) als Objekt. Es lassen sich einfach neue Operationen definieren, Ohne die Klassen der zu bearbeitenden Elemente zu verändern. Behavioral Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Visitor 17

Schema von Patterns Pattern Motivation / Kontext Behavioral Chain of Responsibility Command Struktur Anwendbarkeit Konsequenzen / Auswirkungen Beispiel / Implementierung 18

Command Pattern - Motivation Kapselung eines Befehls für GUI-Elemente (Menüs, Buttons, Toolbars usw.) als Objekt. GUI-Elemente brauchen nicht zu wissen, was der Befehl tut. Befehls-Objekte können herumgereicht und gespeichert werden. 19

Command Pattern - Struktur Client Caller Command {abstract} execute() : void {abstract} Receiver receiver ConcreteCommand action() : void execute() : void receiver.action(); 20

Command Pattern - Anwendbarkeit Um Objekte mit einer auszuführenden Aktion zu parametrisieren. Um Aktionen zu unterschiedlichen Zeitpunkten spezifizieren, aufreihen und ausführen zu lassen. Um Undo zu unterstützen, indem das Command-Objekt alle relevanten Informationen für Umkehr speichert. Protokollierung von Änderungen, Speichern und Laden. Transaktionen (Menge von Datenänderungen) modellieren. 21

Command Pattern - Konsequenzen Entkopplung des Auslösers eines Befehls vom Umsetzer. Befehlsobjekte können verändert und erweitert werden. Befehlsobjekte können zu eine Befehlsobjekt zusammengeführt werden. (Composite-Pattern) Einfaches Hinzuzufügen von neuen Befehlen, da keine existierenden Klassen geändert werden müssen. 22

Command Pattern - Beispielimplementierung public class Client extends JFrame { public Client(){ HideAction hideaction = new HideAction(); JButton button = new JButton(hideAction); add(button); } } public class HideAction extends AbstractAction { public void actionperformed(actionevent e) { setvisible(false); } } client hideaction button new HideAction() new JButton(hideAction) setvisible(false) actionperformed(...) 23

Chain of Responsibility - Motivation Implementierung eines kontextsensitiven Hilfesystems für eine GUI. User erhält Hilfe für den ausgewählten Teil. Button liefert in einem Dialog andere Hilfe, als ähnlicher Button im Hauptfenster. Falls keine spezifische Hilfe, eine allgemeine Hilfe angezeigen. 24

Chain of Responsibility - Struktur Client Handler - nexthandler: Handler {abstract} +* handlerequest() : void {abstract} ConcreteHandler + handlerequest() : void ConcreteHandlerB + handlerequest() : void 25

Chain of Responsibility - Anwendbarkeit Wenn mehr als ein Objekt eine Anfrage bearbeiten können soll und a priori nicht feststeht welches. Wenn eine Anfrage an einen von mehreren Empfängern gerichtet wird, ohne den Empfänger explizit anzugeben. Wenn die Menge der Empfänger und die Wahl des Empfängers dynamisch sein sollen. 26

Chain of Responsibility - Konsequenzen Reduktion der Kopplung zwischen Sender und Empfänger nur noch Referenz auf den Nachfolger, statt auf alle mgl. Empfänger. Mehr Flexibilität bei der Zuweisung von Zuständigkeiten durch Änderung der Kette zur Laufzeit. Aber keine Abarbeitungs-Garantie da kein expliziter Empfänger vorhanden, oder wenn die Kette nicht richtig konfiguriert ist. 27

Chain of Responsibility - Implementierung HelpHandler - hhandler: HelpHandler +* handlehelp() : void handler.handlehelp() Application Widget Dialog Button + handlehelp() : void + showhelp() : void if(can handle){ showhelp(); } else { super.handlehelp(); } 28

Kapselung der Variation Strategy kapselt einen Algorithmus. State kapselt zustandsabhängiges Verhalten. Mediator kapselt das Protokoll zw. Objekten. Iterator kapselt die Art des Zugriffs und die Traversierung von Elementen eines Objektes. 29

Entkopplung von Sender und Empfänger Command: Durch definition der Sender-Empfängerbeziehung in einem separaten Objekt, kann Sender mit verschiedenen Empfängern zusammenarbeiten. Chain Of Responsibility: Durch Weiterleitung einer Anfrage entlang der Kette von mgl. Empfängern. Mediator: Durch indirekte Interaktion durch das Mediator Objekt. Observer: Durch definition einer Schnittstelle zur Signalisierung von Änderungen. 30

Das Beste zuletzt! Bis auf wenige Ausnahmen ergänzen sich Behavioral Patterns. Chain of Resposibility kann das Command Pattern verwenden, um Anfragen als Objekte zu repräsentieren. Behavioral Patterns arbeiten gut mit anderen Patterns zusammen. Das Composite-Pattern kann das Visitor-Pattern verwenden, um Operationen auf den Komponenten in der Komposition anzuwenden. 31