Design Patterns. 3. Juni 2015

Ähnliche Dokumente
Design Patterns. 5. Juni 2013

Entwurfsprinzip. Entwurfsprinzip

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Ein Entwurfsmuster der GoF. vorgestellt von. Sigrid Weil 16. Januar 2008

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

Objektorientierte und Funktionale Programmierung SS 2014

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

Software-Architektur Design Patterns

Entwurfsmuster Martin Fesser 00IN

Structural Patterns. B. Sc. Andreas Meißner

Entwurfsmuster in Java

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

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

Lukas Klich. Projektgruppe SHUTTLE. Seminar: Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1. Entwurfsmuster

Einführung in die Informatik II

Entwurfsmuster - Iterator & Composite

Model-View-Controller

3. Entwurfsmuster zur Entkopplung von Modulen. Übersicht zu Entwurfsmustern

Decorator Pattern. Analyse- und Design-Pattern CAS SWE FS14. Roland Müller Samuel Schärer

3. Entwurfsmuster zur Entkopplung von Modulen

14 Design Patterns Einführung 14.2 Composite Pattern

Software-Refactoring. 29. Mai 2013

Vorlesung Programmieren

DESIGN'PATTERN'2011. November. Abstract Factory & Factory Method BEARBEITET VON INHALT [1] Christoph Süsens

Design Pattern. Motivation, Beispiel Definition "Das" Buch der Gang of Four Ausführliches Beispiel: Facade Beispiele. Aufgabe

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

Software Engineering. Sommersemester 2012, Dr. Andreas Metzger

Software Engineering. 10. Entwurfsmuster II. Franz-Josef Elmer, Universität Basel, HS 2015

Wahlpflichtfach Design Pattern

Übersicht. Softwarearchitektur. Softwarearchitektur, UML, Design Patterns und Unit Tests. Softwarearchitektur

Hausarbeit - Software-Design-Pattern

Design Patterns mit Java

Software Engineering. 7. Entwurfsmuster

Objektorientierte Entwurfsmuster

185.A Software-Entwurfsmuster 1 OOP. Software-Entwurfsmuster

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen

Software-Refactoring. 27. Mai 2015

Informatik II Übung 6 Gruppe 7

Vorlesung Programmieren. Software Design. Software Design. Entwurfsmuster

Software Engineering. 11. Entwurfsmuster III. Franz-Josef Elmer, Universität Basel, HS 2015

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

Entwurfsmuster. Martin Wirsing. in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06

Factory Method (Virtual Constructor)

Erzeugungsmuster (nach Gang of Four )

Seminar Software Design Pattern

Lehrplan: Architektur und Design. paluno

Specifying Patterns for Dynamic Pattern Instance Recognition with UML 2.0 Sequence Diagrams. Lothar Wendehals. Universität Paderborn

Software Engineering

Design Patterns und C#

Objektorientierte Programmierung OOP

Software Reuse Sommer Schritt 1: Rechtschreibung, Grammatik, Wortschatz, Semantik Schritt 2: Vertiefung

Programmierkurs C++ Abstrakte Klassen und Methoden

Software Design Patterns: Paket Kommando

Bekannte Lösungen für bekannte Probleme benutzen. Entwurf auf höherer Abstraktionsebene als bei Programmiersprachen

Software-Entwurfsmuster

Präsentation Interfaces

Drucken, GUI, Design Pattern,... PDF, Usability, Observer Pattern, MVC

Programmieren 2 Java Überblick

Einstieg in die Informatik mit Java

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Systematisches Testen der Funktionalität von Softwaresystemen. 17. Juni 2015

Konstruktion anpassbarer Software

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

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Modellarbeit I: Entwurfsgerechte Klassenmodellierung

Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster

Kapitel 4: Klassen und Unterklassen

Programmierung im Grossen

Verhaltensmuster. Modellieren von komplexem Verhalten

Merkliste SoSy. V Modell. Anforderungen. Eigenschaften VKKNERV. Ermittlung FBI WAS. Volerekarte Punkte KKKMUH

Auf einen Blick. 1 Einführung Funktionen und funktionale Aspekte Objektorientierte Programmierung mit JavaScript...

Objekt-Komposition versus Vererbung: Decorator-Design-Pattern

Einführung in Google Web Toolkit

ORACLE Business Components for Java (BC4J) Marco Grawunder

UML (Unified Modelling Language) von Christian Bartl

Comparing Software Factories and Software Product Lines

Entwurfsmuster und Frameworks Singleton

Software Design basierend auf dem Plug-In Konzept

Objektorientiertes Software-Engineering

