Entwurfsmuster (Software Design Patterns) Verhaltens-Entwurfsmuster

Slides:



Advertisements
Ähnliche Präsentationen
Objektrelationales Mapping mit JPA
Advertisements

der Universität Oldenburg
der Universität Oldenburg
Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
Modellgetriebene Softwareentwicklung
Harald Köbler Software Design Patterns Prototype.
Design Patterns- Entwurfsmuster
Verbs Used Impersonally With Dative Deutsch I/II Fr. Spampinato.
Java: Dynamische Datentypen
Cassey - Common Answer Set Evaluation sYstem Jean Gressmann Benjamin Kaufmann Robert Lenk.
Sebastian Grahn Sebastian Kühn
Modellierung der Zugriffslogik auf Datenbanktabellen Software Component Technology for Distributed Applications Andreas Fink.
Explizite und editierbare Metainformationen für Software Muster.
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Entwurfsmuster – Iterator
Software Design Patterns Creational Patterns Structural Patterns Behavioral Patterns –Behavioral Class Patterns Interpreter Template Method Pattern –Behavioral.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
Kollektionstypen (1) Es sind polymorphe Typkonstruktoren, jeweils als Sorten- und als Klassenkonstruktor (t,v beliebige Typen): –set, Set :Ungeordnete.
Forschungszentrum Informatik, Karlsruhe Objektorientierte Systeme unter der Lupe Markus Bauer Oliver Ciupke.
Can you think of some KEY phrases which would be useful in multiple contexts? Take 2 minutes with a partner and come up with as many as you can!
Institut AIFB, Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Towards Automatic Composition of Processes based on Semantic.
| DC-IAP/SVC3 | © Bosch Rexroth Pneumatics GmbH This document, as well as the data, specifications and other information set forth in.
Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. M. Thaller AM1: Re-usable Content in 3D und Simulationssystemen.
You need to use your mouse to see this presentation © Heidi Behrens.
Informatik 1 Letzte Übung.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Dynamische Datentypen
Design Patterns Ein Muster (pattern) ist eine Idee, die sich in einem praktischen Kontext als nützlich erwiesen hat und dies auch in anderen sein wird.
Clean Code Software-Entwicklung als Handwerkskunst Thomas Nagel, November 2011.
Objectives Verstehen was unterDelegate verstanden wird
Software Development Principles Stefan Lieser Web:
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Software Design Patterns
Present Tense in German and … The Danger Zone Regular Present Tense Verbs ► Regular verbs in German follow a pattern. ► This makes regular verbs very.
Lust auf Lesen Treffpunkt Deutsch Sixth Edition. Relative Pronoun object of a preposition Recall from chapter 9 that relative clauses describe people,
Nominative & Accusative Basic Rules for Relative Pronouns in German:
Weak pushover verbs..... lieben kaufen spielen suchen....are verbs that do exactly as they are told. They stick to a regular pattern that does not change!
Listening Comprehension Kapitel 8 (Lehrbuch KONTAKTE) Thema: Essen und Einkaufen Level: 2. Semester Deutsch at University Level.
Synchronization: Multiversion Concurrency Control
Literary Machines, zusammengestellt für ::COLLABOR:: von H. Mittendorfer Literary MACHINES 1980 bis 1987, by Theodor Holm NELSON ISBN
Alltagsleben Treffpunkt Deutsch Sixth Edition
Einführung in die Programmierung mit Java
Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.
Statistiken beschreiben
Gregor Graf Oracle Portal (Part of the Oracle Application Server 9i) Gregor Graf (2001,2002)
Wie gefällt dir … ? Sven Koerber-Abe, 2013.
Imperfekt (Simple Past) Irregular or strong verbs
Kapitel 2 Grammar INDEX 1.Subjects & Verbs 2.Conjugation of Verbs 3.Subject Verb Agreement 4.Person and Number 5.Present Tense 6.Word Order: Position of.
Here‘s what we‘ll do... Talk to the person sitting in front of you. Introduce each other, and ask each other questions concerning the information on your.
Strategy Pattern Teachlet Autor: Sven Wende Replay durch Stephan Schwake Konzepte objektorientierter Programmiersprachen, SS 2006.
Guten Tag, Deutsch 1! Heute ist der 14. Dezember Jetzt: Mach Übung J im Heft. Später: Stem-changing verbs! das Ziel: Conjugations of stem- changing verbs.
Sven Koerber-Abe, 2015 Grammatik: können, wollen, möchten Grammatik: können, wollen, möchten.
Sven Koerber-Abe, 2015 Grammatik: müssen, dürfen Grammatik: müssen, dürfen.
Position Sven Koerber-Abe, 2015 ▪ ▪. in Der PC ist in ___ Box.
Dativ Sven Koerber-Abe, 2015.
On the case of German has 4 cases NOMINATIVE ACCUSATIVE GENITIVE DATIVE.
German “ da - compounds ” Provided by deutschdrang. com for individual and classroom use only. May not be reproduced for any other purposes.
Sven Koerber-Abe, 2016 Grammatik: Artikel (Zusammenfassung) Grammatik: Artikel (Zusammenfassung)
Essay structure Example: Die fetten Jahre sind vorbei: Was passiert auf der Almhütte? Welche Bedeutung hat sie für jede der vier Personen? Intro: One or.
German Stem-Vowel Changing Verbs
FREE ICONS POWERPOINT TEMPLATE.
Aspect-Oriented Programming: Fad or the Future
Synonyms are two or more words belonging to the same part of speech and possessing one or more identical or nearly identical denotational meanings, interchangeable.
Grammatik: Perfekt Sven Koerber-Abe, 2014.
Grammatik: waren / hatten
Dativ Sven Koerber-Abe, 2015.
Grammatik: Perfekt Sven Koerber-Abe, 2014.
Grammatik: Position Sven Koerber-Abe, 2013.
 Präsentation transkript:

