Wahlpflichtfach Design Pattern

Ähnliche Dokumente
Entwurfsmuster Martin Fesser 00IN

Design Patterns II. Der Design Muster Katalog. Prof. Dr. Nikolaus Wulff

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

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

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

Entwurfsmuster in Java

Entwurfsmuster. Tao Zhang Technische Universität München Lehrstuhl für Angewandete Softwaretechnik

Structural Patterns. B. Sc. Andreas Meißner

Verhaltensmuster. Entwurfsmuster - Design Patterns. HAW Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik

Design Patterns. (Software-Architektur) Prof. Dr. Oliver Braun. Letzte Änderung: :12. Design Patterns 1/26

Entwurfsmuster. Marc Monecke

Tutorium Softwaretechnik I

Objektorientierte und Funktionale Programmierung SS 2014

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

Wahlpflichtfach Design Pattern

Entwurfsmuster (Design Patterns)

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Design Patterns. OO-GetTogether. Volker Michels

Entwurfsmuster Design Patterns by Erich Gamma et al.

Design Patterns. 3. Juni 2015

Tutorium Softwaretechnik I

Matthias Geirhos. Entwurfsmuster. Das umfassende Handbuch. Rheinwerk. Computing

Entwurfsprinzip. Entwurfsprinzip

Einführung in die Informatik II

Software Engineering II (IB) Design Patterns

Software-Entwurfsmuster

Software Engineering II (IB) Design Patterns

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen

Design-Patterns-Katalog

Strategy & Decorator Pattern

Software-Architektur Design Patterns

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

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

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

Software Engineering. 7. Entwurfsmuster

Objektorientierte Entwurfsmuster

Software Design Patterns Zusammensetzung. Daniel Gerber

Zweck: sequentieller Zugriff auf Elemente eines Aggregats

Auf einen Blick. 1 Einleitung Die Basis der Objektorientierung Die Prinzipien des objektorientierten Entwurfs...

Praxisbuch Objektorientierung

Entwurfsmuster - Iterator & Composite

Objektorientierte Systementwicklung

14 Design Patterns Einführung 14.2 Composite Pattern

Vorlesung Programmieren

Effizientes Programmieren

Entwurfsmuster - Iterator

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

Design Patterns. 5. Juni 2013

Wahlpflichtfach Design Pattern

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

Software-Entwurfsmuster

Lehrbuch der Objektmodellierung

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

Vorlesung Programmieren. Software Design. Software Design. Entwurfsmuster

Factory Patterns und deren Auswirkung auf die Softwarearchitektur in der Praxis

Erzeugungsmuster. Kapselung der Objekt-Erzeugung

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

Software-Entwurfsmuster (weitere) A01 OOP. Software-Entwurfsmuster (weitere)

Objektorientierte Programmierung

Programmiertechnik II WS 2017/18

Programmiertechnik II SS Fakultät Informatik Bachelor Angewandte Informatik

Entwurfsmuster. Die Entwurfsmuster Observer, State und Singleton am Beispiel einer Digital-Uhr

PHP OOP, Design Patterns und UML. Marco Skulschus

Übung 11: Klausurvorbereitung. Übung 11. Prüfungsvorbereitung Software Engineering WS16/17 Philipp Seltmann

Einführung in die objektorientierte Programmierung

Hausarbeit - Software-Design-Pattern

3. Entwurfsmuster zur Entkopplung von Modulen

Design Patterns (dt. Entwurfsmuster)

Übungen Softwaretechnik I

Lehrplan: Architektur und Design. paluno

Entwurfsmuster (Design Pattern) ETIS SS05

7. Zusammenfassung (1)

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

Entwurfsmuster Entkopplungs-, Varianten- und Zustandsmuster

Gernot Starke. Effektive Softwarearchitekturen. Ein praktischer Leitfaden ISBN: Weitere Informationen oder Bestellungen unter

Design Patterns I. Observer, Listener & MVC

Web Engineering-Seminar Methoden zur Web Modellierung: Object-oriented Hypermedia Method (OO-H)

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

Design Patterns mit Java

Transkript:

Wahlpflichtfach Design Pattern Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik miwilhelm@hs-harz.de http://www.miwilhelm.de Raum 2.202 Tel. 03943 / 659 338 FB Automatisierung und Informatik: Design Pattern 1

Inhalt 1. Einleitung 2. Singleton 3. Observer 4. Decorator 5. Abstract Factory 6. Command 7. Komposition 8. Strategie 9. Adapter vs. Bridge FB Automatisierung und Informatik: Design Pattern 2

Internet-Adressen www.dofactory.com/patterns/ www.patterndepot.com www.javapractices.com http://www.se.uni-hannover.de/documents/kurz-undgut/creational-patterns_tliro.pdf FB Automatisierung und Informatik: Design Pattern 3

Literatur Design Patterns Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides Holub on Patterns: Learning Design Patterns by Looking at Code, 978-1590593882 Entwurfsmuster, Klaus Quibeldey-Cirkel, 978-3-642-63632-5 Software Design Pattern, 978-1-156-60763-3 FB Automatisierung und Informatik: Design Pattern 4