Markus Knauß, Entwurfsmuster. Markus Knauß Entwurfsmuster

Software-Projekt. Prof. Dr. Rainer Koschke. Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen

Wahlpflichtfach Design Pattern

8 Design Patterns. Events

Software Engineering Entwurfsmuster (update: 11.6.)

Inhaltsverzeichnis ... Danksagung 11. Einführung 13. Wie Sie Ihr erstes objektorientiertes Programm schreiben 23

Objektorientierte Analyse (OOA) OOA-Pattern

Codegenerierung mit Xtend. 21. Januar 2015

Transkript:

Design Patterns 3. Juni 2015

Überblick Was sind Design Patterns? Welche Design Patterns gibt es? Wann sollte man Design Patterns einsetzen? Taentzer Softwarequalität 2015 138

Was sind Design Patterns? Muster, die sich im Softwareentwurf bewährt haben Gute Design Patterns entstammen direkt der Praxis. Antwort auf wiederkehrende Probleme im SW-Entwurf kein fertiges Stück Code, das direkt in eigenen Code gesetzt werden kann eher eine Art Schablone für die Lösung eines Problems Kritik: Design Patterns müssen immer wieder neu implementiert werden. Literatur: E.Gamma, R. Helm, R. Johnson, J. Vlissides: Design Patterns: Elements of Reusable Object-Oriented Software(ISBN 0-201- 63361-2), http://en.wikipedia.org/wiki/design_patterns_(book) Taentzer Softwarequalität 2015 139

Sinn und Zweck von Design Patterns Zwecke: Stärkere Modularisierung von Software Integration von unabhängig entwickelten Komponenten Variantenmanagement: Gemeinsamkeiten von Objekten herauskehren, sodass verschiedene Objekte gleich behandelt werden können Arten: Erzeugungsmuster: AbstractFactory, Builder, Singleton, etc. Strukturmuster: Adapter, Decorator, Fassade, Composite, Proxy, etc. Verhaltensmuster: Observer, Visitor, Iterator, Strategy, etc. Taentzer Softwarequalität 2015 140

Patterns zur Objekterzeugung Anforderungen: Das Einlesen soll von der eigentlichen Anwendungslogik getrennt werden. (Warum?) Nutzern einer Komponente sollen keine Implementierungsdetails gezeigt werden. Eine komplexe Objektstruktur soll aus verschiedenen Formaten einlesbar sein. Taentzer Softwarequalität 2015 141

Patterns zur Objekterzeugung Singleton schränkt die Objekterzeugung einer Klasse auf eine Instanz ein. Prototype erzeugt Objekte durch Klonen einer Vorlage, die anschließend modifiziert werden kann. Abstract Factory gruppiert zusammengehörige Objekt-Factories und abstrahiert von diesen. Factory method erzeugt Objekte ohne Spezifikation der erzeugenden Klasse. Builder konstruiert komplexe Objekte separat von ihrer Repräsentation. Derselbe Konstruktionsprozess kann so auf verschiedene Repräsentationen angewendet werden. Taentzer Softwarequalität 2015 142

Beispiel: Ausgabe in verschiedenen Formaten Eine Artikelliste soll im JSON- oder XML-Format ausgegeben werden. Jeder Artikel gehört zu einer Kategorie, hat einen Namen und einen Preis. Es können beliebig viele Kategorien definiert sein. Beispiel für das Builder Pattern Processor process(list<item> list) for (item: list) { switch item.type case ARTICLE: writer.printarticle(item); case CATEGORY: writer.printcategory(item); } writer ItemWriter + printarticle(item i) + printcategory(item i) + getresult(): File JsonWriter XmlWriter Taentzer Softwarequalität 2015 143

Builder Pattern Builder: Schnittstelle für das Erzeugen von Objekten ConcreteBuilder: Konkrete Implementierung der Objekterzeugung en.wikipedia.org/wiki/builder_pattern Taentzer Softwarequalität 2015 144

Patterns für Variantenmanagement Anforderungen: Redundanzen in Programmen sollen reduziert werden, indem Gemeinsamkeiten einer Menge von Objekten herausfaktorisiert und nur an einer Stelle beschrieben werden. Selektion von konkreten Varianten eventuell erst zur Laufzeit Welche Arten von Redundanzen können auftreten? Strukturen gleichartiger Objekte Algorithmen mit verschiedenen Varianten Taentzer Softwarequalität 2015 145