Entwurfsmuster (Software Design Patterns) Verhaltens-Entwurfsmuster Übung Softwareentwicklung 2 für Wirtschaftsinformatik Entwurfsmuster (Software Design Patterns) Verhaltens-Entwurfsmuster Überblick

Entwurfsmuster: Dekorierer / Decorator Überblick

Entwurfsmuster: Dekorierer / Dekorator Problem: Manchmal möchte man zusätzliche Struktur und Verhalten einem Objekt nicht jedoch gleich einer ganzen Klasse (z.B.: durch Vererbung) zuorgnen. Lösung: Die Instanz eines Dekorierers wird vor die zu dekorierende Klasse geschaltet. Der Dekorierer hat die gleiche Schnittstelle wie die zu dekorierende Klasse. Aufrufe an den Dekorierer werden dann verändert oder unverändert weitergeleitet (Delegation), oder sie werden komplett in Eigenregie verarbeitet. Der Dekorierer ist dabei "unsichtbar", da der Aufrufende gar nicht mitbekommt, dass ein Dekorierer vorgeschaltet ist. In einer alternativen Variante kann der Dekorierer als eine Strategie eingebunden und explizit aufgerufen werden. Überblick

Entwurfsmuster: Dekorierer / Dekorator Ein Textfeld soll mit einer Umrahmung "dekoriert" werden. Zwischen den Aufrufer und das Textfeldobjekt wird das entsprechende Dekoriererobjekt eingefügt. Das Dekoriererobjekt erzeugt die Umrahmung, ein weiteres das Scrolling und übergibt den Kontrollfluss an das Textfeld. Da der Dekorierer dieselbe Schnittstelle hat, ändert sich aus der Sicht des Aufrufers nichts. aComponent VisualComponent draw() TextView Decorator draw() component.draw() ScrollDecorator BorderDecorator super.draw() scrollTo() scrollPosition borderWidth draw() scrollTo() draw() drawBorder() super.draw() drawBorder() aBorderDecorator aScrollDecorator aTextView Überblick

Entwurfsmuster: Dekorierer / Dekorator component component aBorderDecorator aScrollDecorator aTextView aBorderDecorator aScrollDecorator aTextView draw() (super.)draw() (super.)draw() scrollTo() drawBorder() Überblick

Entwurfsmuster: Dekorierer / Dekorator Vorteile: Es können mehrere Dekorierer hintereinandergeschaltet werden Die zu dekorierende Klasse ist nicht unbedingt festgelegt (wohl aber deren Schnittstelle) Die Dekorierer können zur Laufzeit und sogar nach der Instantierung ausgetauscht werden Lange, unübersichtliche Vererbungshierarchien werden vermieden. Nachteile: Eventuell müssen viele Methoden implementiert werden, welche die Aufrufe lediglich weiterleiten. Erweiterungen der zu dekorierenden Klasse werden unabsichtlich versteckt. Der Aufbau der Dekorierer-Instanzen wird komplexer. Als Hilfe kann dazu das Entwurfsmuster des Erbauer (Builder) dienen. Überblick

Entwurfsmuster: Besucher / Visitor Überblick

Entwurfsmuster: Besucher / Visitor Problem: Die Integration verschiedener nicht miteinander verwandter Operationen in die Klassen einer Objektstruktur gestaltet sich oft schwierig. Bei der Erweiterung um neue Operationen müssen alle Klassen erweitert werden. Zweck: dient der Kapselung einer auf Elementen einer Objektstruktur auszuführenden Operation. Lösung: Das Besuchermuster lagert die Operationen in externe Besucherklassen. Dazu müssen die zu besuchenden Klassen jedoch eine Schnittstelle zum Empfang eines Besuchers definieren. Vorteil: Definition neuer Operationen ist dadurch ohne Veränderung der betroffenden Elementklassen möglich. Überblick