Literatur Design Patterns Explained, 978-0-321-24714-8 Pattern-Oriented Software Architecture Volume 1, ISBN 978-0471958697 Pattern-Oriented Software Architecture Volume 2, ISBN: 978-0471606956 FB Automatisierung und Informatik: Design Pattern 5

Stand der Software-Entwicklung Krisis Softwarekrise geht zurück auf die mangelnde Ingenieurmäßigkeit im Software-Entwurf zurück aus Entwurfsmuster, Quibeldey-Cirkel FB Automatisierung und Informatik: Design Pattern 6

Stand der Software-Entwicklung Quelle: thingsdesigner.com FB Automatisierung und Informatik: Design Pattern 7

Hardware-Entwicklung CPU-Entwicklung Aufbau mit Grundelementen And-Gatter Or-Gatter Nand / Nor-Gatter Aufbau mit Modulen Wiederverwendbarkeit Mehrere Integer Units Mehrere Floating-Point Units FB Automatisierung und Informatik: Design Pattern 8

Hardware-Entwicklung Quelle: Wikipedia FB Automatisierung und Informatik: Design Pattern 9

Hardware-Entwicklung Quelle: allround-pc.com FB Automatisierung und Informatik: Design Pattern 10

Software-Entwicklung Grundelemente der Software-Entwicklung Sequenz Iteration Selektion Beispiele: Struktur vs. Code if (a<10) { max=44; } else { max=22; } mov ax, 22 cmp ax, 10 jl less mov bx, 22 jmp together less: mov bx,44 together: FB Automatisierung und Informatik: Design Pattern 11

Software-Entwicklung Wiederverwendung Ab einer gewissen Komplexität werden Entwickler Elemente wiederverwenden. Maximal 80 % des vorhandenen Quellcodes können wieder verwendet werden. Strukturentwurf ist besser als Quellcode Wiederverwendung durch Makros, Prozeduren Objekte Design Pattern Frameworks, Module Lehrbücher, Skripte, Laboraufgaben/Lösungen Erfahrungen eines Experten FB Automatisierung und Informatik: Design Pattern 12

Software-Entwicklung Anforderungen Entwickler-Bemerkungen: Die Anforderungen sind nicht komplett Die Anforderungen sind falsch Die Anforderungen sind irreführend Die Anwender sind irreführend Die Anforderungen erzählen nicht alles Selten: Not only were our requirements complete, clear and understandable, but they laid out all functionality we were going to need für the next five years (Designed Patterns Explained) FB Automatisierung und Informatik: Design Pattern 13

Software-Entwicklung Optimaler Entwurf? Einen optimalen Entwurf gibt es nicht. Beschränkte Resourcen: Budget Entwicklungszeit Rechenzeit des Anwenders Personal: Adding man power to a late project, makes it later (Brooks 75) Versuch und Irrtum Beispiele:Stundenplan, Schach FB Automatisierung und Informatik: Design Pattern 14

Software-Entwicklung Hierachien Konzeptuelle Schicht Repräsentiert das Konzept, die grobe Struktur. Quellcode darf nicht erscheinen. Wofür bin ich zuständig? Entwicklung der Klassen-Namen Spezifikations-Schicht Wie werden die Module, Methoden, benutzt? Entwicklung der Klassen-Methoden (Interfaces) Implementierung Wie löse ich meine Anforderungen? Quellcode in den Methoden FB Automatisierung und Informatik: Design Pattern 15

Entwurf objektorientierter Software ist nicht leicht Was sind Objekte? Was sind Attribute / Felder? Definition der Schnittstellen (get/set) Bestimmen der Methoden Abhängigkeit zwischen Objekten Verallgemeinerung Wiederverwendbarkeit FB Automatisierung und Informatik: Design Pattern 16

Definition von Muster mit Lösungsschemen Der Begriff des Musters wurde vom Architekten Christopher Alexander 1977 wie folgt definiert: Jedes Muster beschreibt ein in unserer Umwelt beständiges, wiederkehrendes Problem und erläutert den Kern der Lösung für dieses Problem, so dass Sie diese Lösung beliebig oft anwenden können, ohne sie jemals ein zweites Mal gleich auszuführen. FB Automatisierung und Informatik: Design Pattern 17

Ein Muster stellt also eine bewährte Lösung nach Art einer Schablone für ein häufiges Probleme bereit. So gesehen sind bereits die länger existierenden Algorithmensammlungen wie z.b. The Art of Computer Programming von Donald Knuth eine Katalogisierung von Mustern (vergl. [Gamma97, S.392]). Die Beschreibung eines Musters enthält im allgemeinen folgende Abschnitte: Name: Im Idealfall Charakterisierung der Auswirkungen des Musters in einem Wort. Zweck: Was macht das Muster? Was ist das Grundprinzip, was ist sein Zweck? Welches Problem, in welchem Umfeld macht den Einsatz des Musters sinnvoll? Auch bekannt als Struktur: Beschreibung des eigentlichen Musters, textuell und Klassen-, eventuell ein Sequenzdiagramm. Konsequenzen: Vor- und Nachteile, die durch den Einsatz des Musters in einem Entwurf entstehen. Implementierung: Der Abschnitt präsentiert die Fallen, Tipps oder Techniken, die man kennen sollten, wenn man das Muster einsetzt. FB Automatisierung und Informatik: Design Pattern 18