Patterns für Variantenmanagement Ziel: Gemeinsamkeiten von Objekten werden herausgekehrt, sodass verschiedene Objekte gleich behandelt werden können. Superclass: ziehe Gemeinsamkeiten von Objekten in eine gemeinsame Oberklasse Delegation: leite Aufgaben von Klasse A an Klasse B weiter (Abstract) Factory: bündele die Erzeugung von zusammengehörigen Objekten in einer Klasse Composite: behandle Teil- Ganzes-Hierarchien, atomare und komponierte Objekte werden gleichartig behandelt Strategy: erstelle eine gemeinsame Schnittstelle für verschiedene Varianten von Algorithmen Decorator Pattern: füge zusätzliche Funktionalität während der Laufzeit zu Taentzer Softwarequalität 2015 146

Delegation Pattern Beispiel: Wie kann man einen Stack implementieren? Client stack Stack push() pop() list List add() remove() Ein Objekt zeigt Funktionalität nach außen, die es intern an andere delegiert. ein grundlegendes Pattern zur Abstraktion von Implementierungen Taentzer Softwarequalität 2015 147

Beispiel: Strukturierung von graphischen Oberflächen Es soll möglich sein, graphische Sichten hierarchisch aufzubauen. Sichten können Gruppen von Sichten enthalten. Verschiedene Arten von Sichten sollen möglichst flexibel kombinierbar sein. Taentzer Softwarequalität 2015 148

Beispiel: Strukturierung von graphischen Oberflächen Einzelne Sichten und Gruppen von Sichten werden möglichst ähnlich behandelt. Beispiel für das Composite Pattern View display() PrimitiveView ViewGroup Button TextView StackView ListView Taentzer Softwarequalität 2015 149

Composite Pattern Einzelne Instanzen und Gruppen von Instanzen können gleich behandelt werden. Atomic Component Composite Varianten: Es kann verschiedene Arten von atomaren Objekten geben: Unterklassen von Atomic Es kann verschiedene Arten von zusammengesetzten Objekten geben: Unterklassen von Composite Taentzer Softwarequalität 2015 150

Beispiel: Verschiedene Formatierungen derselben Struktur Eine graphische Oberfläche soll in verschiedenen Sichten spezifiziert werden. Eine Formatierung erzeugt eine spezielle Instanz einer Struktur. Taentzer Softwarequalität 2015 151

Beispiel: Verschiedene Formatierungen derselben Struktur Structure strat FormatingStrategy print() Beispiel für das Strategy Pattern TreeFormat XMLFormat GraphicalFormat FormatingStrategy strat; switch output.type case TREE: strat = new TreeFormat(); strat.print(); case XML: //. Taentzer Softwarequalität 2015 152

Strategy Pattern Entkopple die Formatierung von der Struktur Kapselung einer Familie von Algorithmen durch eine Schnittstelle Ein allgemeines Verhalten wird durch konkretes Verhalten spezialisiert. en.wikipedia.org/wiki/strategy_pattern Taentzer Softwarequalität 2015 153

Beispiel: Verschönerung der Benutzerschnittstelle Mögliche Verschönerungen für einen ListView: Trenner zwischen Einträgen Scroll Bar, um lange Listen anzuzeigen Ein Suchfeld Anforderungen: Das Benutzerschnittstellenobjekt soll über die Verschönerungen nichts wissen. Explosion von Klassen vermeiden: Eine Lösung durch Vererbung würde eine Unterklasse per Kombination von Verschönerungen erzeugen. Taentzer Softwarequalität 2015 154

Beispiel für das Decorator Pattern Beispiel: Verschönerung der Benutzerschnittstelle Application lv AbstractListView draw() AbstractListView lv; lv = new SearchDecorator( new ScrollBarDecorator( new ListView)) ListView ListDecorator - decoratedlistview ScrollBarDecorator SearchDecorator Taentzer Softwarequalität 2015 155

Decorator Pattern Das Pattern kann einem Objekt weitere Funktionalität hinzufügen. Alternative zur Vererbung: Unterklassen fügen Funktionalität während der Übersetzung zu. Das Decorator-Pattern kann Objekt während der Laufzeit mit neuem Verhalten versehen. Mehrere Dekorierungen eines Objekts sind möglich. Verschiedene Reihenfolgen werden berücksichtigt. en.wikipedia.org/wiki/decorator_pattern Taentzer Softwarequalität 2015 156

Zusammenfassung Design Patterns kondensieren das Wissen von erfahrenen Softwareentwicklern. Design Patterns tragen konstruktiv zur Qualitätssicherung bei. keine nennenswerte Werkzeugunterstützung Links zu Design Patterns sourcemaking.com/design_patterns Wikipedia-Seiten Nächste Woche: weitere Design Patterns Refactoring to Patterns Taentzer Softwarequalität 2015 157