Entwurfsmuster: Besucher / Visitor Verwendung: Generell empfiehlt sich die Verwendung von Besuchern, wenn: viele unterschiedliche, nicht verwandte Operationen auf einer Objektstruktur realisiert werden sollen, sich die Klassen der Objektstruktur nicht verändern, häufig neue Operationen auf der Objektstruktur integriert werden müssen oder ein Algorithmus über die Klassen einer Objektstrukur verteilt arbeitet, aber zentral verwaltet werden soll. Überblick

Entwurfsmuster: Besucher / Visitor visitConcreteElementA(ConreteElementA) visitConcreteElementB(ConreteElementB) ConcreteVisitor1 ConcreteVisitor2 visitConcreteElementA(concreteElementA) visitConcreteElementB(concreteElementB) visitConcreteElementA(concreteElementA) visitConcreteElementB(concreteElementB) ListOfObjects Element accept(v::Visitor) ConcreteElementA ConcreteElementB accept(v::Visitor) OperationA() accept(v::Visitor) OperationB() v.visitConcreteElementA(this) v.visitConcreteElementB(this) Überblick

Entwurfsmuster: Besucher / Visitor listOfObjects aConcreteElement aConcreteVisitor doSomething() for some elements in listOfObjects accept(v::Visitor) visit(this) operationA() Überblick

Entwurfsmuster: Zuständigkeitskette / Chain of Responsibility Überblick

Entwurfsmuster: Zuständigkeitskette / Chain of Responsibility Problem: Vermeidung der Kopplung des Senders und Empfänger einer Anfrage. Zweck: Trennung von Sender und Empfänger um mehreren Objekten die Möglichkeit zu geben die Anfrage zu beantworten. Weiterleitung der Anfrage an weitere Objekte um ein Objekt zu finden, dass die Anfrage bearbeiten kann. Verwendung: mehr als ein Objekt sind in der Lage eine Anfrage zu beantworten und der Empfänger ist a priori nicht bekannt und soll automatisch bestimmt werden können. senden einer Anfrage an eine Reihe von Objekten ohne das empfangende Objekt explizit zu spezifizieren. Menge der Objekte, die eine Anfrage beantworten können soll zu Laufzeit bestimmt werden. Überblick

Entwurfsmuster: Zuständigkeitskette / Chain of Responsibility Vorteile: Reduzierung der Kopplung Flexibilisierung der Zuteilung von Aufgaben Nachteil: Beantwortung der Anfrage ist nicht garantiert, da ev. sich keiner verantwortlich "fühlt" Überblick

Entwurfsmuster: Zuständigkeitskette / Chain of Responsibility successor Client Handler handleRequest() canHandle() ConcreteHandler1 ConcreteHandler2 handleRequest() canHandle() doSomething() handleRequest() canHandle() doSomething() if(canHandle()) { doSomething() } else { // deligate successor.handleRequest() } Überblick

Patterns: Generating patterns Abstract Factory goal: generating an object with well defined interface but of variable dynamic type solution: object is not created by a constructor but through requesting it from a factory object Factory Method solution: analog to Abstract Factory; class let sub-class generate the object Prototype solution: creation of an object as "copy" of a prototype Überblick

Patterns: Structural Patterns Family goal: clustering of variants solution: abstract class with sub-classes Adapter (Wrapper) goal: make classes fit to a family solution: new family member that redirects messiges to the class Composite goal: composite object that are treated as single entities solution: composite object is part of the family Decorator goal: add new behavior to a class without changing the class or sub-classing solution: message interception Proxy goal: replacement for another object solution: object with same interface replaces the original object, like decorator but adds no new behavior Überblick

Patterns: Structural Patterns Facade goal: access point for a sub-system solution: additional object as mediator between the client and the sub-system Twin goal: modeling multiple inheritance solution: twins coupling objects bidirectional Überblick

Patterns: Behavioural Patterns Iterator goal: iterate through a set of object without knowing the structure of the set solution: iterator hides the set-specific operations Visitor goal: iterate over a homogeneous data structure, but invoking different operations solution: double dispatching - visitor is called back by the visited object Observer goal: object is informed about state changes of observed object solution: observers sub-scribe to observed object and get notified as soon as state changes Strategy goal: changing behaviour solution: changing behaviour realized as class family which is referenced by the invoking object Überblick

Patterns: Behavioural Patterns Message Object goal: message as data package solution: message classes containing the actual message form a family Template Method goal: structure of an algorithm which should contain some variable parts solution: steps of the algorithm as abstract methods which are overridden in the sub-classes Chain of Responsibility goal: passing messages from object to object solution: chainging object of event handlers Überblick