Klassifikation von Patterns Architektur Patterns Beschreiben die grundlegende Struktur eines Softwaresystems Client- Schicht, Server- Schicht und Daten- Schicht Design Patterns Beschreiben auch Strukturen, allerdings auf einer niedrigeren Ebene als Architektur Patterns Typischer Weise mit Klassen und deren Beziehung zueinander Kann somit zur Ausgestaltung von Teilsystemen führen Idioms Behandeln Detailprobleme die z.b. bei der Umsetzung von Design Pattern entstehen können Implementierungsaspekte Programmiersprachenspezifische Probleme (Sockets/Java) FB Automatisierung und Informatik: Design Pattern 19

Entwurfsmuster - Konsequenzen (+) Robustheit des Entwurfes (+) Höherer Wiederverwendungsgrad (+) Kommunikation gemeinsames Vokabular höhere Abstraktion leichtere Dokumentation und Verständnis (-) höhere Kosten FB Automatisierung und Informatik: Design Pattern 20

Das Standardwerk FB Automatisierung und Informatik: Design Pattern 21

Entwurfsmuster: Gang of Four Gültigkeits -bereich Aufgabe Erzeugungsm. Strukturm. Verhaltensmuster klassenbasiert Fabrik Adapter Interpreter Schablonenmethode objektbasiert Abstrakte Fabrik Erbauer Prototyp Singleton Adapter Brücke Dekorierer Fassade Fliegengewicht Kompositum Proxy Befehl Beobachter (MVC) Besucher Iterator Memento Strategie Vermittler Zustand Zuständigskette FB Automatisierung und Informatik: Design Pattern 22

Entwerfen von Systemen: Klassenvererbung Schnittstellenvererbung Delegation bzw. Komposition (Spezialfall der Delegation) Templates (Parametisierbare Typen) Klassenbibliotheken Frameworks FB Automatisierung und Informatik: Design Pattern 23

Verbung vs. Aggregation / Komposition Klassenvererbung nennt man auch White-Box- Wiederverwendung. Objektkomposition: Neue komplexe Funktionalität wird durch das Zusammenführen oder der Komposition erreicht (hat vs. ist) Die Komposition erwartet von Objekten, dass sie Schnittstellen der anderen Objekte respektieren. Es sind keine internen Details bekannt (Black-Box- Wiederverwendung). Klassenhierarchien bleiben klein. Es gibt eine größere Anzahl von Objekten. Das Verhalten hängt von ihren Beziehungen untereinander ab. Bei der Aggregation können die "Teile" des "Ganzen" auch einzeln existieren, bei der Komposition nur, wenn auch das "Ganze" existiert (z.b. UNummer mit Student). FB Automatisierung und Informatik: Design Pattern 24

Komposition Bei der Komposition sind zwei Objekte mit der Abarbeitung einer Anfrage beteiligt. Ein empfangenes Objekt delegiert Operationen an ein Kompositionsobjekt (Ähnlich einer Unterklassen). Fenster rechteck getflaeche() Rechteck breite hoehe Flaeche() return rechteck.flaeche() return breite * hoehe FB Automatisierung und Informatik: Design Pattern 25

Komposition: Der Hauptvorteil der Komposition besteht darin, dass es die Zusammensetzung von Verhalten zur Laufzeit vereinfacht. Das Fenster kann zur Laufzeit rechteckig oder kreisförmig sein. Nachteile: Dynamische, hochgradig parametrische Software ist schwieriger zu verstehen. Laufzeitineffzienten FB Automatisierung und Informatik: Design Pattern 26

Entwurfsmuster: Klassifizierung 1. Aufgabe: (was macht das Muster) Erzeugungsmuster betreffen den Prozess der Objekterzeugung. Strukturmuster befassen sich mit der Zusammensetzung von Klassen und Objekten. Verhaltensmuster charakterisieren die Art und Weise, in der Klassen und Objekte zusammenarbeiten und Zuständigkeiten aufteilen FB Automatisierung und Informatik: Design Pattern 27

Entwurfsmuster: Klassifizierung 2. Gültigkeitsbereich: Klassenbasierte Muster befassen sich mit Klassen und ihren Unterklassen. Beziehungen durch Vererbung (statisch). Objektbasierte Muster befassen sich mit Objektbeziehungen, die zur Laufzeit geändert werden können (dynamisch). FB Automatisierung und Informatik: Design Pattern 28

Vorgehen: Finden passender Objekte Bestimmen von Objektgranularität Spezifizieren von Objektschnittstellen Spezifizieren von Objektimplementierungen Wiederverwendungsmechanismen anwenden Strukturen der Laufzeit- und Übersetzungszeit aufeinander beziehen Veränderungen in Entwürfen vorhersehen FB Automatisierung und Informatik: Design Pattern 29