Methodik des Entwurfs. Prinzipien des Software-Entwurfs Entwurfsmuster

Größe: px
Ab Seite anzeigen:

Download "Methodik des Entwurfs. Prinzipien des Software-Entwurfs Entwurfsmuster"

Transkript

1 Methodik des Entwurfs Prinzipien des Software-Entwurfs Entwurfsmuster

2 Ebenen des Software-Entwurfs Software-Entwurf ist Strukturenwurf auf verschiedenen Ebenen: Architekturentwurf Strukturentwurf für das Gesamtsystem Komponentenentwurf Komponente ist Gliederungseinheit des Systems Modul oder Klassenentwurf Modul ist Gliederungseinheit der Programmierung Ziel ist die Beherrschung der Komplexität, also Einfachheit: "Wenn du es nicht in fünf Minuten erklären kannst, hast du es nicht verstanden oder es funktioniert nicht." Rechtin Erste Schritt: Vereinfachung durch Zerlegung SE2-7-Entwurfsmuster 2

3 Grundformen der Zerlegung Horizontal: "in Scheiben schneiden" Schichtung Abstraktionsebenen jede Schicht baut auf der darunter liegenden auf Vertikal: "in Stücke schneiden" jedes Teil übernimmt eine benennbare fachliche oder technische Funktion Kapselung: Teile (Komponenten) als Black Box betrachten kommunizieren mit der Umgebung über klar definierte Schnittstellen SE2-7-Entwurfsmuster 3

4 Entwurfsprinzipien Entwurfsmuster helfen dabei, Entwurfsziele umzusetzen. Zunächst brauchen wir Ziele und Kriterien Entwurfsprinzipien Unterschiedliche Prinzipien auf verschiedenen Ebenen: Prinzipien des Architekturentwurfs Prinzipien des Komponentenentwurfs Prinzipien des Klassenentwurfs SE2-7-Entwurfsmuster 4

5 1: Hauptprinzip des Architektur-Entwurfs Eine gute Software-Architektur verfügt über: Starke Kohäsion "Unteilbarkeit" der Komponenten Schwache Kopplung leichter Austausch von Komponenten... und ist verstehbar Referenzarchitekturen Best Practices SE2-7-Entwurfsmuster 5

6 Lose Kopplung und starke Kohäsion Optimierung von Abhängigkeiten: Flexibilität (Veränderungen können lokal vorgenommen werden) Stabilität (Änderungen wirken sich nur lokal aus) Kopplung Abhängigkeit zwischen Moduln sollte möglichst gering sein: Austauschbarkeit, Veränderbarkeit Kohäsion Abhängigkeit innerhalb eines Moduls, innerer (logischer) Zusammenhang sollte stark sein sonst Modul teilen SE2-7-Entwurfsmuster 6

7 2: Grundprinzipien des Komponentenentwurfs DRY don't repeat yourself Kapselung Einfachheit vor Allgemeinverwendbarkeit Getrennte Verantwortung (Separation of Concerns) Aufteilung der Schnittstellen Offen-Geschlossen-Prinzip (OGP): Offen für Erweiterungen geschlossen für Veränderungen Minimale Verwunderung Einhaltung von Konventionen, sprechende Namen Solide Annahmen (oder besser gar keine) Stabile Abhängigkeiten Abhängigkeit von Abstraktionen (Umkehrung der Abhängigkeit) Keine zirkulären Abhängigkeiten SE2-7-Entwurfsmuster 7

8 Grundprinzip: Kapselung Ein Modul gibt nur die Informationen preis, die der Benutzer wirklich benötigt. Vorteile: Bessere Kontrolle innerhalb des Moduls Vermeidung von Benutzerfehlern und -angriffen Lokalisierung von Fehlersituationen Leichtere Austauschbarkeit Nachteil: Overhead beim Zugriff zusätzliche Komponenten und zusätzlicher Code SE2-7-Entwurfsmuster 8

9 Grundprinzip: Einfachheit Zerlegung in 5 +/- 2 Komponenten je Einheit ggf. hierarchische Verfeinerung Im Zweifelsfall die weniger komplexe Alternative wählen Entwurf nach Verantwortlichkeiten: Trennung von Technik und Fachlichkeit Komplexe Diagramme nach Verantwortlichkeiten in einfachere unterteilen Konzentration auf Schnittstellen: Details bleiben gekapselt Robuste Komponenten planen: Fehler berücksichtigen Fehlervermeidung durch Verständlichkeit Auswirkungen von Fehlern möglichst lokal halten Robustheit komponentenweise planen SE2-7-Entwurfsmuster 9

10 Grundprinzip: Trennung von Zuständigkeiten Grundprinzip: Jede Komponente sollte nur einen genau umrissenen Aufgabenbereich abdecken Auftrennung von Schnittstellen Jede Schnittstelle sollte nur einen Aufgabenbereich abdecken ggf. Implementierung mehrerer Schnittstellen durch dasselbe Modul dadurch entstehen spezifische Abhängigkeiten Trennung von Funktion und Interaktion entspricht der Isolation des fachlichen Modells ermöglicht separate Veränderungen MVC SE2-7-Entwurfsmuster 10

11 Aufteilung der Schnittstellen: Allgemeines Schema: Clients sollen nicht von Diensten abhängen, die sie nicht benötigen. Interfaces nach den Client-Erfordernissen entwerfen, nicht nach den Klassen-Angeboten: Client1 Client2 Client-2 Client-2 <<interface>> Interface1 <<interface>> Interface2 Service Service- SE2-7-Entwurfsmuster 11

12 Das Offen-Geschlossen-Prinzip (OGP) class Class Model geschlossenes Modul: Schnittstelle ist stabil, nicht veränderbar kann ohne Anpassung verwendet werden A B C offenes Modul: Erweiterungen sind möglich geschlossen offen SX ein OGP-Modul ist offen für Erweiterungen aber geschlossen für Veränderungen: behält seine bestehende Schnittstelle bei. D geschlossen offen SY E SE2-7-Entwurfsmuster 12

13 Umkehrung der Abhängigkeiten: Allgemeines Schema Abhängigkeit von Abstraktionen, nicht Implementierungen Client Client- Service1 Service2 <<interface>> Interface1 <<interface>> Interface2 Service-1 Service-2 SE2-7-Entwurfsmuster 13

14 Auflösung zirkulärer Abhängigkeiten: Allgemeines Schema Verschieben von Methoden C +amethod() C A B A B <<interface>> A-Interface C +amethod() +amethod() Umkehrung durch Vererbung A B SE2-7-Entwurfsmuster 14

15 Literaturempfehlung: Ludewig, Lichtner: Software Engineering, dpunkt 2007 Starke, Effektive Software-Architektur, Hanser 2008 SE2-7-Entwurfsmuster 15

16 3: Grundprinzipien des Klassenentwurfs Kapseln Daten + zugehöriges Verhalten kleine Kapseln (keine allmächtigen Klassen) Veränderliche Aspekte verbergen "schmutzige" Lösungen verbergen Schnittstellen Schlanke Schnittstellen, möglichst "privater" Entwurf Benutzer dürfen nur von der öffentlichen Schnittstelle abhängen Klasse muss unabhängig von ihren Benutzern bleiben Klasse darf keine Annahmen über ihren Nutzungskontext machen lange Argumentlisten vermeiden, ggf. Aggregate verwenden Vererbung Mehr als eine Instanz der Unterklasse (sonst Objekt, nicht Unterklasse) Strukturelle Ähnlichkeit zur Realwelt anstreben Keine explizite Typabfrage, sondern Polymorphie Liskov's Substitutionsprinzip: Funktionalität der Oberklasse weitestgehend erhalten SE2-7-Entwurfsmuster 16

17 Entwurfsmuster Erprobte generische Lösungen zur Umsetzung der Entwurfsprinzipien allgemeine Wissens- und Kommunikationsbasis für Softwarestrukturen "best practices" so wie jeder oo-entwickler weiß, was eine abstrakte Klasse ist, weiß jeder, was ein Singleton oder eine Factory ist kein Erklärungsbedarf beim Auftreten dieses Musters Ein MUSS für jeden OO-Entwickler SE2-7-Entwurfsmuster 17

18 GoF-Entwurfsmuster Erste Sammlung: GoF-Entwurfsmuster GoF = Gang of Four Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides Systematik der Entwurfsmuster nach Wirkung: Erzeugungsmuster Strukturmuster Verhaltensmuster (Wir ordnen sie primär den Entwurfsprinzipien zu) SE2-7-Entwurfsmuster 18

19 Entwurfsmuster-Systematik Erzeugungsmuster Strukturmuster Instanziierung, Initialisierung, Konfiguration von Objekten Schnittstellen und Kommunikation Verhaltensmuster Dynamische Interaktion zwischen Gruppen von Obj. Factory Method Adapter Chain of Responsibility Abstract Factory Bridge Command Builder Composite Iterator Prototype Decorator Mediator Singleton Facade Momento Flyweight Proxy Observer State Strategy Visitor SE2-7-Entwurfsmuster 19

20 Entwurfsmuster-Video-Tutorials von Derek Banas / New Think Tank com/videos/designpatterns-tutorial/ SE2-7-Entwurfsmuster 20

21 Entwurfsmuster-Puzzle Es war einmal ein kleines Reisebüro, das bot einen Reiseplaner an, der einen Routenplaner nutzte. Beide Verantwortlichen hatten viele Ideen, also entkoppelten sie Ihre Verantwortungsbereiche. Neben den Individualreisen wurden testweise auch Busreisepläne angeboten. Da das Interesse an Busreisen stark zunahm, wurde ein Busplanungsservice hinzugezogen, der kostenpflichtig war. Als ein besserer Routenplaner auf den Markt kam, wurde dorthin gewechselt. Immer mehr spezialisierte Routenplaner tauchten auf und wurden eingebunden. Der Fahrradroutenplaner fügte ständig neue Features hinzu wie machte er das nur? SE2-7-Entwurfsmuster 21

22 Strukturmuster-Puzzle (zum Tafelbild) s Factory «abstract» AbstrakterReiseplaner «interface» RoutenplanerInterface Indiv idualreiseplaner «interface» BusreiseplanerInterface RoutenPlanAdapter «abstract» AbstrakterRoutenplaner Fahrradroutenplaner Touristikroutenplaner Transportroutenplaner BusreiseplanerServ ice BusreiseplanerProxy Es war einmal ein Reiseplaner, der benutzte einen Routenplaner... Vorher... BasisRouter «abstract» SpezialRouter Reiseplaner Routenplaner + berechneroute() : void Steigungsoptimierer Etappenplaner SE2-10-Entwurfsmuster-2 22

23 Kapselung von Änderungen: Bridge Zweck: Trennung von funktionaler Abstraktion und Implementierung so dass beide unabhängig voneinander verändert werden können Kontext: Strukturmuster Eine Klasse bietet eine bestimmte Leistung (Service) an Beispiel: Transport Sie benutzt dazu eine andere Klasse als "Betriebsmittel" (Facility) Beispiel: Transportmittel Sowohl Service als auch Facility sollen unabhängig weiterentwickelt werden können ServiceAbstraction +Operation() <<interface>> Facility +OperationImp() RefinedService2 RefinedService2 ConcreteFacility2 ConcreteFacility2 SE2-7-Entwurfsmuster 23

24 Bridge Vorteile: Beliebige Kombinationen Funktionale Abstraktionen und konkrete Implementierungen beliebig mischbar Für den Client transparent geringer Aufwand für das Pattern Nachteile: (keine bekannt) SE2-7-Entwurfsmuster 24

25 Open-Closed-Priciple: Strategy (schon bekannt) Zweck: Austauschbarkeit von Algorithmen zur Laufzeit unabhängig von den nutzenden Clients Kontext: Verhaltensmuster Ein Dienstmerkmal soll von außen steuerbar ausgetauscht werden können sehr wichtig z.b. für Internationalisierung: länderspezifische Funktionalität Context +contextoperation() +strategy <<abstract>> Strategy +operation() ConcreteStrategy ConcreteStrategy SE2-7-Entwurfsmuster 25

26 Strategy Vorteile: Client unabhängig von konkreten Implementierungen Nachteile: Clients müssen die Strategien kennen. Varianten: Policy mehr als eine Operation SE2-7-Entwurfsmuster 26

27 Kapselung von Abhängigkeiten: Proxy Zweck: Abschirmung eines Objekts gegen direkte Client-Zugriffe Grund Schutz oder Kosten/Aufwand Strukturmuster Kontext: Der Zugang zum realen Objekt erfolgt nur über den Proxy, der das Verhalten des realen Objekts "vortäuscht" und die Client-Anfragen (ggf.) an das reale Objekt delegiert. Client Subject +request() Proxy +request() RealSubject +request() SE2-7-Entwurfsmuster 27

28 Proxy Vorteile: Implementierung von Aspekten, die mit der Fachlogik nichts zu tun haben: Sicherheitsabfrage, Lazy Loading, Protokollierung, Caching,... Erweiterung des Objektverhaltens in einem bestimmten Kontext Verhaltenserweiterung von Bibliotheksklassen ohne Ableitung Nachteile: Methode gleicher Signatur im Proxy redundanter Code Typische Verwendungen: RemoteProxy VirtualProxy ProtectionProxy Varianten: Dynamic Proxy wird zur Laufzeit durch Reflection erzeugt SE2-7-Entwurfsmuster 28

29 Kapselung von Abhängigkeiten: Adapter Zweck: Anpassung einer gelieferten Schnittstelle an eine erwartete Wiederverwendung von Klassen trotz leichter Inkompatibilitäten Verwendung von Bibliotheken Kontext: Klasse hat die gewünschten Daten und das gewünschte Verhalten Schnittstelle passt nicht (Namen, Parameter, Ausnahmen...) Strukturmuster Client <<interface>> Target +Request() e.g. a library class Adapter +adaptee Adaptee +SpecificRequest() SE2-7-Entwurfsmuster 29

30 Adapter Vorteile: Wiederverwendung Kapselung von Abhängigkeiten, z.b. Anbindung an spezifische Fremdsoftware Nachteile: zusätzlicher Aufwand durch Delegation ggf. performance-relevant bei Übergabe großer Objektstrukturen, falls diese kopiert werden müssen. Alternativen: Fassade, Wrapper, Proxy SE2-7-Entwurfsmuster 30

31 Open-Closed-Principle: Decorator Zweck: Dynamisches Hinzufügen von Funktionalität zu einer Komponente Grundfunktionalität wird erhalten und ergänzt (Delegationskette) Kontext: Reversible, konfigurierbare Modifikation des Verhaltens eines existierenden Objekts Direkt angesprochen, hat das Objekt das Standardverhalten (Gegensatz zu Strategie) Strukturmuster Component +Operation() +component results in a chain of decorator objects with a concrete component at its end. ConcreteComponent ConcreteComponent Decorator ConcreteDecorator ConcreteDecorator ConcreteDecorator SE2-7-Entwurfsmuster 31

32 Decorator Vorteile: Funktionalitäten zur Laufzeit zu- und abschaltbar Komponenten kennen ihre Dekorierer nicht Nachteile: möglicherweise viele ähnlich aussehende Klassen, wenig übersichtlich Varianten: Pipe and Filter (s. Analysemuster) Unterschied: Kette von abgeschlossenen Operationen anstelle von Delegationskette. SE2-7-Entwurfsmuster 32

33 Strukturmuster-Puzzle (zum Tafelbild) lass Factory «abstract» AbstrakterReiseplaner «interface» RoutenplanerInterface Bridge Adapter Indiv idualreiseplaner «interface» BusreiseplanerInterface RoutenPlanAdapter «abstract» AbstrakterRoutenplaner Strategy BusreiseplanerServ ice Proxy BusreiseplanerProxy Fahrradroutenplaner Touristikroutenplaner Transportroutenplan Es war einmal ein Reiseplaner, der benutzte einen Routenplaner... Vorher... BasisRouter «abstract» SpezialRouter Decorator Reiseplaner Routenplaner + berechneroute() : void Steigungsoptimierer Etappenplaner SE2-10-Entwurfsmuster-2 33

34 Selbstlern-Aufgabe Lernen Sie anhand des Video-Tutorials von Derek Banas mindesten 4 der blau geschriebenen Muster, wobei von jeder Kategorie eins dabei sein muss! Erzeugungsmuster Strukturmuster Verhaltensmuster Instanziierung, Initialisierung, Konfiguration von Objekten Schnittstellen und Kommunikation Dynamische Interaktion zwischen Gruppen von Obj. Factory Method Adapter Chain of Responsibility Abstract Factory Bridge Command Builder Composite Iterator Prototype Decorator Mediator Singleton Facade Memento Flyweight Proxy Observer State Strategy Visitor SE2-7-Entwurfsmuster 34

35 ...genug für heute... Die nächtsen Male: wichtige Entwurfsmuster im Einzelnen Kombination von Entwurfsmustern

36 Materialsammlung weitere Entwurfsmuster SE2-7-Entwurfsmuster 36

37 Kapselung von Abhängigkeiten: Fassade Zweck: Vereinfachter Zugriff auf en komplexes Subsystem Kapseln der inneren Struktur Kontext: Verwendung eines Subsystems mit wichtigen inneren Abhängigkeiten Verwendung eines Subsystems, bei dem die Gesamtfunktionalität sich aus den Schnittstellen mehrerer Klassen zusammensetzt Alternative Subsysteme mit unterschiedlicher Struktur "Querschnitt-Aufgaben" wie Logging, Transaktionen oder Zugangskontrolle Strukturmuster Client Client Facade Package1 Subsystem Class Subsystem Class Subsystem Class Subsystem Class Subsystem Class Subsystem Class SE2-7-Entwurfsmuster 37

38 Fassade Vorteile: Clients von den Details des Subsystems entkoppelt Austauschbarkeit von Subsystem-Schnittstellen und Komponenten Nachteile: Clients können Fassade umgehen einige Typen müssen evtl. zusätzlich extern verfügbar bleiben Fassade muss an jede Änderung im Subsystem angepasst werden (erhöhte innere Abhängigkeit) Varianten Session Facade, vgl. JSF Message Facade asynchroner Zugang zu einem Subsystem SE2-7-Entwurfsmuster 38

39 Open-Closed-Principle: Umsetzende Entwurfsmuster Änderungen nicht durch Codemodifikation, sondern durch Hinzufügen weiterer Klassen Strategy Die Aufgabe wird delegiert an ein Objekt, von dem zunächst nur die Schnittstelle bekannt ist. Die Auswahl erfolgt dynamisch Verfügbare Strategien sind zur Compilezeit bekannt (i.d.r.) Decorator, Pipe and Filter Änderungen "außen angefügt", Objekt selbst bleibt unverändert. PlugIn gewissermaßen Strategy auf Systemebene Software dynamisch ergänzbar durch weitere Komponenten Hinzufügen durch Konfiguration (keine Neukompilation) benötigt Factory Method, Abstract Factory und Registry SE2-7-Entwurfsmuster 39

40 DRY: Template Method Zweck: Verwendung der Struktur eines Algorithmus mit verschiedenen Einzeloperationen "Generischer" Algorithmus Kontext: Ein Algorithmus besteht aus einer globalen Ablaufstruktur (z.b. Iterieren über eine Liste) und innerhalb dieser Struktur Detailoperationen (z.b. Verdoppeln des Elementwerts) Die Ablaufstruktur ist unabhängig von den Detailoperationen und wird an verschiedenen Stellen benötigt. Verhaltensmuster AbstractClass +templatemethod() +Operation1() +Operation2() calls abstract operations Operation1 and Operation 2 ConcreteClass +Operation1() +Operation2() ConcreteClass +Operation1() +Operation2() SE2-7-Entwurfsmuster 40

41 Template Method Vorteile: Vermeidung redundanter Algorithmenstrukturen (DRY) Oberklasse ruft Methoden ihrer Unterklasse Grundmuster für IoC verbessert Wiederverwendbarkeit SE2-7-Entwurfsmuster 41

42 Kapselung von Abhängigkeiten: Iterator Zweck: Ursprünglich in Kombination mit Compositum Iteration über die Struktur ohne Kenntnis der Implementierung mit der Möglichkeit, die in der Schnittstelle angegebene (für Knoten und Blätter implementierte) Methode an beliebiger Stelle auszuführen. Verallgemeinert für traversierbare rekursive Strukturen. Verhaltensmuster Aggregate +CreateIterator() Iterator +First() +Next() +IsDone() +CurrentItem() ConcreteAggregate ConcreteIterator SE2-7-Entwurfsmuster 42

43 Iterator Vorteile: Aggregat hat schlankes Interface Client benötigt keine Kenntnisse über den Aufbau des Aggregats. Verschiedene Traversierungsstrategien sind möglich Nachteile: parallele Änderungen der Struktur (Einfügen / Entfernen von Einträgen) sind problemetisch evtl. zu weit von der Struktur abgekoppelt! SE2-7-Entwurfsmuster 43

44 Vereinendes und Trennendes... Die heute behandelten Muster dienen alle der strukturellen Entkopplung schaffen kleinerer Einheiten, die separat in ihren Kontext eingebracht werden können "Einfangen" von Abhängigkeiten "Lokalisierung" von Änderungen und Anpassungen Ziel ist vor allem Auswirkungen von geänderten Anforderungen oder Entwurfsentscheidungen zu begrenzen Erwünschter Zusatzeffekt: getrennte Entwicklung getrennte Qualitätssicherung SE2-7-Entwurfsmuster 44

45 Entwurfsmuster - Einführung Beispiel (nach Shalloway und Trott): In einem Verkaufssystem gibt es eine Komponente zur Verwaltung von Aufträgen, sowie Aufträge. Die Berechnung der fälligen Steuer liegt beim einzelnen Auftrag. class Class Model Auftragsv erw altung Auftrag + berechnesteuer() : double SE2-7-Entwurfsmuster 45

46 Einführung Schritt 2 Durch Ausdehnung der Geschäftsbeziehungen in andere europäische Länder sind verschieden Steuergesetze zu berücksichtigen. Problem: Dynamische Zuordnung von unterschiedlichem Verhalten Lösung 1: Vererbungshierarchie Oberklasse von Auftrag spezifiziert die Schnittstelle abstrakt Verschiedene Unterklassen konkretisieren sie class Class Model Auftragsv erw altung Auftrag + berechnesteuer() : double D_Auftrag + berechnesteuer() : double I_Auftrag + berechnesteuer() : double ES_Auftrag + berechnesteuer() : double SE2-7-Entwurfsmuster 46

47 Einführung - Schritt 3 Die Unterklassen unterscheiden sich nur in einem Aspekt. Für jedes neue Land muss eine neue Unterklasse programmiert werden. Problem: Dynamische class Class Zuordnung Model eines Teilverhaltens, erweiterbare Zahl von Teilverhalten Auftragsv erw altung Aufttrag - steuerrechner - st euer + berechnesteuer() : double Lösung: Entwurfsmuster Strategie SteuerRechne r + steuer() : double D_ Rechner + steuer() : double I_ Rechner + steuer() : double ES_ Rechner + steuer() : double SE2-7-Entwurfsmuster 47

Entwurfsmuster. Methodik des Entwurfs. Design Patterns. Entwurfsmuster. Weitere Patterns. Architektur-Patterns

Entwurfsmuster. Methodik des Entwurfs. Design Patterns. Entwurfsmuster. Weitere Patterns. Architektur-Patterns Entwurfsmuster Methodik des Entwurfs Prinzipien des Software-Entwurfs Entwurfsmuster erprobte generische Lösungen für häufig auftretende Entwurfsprobleme allgemeine Wissens- und Kommunikationsbasis für

Mehr

Entwurfsprinzip. Entwurfsprinzip

Entwurfsprinzip. Entwurfsprinzip Die Komposition (hat ein Beziehung) ist der Vererbung (ist ein Beziehung) vorzuziehen. Es können Familien von Algorithmen in eigenen Klassensätzen gekapselt werden. Das Verhalten lässt sich zu Laufzeit

Mehr

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

Überblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio Entwurfsmuster Eine Einführung Botond Draskoczy Marcus Vitruvius Pollio Überblick Historie, Literatur Das Flugapparat-Bildschirmschoner-Projekt (FBP) Das internetbasierte Solar-Netzwerk (SNW) Zusammenfassung

Mehr

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

Design Patterns. (Software-Architektur) Prof. Dr. Oliver Braun. Letzte Änderung: :12. Design Patterns 1/26 Design Patterns (Software-Architektur) Prof. Dr. Oliver Braun Letzte Änderung: 11.07.2017 15:12 Design Patterns 1/26 Standardwerk Gang of Four: Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides:

Mehr

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

Software-Architektur. Design Patterns. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München Software-Architektur Design Patterns Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 11.07.2017 15:12 Inhaltsverzeichnis Standardwerk.................................... 2 Design

Mehr

Design Patterns. 3. Juni 2015

Design Patterns. 3. Juni 2015 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?

Mehr

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

Design Patterns II. Der Design Muster Katalog. Prof. Dr. Nikolaus Wulff Design Patterns II Der Design Muster Katalog Prof. Dr. Nikolaus Wulff Wiederverwendung Wiederverwendung ist das Schlagwort von OOP zur Erhöhung der Produktivität. Es gibt im Prinzip drei Methoden hierzu:

Mehr

Structural Patterns. B. Sc. Andreas Meißner

Structural Patterns. B. Sc. Andreas Meißner Structural Patterns B. Sc. Andreas Meißner Seminar Software-Entwurf Fachgebiet Software Engineering, Institut für Angewandte Systeme, Universität Hannover 11/16/2004 Gliederung 1. Wiederholung Entwurfsmuster

Mehr

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

Software-Entwurfsmuster (weitere) A01 OOP. Software-Entwurfsmuster (weitere) 2014-01-08 Software-Entwurfsmuster (weitere) 1 185.A01 OOP Software-Entwurfsmuster (weitere) 2014-01-08 Software-Entwurfsmuster (weitere) 2 OOP Vererbung versus Delegation class A { public void x() { z();

Mehr

Objektorientierte und Funktionale Programmierung SS 2014

Objektorientierte und Funktionale Programmierung SS 2014 Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten

Mehr

Software Engineering II (IB) Design Patterns

Software Engineering II (IB) Design Patterns Software Engineering II (IB) Design Patterns Prof. Dr. Oliver Braun Letzte Änderung: 16.05.2017 20:56 Software Engineering II (IB), Design Patterns 1/43 Standardwerk Gang of Four: Erich Gamma, Richard

Mehr

Entwurfsmuster Martin Fesser 00IN

Entwurfsmuster Martin Fesser 00IN Entwurfsmuster Martin Fesser 00IN Inhalt Was sind Entwurfsmuster? Vorteile, Nachteile Entwurfsmusterkatalog (nach GoF) Variation von Entwurfsaspekten Wie Entwurfsmuster Entwurfsprobleme lösen Beispiele

Mehr

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

Inhaltsverzeichnis. Vorwort Geleitwort von Grady Booch Einleitung... 23 Vorwort.................................................. 17 Geleitwort von Grady Booch................................. 21 Einleitung................................................ 23 1 Einführung...............................................

Mehr

Software Engineering II (IB) Design Patterns

Software Engineering II (IB) Design Patterns Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 16.05.2017 20:56 Inhaltsverzeichnis Standardwerk.................................... 2 Erzeugungsmuster.................................

Mehr

Software-Architektur Design Patterns

Software-Architektur Design Patterns Design Patterns Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München SS 2015 Standardwerk Gang of Four: Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides: Design Patterns:

Mehr

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

Entwurfsmuster. Tao Zhang Technische Universität München Lehrstuhl für Angewandete Softwaretechnik Entwurfsmuster Tao Zhang Technische Universität München Lehrstuhl für Angewandete Softwaretechnik Information über Entwurfsmuster Die heutige Vorlesung: Einführung in die Thematik Die Vorlesung am 12.01:

Mehr

Entwurfsmuster (Design Patterns)

Entwurfsmuster (Design Patterns) Entwurfsmuster (Design Patterns) SEP 303 Entwurfsmuster (Design Patterns) In der alltäglichen Programmierarbeit tauchen viele Probleme auf, die man schon einmal gelöst hat und die man in der Zukunft wieder

Mehr

SE Besprechung. Übung 4 Architektur, Modulentwurf

SE Besprechung. Übung 4 Architektur, Modulentwurf SE Besprechung Übung 4 Architektur, Modulentwurf SE, 22.11.11 Mengia Zollinger 2.1 Architekturstile (6 Punkte) 2.1.A Ausgabe eines Monatsabos an Angestellte Lösung: Pipe-and-Filter Beispiel Lösung [Benz,

Mehr

Tutorium Softwaretechnik I

Tutorium Softwaretechnik I Tutorium Softwaretechnik I Moritz Klammler 27. Juni 2017 Fakultät für Informatik, IPD Tichy Titelfoto: Copyright (C) 2010 Multimotyl CC BY-SA 3.0 1 27. Juni 2017 Moritz Klammler - Tutorium Softwaretechnik

Mehr

Design Patterns. OO-GetTogether. Volker Michels

Design Patterns. OO-GetTogether. Volker Michels 1 Design Patterns OO-GetTogether Volker Michels 2 Muster (engl. Pattern) Züllighoven: Ein Muster ist eine Abstraktion von einer konkreten Form, die wiederholt in bestimmten nicht willkürlichen Kontexten

Mehr

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

185.A Software-Entwurfsmuster 1 OOP. Software-Entwurfsmuster 2013-12-11 Software-Entwurfsmuster 1 185.A01 OOP Software-Entwurfsmuster 2013-12-11 Software-Entwurfsmuster 2 OOP Zweck von Entwurfsmustern Benennen wiederkehrender Probleme und Lösungen Austasch von Erfahrungen

Mehr

Zweck: sequentieller Zugriff auf Elemente eines Aggregats. mehrere Abarbeitungen des Aggregatinhalts

Zweck: sequentieller Zugriff auf Elemente eines Aggregats. mehrere Abarbeitungen des Aggregatinhalts Iterator (Cursor) Zweck: sequentieller Zugriff auf Elemente eines Aggregats Anwendungsgebiete: Zugriff auf Aggregatinhalt innere Darstellung bleibt gekapselt mehrere Abarbeitungen des Aggregatinhalts einheitliche

Mehr

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

Software Engineering. 10. Entwurfsmuster II. Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering 10. Entwurfsmuster II Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: 10. Entwurfsmuster II 2 Die Entwurfsmuster der Gang of Four Die 23 GoF Pattern sind in 3 Gruppen

Mehr

Zweck: sequentieller Zugriff auf Elemente eines Aggregats

Zweck: sequentieller Zugriff auf Elemente eines Aggregats Iterator (Cursor) Zweck: sequentieller Zugriff auf Elemente eines Aggregats Anwendungsgebiete: Zugriff auf Aggregatinhalt innere Darstellung bleibt gekapselt mehrere Abarbeitungen des Aggregatinhalts einheitliche

Mehr

Design Patterns. 5. Juni 2013

Design Patterns. 5. Juni 2013 Design Patterns 5. Juni 2013 Überblick Was sind Design Patterns? Welche Design Patterns gibt es? Wann sollte man Design Patterns einsetzen? Refactoring und Design Patterns: Welchen Zusammenhang gibt es

Mehr

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

Universität Bremen. Entwurfsmuster. Thomas Röfer. Wettbewerb Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster Entwurfsmuster Thomas Röfer Wettbewerb Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster Mein Rückblick: RoboCup 2 Euer Rückblick: Textsuche Naive Suche abrakadabra Boyer-Moore abrakadabra

Mehr

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

Decorator Pattern. Analyse- und Design-Pattern CAS SWE FS14. Roland Müller Samuel Schärer Decorator Pattern Analyse- und Design-Pattern CAS SWE FS14 Roland Müller Samuel Schärer Entwurfsmuster der «Gang of Four» Strukturmuster fassen Klassen und Objekte zu grösseren Strukturen zusammen Adapter

Mehr

Objektorientierteund FunktionaleProgrammierung

Objektorientierteund FunktionaleProgrammierung Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten

Mehr

3. Entwurfsmuster zur Entkopplung von Modulen

3. Entwurfsmuster zur Entkopplung von Modulen 3. Entwurfsmuster zur Entkopplung von Modulen OOP-3.1 Entwurfsmuster (Design Patterns): Software-Entwicklungsaufgaben, die in vielen Ausprägungen häufig auftreten. Objektorientierte Schemata, die als Lösungen

Mehr

Strategy & Decorator Pattern

Strategy & Decorator Pattern Strategy & Decorator Pattern Design Patterns Nutzen Wouldn t it be dreamy if only there were a way to build software so that when we need to change it, we could do so with the least possible impact on

Mehr

Entwurfsmuster. Marc Monecke

Entwurfsmuster. Marc Monecke Entwurfsmuster Marc Monecke monecke@informatik.uni-siegen.de Praktische Informatik Fachbereich Elektrotechnik und Informatik Universität Siegen, D-57068 Siegen 20. Mai 2003 Inhaltsverzeichnis 1 Grundlagen

Mehr

Entwurfsmuster - Iterator & Composite

Entwurfsmuster - Iterator & Composite Entwurfsmuster - Iterator & Composite Alexander Rausch Seminar Entwurfsmuster WS08/09 19. November 2008 Gliederung 1 Einführung 2 Das Iterator Entwurfsmuster 3 Das Composite Entwurfsmuster 4 Quellen 5

Mehr

OOSE 8 Entwurfsmuster (Hörsaalübung)

OOSE 8 Entwurfsmuster (Hörsaalübung) OOSE 8 Entwurfsmuster (Hörsaalübung) SS 2015 Birgit Demuth Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant Composite Iterator Factory Method Class Adapter Object Adapter Observer Singleton

Mehr

Softwaretechnik. Überblick I. Prof. Dr. Rainer Koschke. Sommersemester 2009

Softwaretechnik. Überblick I. Prof. Dr. Rainer Koschke. Sommersemester 2009 Softwaretechnik Prof. Dr. Rainer Koschke Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen Sommersemester 2009 Überblick I 1 Entwurfsmuster Entwurfsmuster: Entwurfsmuster

Mehr

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

3. Entwurfsmuster zur Entkopplung von Modulen. Übersicht zu Entwurfsmustern 3. Entwurfsmuster zur Entkopplung von Modulen OOP-3.1 Vorlesung Objektorientierte Programmierung WS 2013/2014 / Folie 301 Entwurfsmuster (Design Patterns): Idee der Entwurfsmuster verstehen Software-Entwicklungsaufgaben,

Mehr

SOLID für.net und JavaScript

SOLID für.net und JavaScript SOLID für.net und JavaScript www.binarygears.de Stefan Dirschnabel Twitter: @StefanDirschnab #dncgn SOFTWARE ENTWICKLUNG BERATUNG SCHULUNG 5 Prinzipien für das Design von Software Wartbarer Code Leicht

Mehr

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

Design Pattern. Motivation, Beispiel Definition Das Buch der Gang of Four Ausführliches Beispiel: Facade Beispiele. Aufgabe , Beispiel der Gang of Four Ausführliches Beispiel: Beispiele Wiederverwendung ist etwas Gutes...!!! Wiederverwendung (auch: Verständlichkeit, Änderbarkeit, Portierbarkeit etc.) wird auf Design-Ebene ermöglicht

Mehr

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

Softwaretechnik. Prof. Dr. Rainer Koschke. Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen Softwaretechnik Prof. Dr. Rainer Koschke Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen Wintersemester 2010/11 Überblick I Entwurfsmuster Entwurfsmuster: Entwurfsmuster

Mehr

Objektorientierte und Funktionale Programmierung

Objektorientierte und Funktionale Programmierung Objektorientierte und Funktionale Programmierung SS 2013 6 Objektorientierte Entwurfsmuster Wissensbassierte Systeme / Wissensmanagement Objektorientierte und Funktionale Programmierung 1 PrüfungstermineOFP

Mehr

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

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05. Creational Patterns Seminar Software-Entwurf WS 2004/05 Thomas Liro Inhaltsüberblick Einordnung des Themas Beschreibung von Design Pattern Auswahl von Design Patterns Was sind Creational

Mehr

Entwurfsmuster in Java

Entwurfsmuster in Java Entwurfsmuster in Java Das Observer- und das Decorator-Pattern Friederike Löwe 13. März 2011 Inhaltsverzeichnis Einleitung Wozu eigentlich Entwurfsmuster? Die Grundlage: Design-Prinzipien Das Decorator-Pattern

Mehr

Einführung in die Informatik II

Einführung in die Informatik II Einführung in die Informatik II SS 2012 6 Objektorientierte Entwurfsmuster Wissensbassierte Systeme / Wissensmanagement Einführung in die Informatik II 1 Prüfungstermine EI II im Sommersemester 2012 Klausurtermine

Mehr

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns Daniel Warneke warneke@upb.de 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des

Mehr

Lehrplan: Architektur und Design. paluno

Lehrplan: Architektur und Design. paluno Lehrplan: Architektur und Design Gliederung 1 Grundlagen der industriellen So9ware Entwicklung 2 Ebenen von Architektur und Design 3 KernakAvitäten von So9ware- Architekten 4 Architekturtypologien von

Mehr

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

Behavioral Patterns. Seminar Software-Entwurf WS 04/05. Przemyslaw Dul 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

Mehr

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

Matthias Geirhos. Entwurfsmuster. Das umfassende Handbuch. Rheinwerk. Computing Matthias Geirhos Entwurfsmuster Das umfassende Handbuch Rheinwerk Computing Inhalt Vorwort 17 1 Einführung 19 1.1 Einleitung und allgemeine Hinweise 19 1.1.1 Für wen ist dieses Buch gedacht? 19 1.1.2 Muster

Mehr

R O O T S Ferientutorien Softwaretechnologie 2010

R O O T S Ferientutorien Softwaretechnologie 2010 R O O T S Ferientutorien Softwaretechnologie 2010 von Eva Stöwe und Jan Nonnen 12.03.2010 2010 Eva Stöwe, Jan Nonnen Ferientutorien Softwaretechnologie 2010 Disclaimer Die Folien stellen lediglich die

Mehr

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

Verhaltensmuster. Entwurfsmuster - Design Patterns. HAW Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik Entwurfsmuster - Design Patterns HAW Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik 27. November 2009 Gliederung 1 Einführung 2 Strategie-Muster 3 Beobachter-Muster

Mehr

Model-View-Controller

Model-View-Controller Software Design Pattern Model-View-Controller Michael Lühr Gliederung Einführung und Problemstellung Ansatz durch MVC Detaillierte Darstellung der Komponenten Model View Controller Vor- und Nachteile Zusammenfassung

Mehr

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

Design Patterns 2. Model-View-Controller in der Praxis Design Patterns 2 Model-View-Controller in der Praxis Design Patterns Oft Schablonen für eine Klassenstruktur... aber nicht immer! Dahinterliegende Konzepte wichtiger als wörtliche Umsetzung Pattern werden

Mehr

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

Lukas Klich. Projektgruppe SHUTTLE. Seminar: Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1. Entwurfsmuster Entwurfsmuster Lukas Klich Projektgruppe SHUTTLE Seminar: 28.11.2002 Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1 Motivation Die Menschheit löst Probleme, indem sie beobachtet, Beobachtungen

Mehr

Tutorium Softwaretechnik I

Tutorium Softwaretechnik I Tutorium Softwaretechnik I Moritz Klammler 11. Juli 2017 Fakultät für Informatik, IPD Tichy Titelfoto: Copyright (C) 2010 Multimotyl CC BY-SA 3.0 1 11. Juli 2017 Moritz Klammler - Tutorium Softwaretechnik

Mehr

Entwurfsmuster Design Patterns by Erich Gamma et al.

Entwurfsmuster Design Patterns by Erich Gamma et al. Entwurfsmuster Design Patterns by Erich Gamma et al. Detlef Streitferdt Technische Universität Ilmenau TU-Ilmenau, Softwaresysteme / Prozessinformatik, KBSE Entwurfsmuster 1 Frühe Muster Christopher Alexander

Mehr

Modul Software Komponenten. Entwurfsmuster. Roland Gisler

Modul Software Komponenten. Entwurfsmuster. Roland Gisler Modul Software Komponenten Entwurfsmuster Roland Gisler Präambel Dozent: Roland Gisler Unterricht: 6. Oktober: Entwurfsmuster (heute) 7. Oktober: Testing 20./21. Oktober: Coaching (Entwurfsmuster, Testing

Mehr

7. Zusammenfassung (1)

7. Zusammenfassung (1) Typisierung in OO-Sprachen Subtyping vs. Subclassing Untertypen für Typkonstrukte Funktionsuntertypen und Überschreiben Generik Einsatz von Vererbung konzeptioneller Entwurf: Abstraktion Spezialisierung

Mehr

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

Universität Bremen. Entwurfsmuster. Thomas Röfer. Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster Entwurfsmuster Thomas Röfer Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster Rückblick UML Motivation Historie Spracheinheiten Strukturdiagramme Verhaltensdiagramme 2 Motivation Idee Einige

Mehr

Effektive Software-Architekturen Ein praktischer Leitfaden

Effektive Software-Architekturen Ein praktischer Leitfaden Gernot Starke Effektive Software-Architekturen Ein praktischer Leitfaden ISBN-10: 3-446-41215-8 ISBN-13: 978-3-446-41215-6 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-41215-6

Mehr

Design-Patterns-Katalog

Design-Patterns-Katalog Design-Patterns-Katalog Erzeugungsmuster (Creational Patterns) Abstract Factory (Abstrakte Fabrik, siehe Abschnitt 3.1) Bereitstellung einer Schnittstelle zum Erzeugen verwandter oder voneinander abhängiger

Mehr

Ausnahmebehandlung in Java

Ausnahmebehandlung in Java Ausnahmebehandlung in Java class A { void foo() throws Help, SyntaxError {... class B extends A { void foo() throws Help { if (helpneeded()) throw new Help();... try {... catch (Help e) {... catch (Exception

Mehr

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

Auf einen Blick. 1 Einleitung Die Basis der Objektorientierung Die Prinzipien des objektorientierten Entwurfs... Auf einen Blick Auf einen Blick 1 Einleitung... 15 2 Die Basis der Objektorientierung... 29 3 Die Prinzipien des objektorientierten Entwurfs... 41 4 Die Struktur objektorientierter Software... 67 5 Vererbung

Mehr

OOP. Tagesprogramm. Software-Entwurfsmuster. Factory-Method. Prototype

OOP. Tagesprogramm. Software-Entwurfsmuster. Factory-Method. Prototype 1 2014-12-10 Tagesprogramm Software-Entwurfsmuster Factory-Method Prototype 2 2014-12-10 Software-Entwurfsmuster Zweck von Entwurfsmustern Benennen wiederkehrender Probleme und Lösungen Austasch von Erfahrungen

Mehr

Software-Entwurfsmuster

Software-Entwurfsmuster Software-Entwurfsmuster benennen wiederkehrende Probleme und Lösungen dienen dem Austasch von Erfahrungen Wiederverwendung von Erfahrung wo Wiederverwendung von Code versagt sehr abstrakt, daher häufig

Mehr

Erzeugungsmuster. Kapselung der Objekt-Erzeugung

Erzeugungsmuster. Kapselung der Objekt-Erzeugung Erzeugungsmuster Kapselung der Objekt-Erzeugung Definition Erzeugungsmuster dienen für die Lose Koppelung, bei der erst zur Laufzeit der Typ des zu erzeugenden Objekts festgelegt wird. Abstract Factory

Mehr

Modellarbeit I: Entwurfsgerechte Klassenmodellierung

Modellarbeit I: Entwurfsgerechte Klassenmodellierung Modellarbeit I: Entwurfsgerechte Klassenmodellierung Vom Analysemodell zum Entwurfsmodell Nach der Etablierung der Techologien: Überarbeitung des Fachlichen Modells zu einem geeigneten Entwurfsmodell Navigationen

Mehr

Structural Pattern: Decorator & Bridge

Structural Pattern: Decorator & Bridge Structural Pattern: Decorator & Bridge Christian Baumann Patrick Goetschi Jan Klominsky Dienstag, 25. August 2015 t Agenda 1. Einleitung / Anwendungsgebiet 2. Decorator 3. Bridge 4. Vergleich anhand Beispiel

Mehr

Objektorientierte Programmierung (OOP)

Objektorientierte Programmierung (OOP) orientierte Programmierung (OOP) 1. Motivation Die objektorientierte Sichtweise der Welt Als Motivation für die OOP sieht man sich am besten die reale Welt an: Die reale Welt besteht aus "en", z. B.: Gegenstände,

Mehr

Software Engineering. 7. Entwurfsmuster

Software Engineering. 7. Entwurfsmuster Software Engineering 7. Entwurfsmuster Gliederung Vorlesung Einführung V-Modell XT Analyse und Anforderungsmanagement Benutzungsoberflächen Architektur Entwurf Entwurfsmuster Persistenz Implementierung

Mehr

Architektur-Grobstruktur: Framework

Architektur-Grobstruktur: Framework Architektur-Grobstruktur: Framework remote oder lokal Server: Anwendungslogik strukturierte Daten FH AACHEN UNIVERSITY OF APPLIED SCIENCES OOS Prof. Dr. H. Faßbender Design & Pattern 10. Juni 2016 1 Feinstruktur

Mehr

11. Komponenten Grundlagen der Programmierung 1 (Java)

11. Komponenten Grundlagen der Programmierung 1 (Java) 11. Komponenten Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Einordnung im Kontext der Vorlesung

Mehr

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

Entwurfsmuster. Die Entwurfsmuster Observer, State und Singleton am Beispiel einer Digital-Uhr Entwurfsmuster Die Entwurfsmuster Observer, State und Singleton am Beispiel einer Digital-Uhr Was sind Entwurfsmuster (1) Muster (allg.) sind schematische Lösungen für eine Klasse verwandter Probleme Beschreibung:

Mehr

OOP. Tagesprogramm. Aspekte und Annotationen. Software-Entwurfsmuster. Factory-Method. Prototype

OOP. Tagesprogramm. Aspekte und Annotationen. Software-Entwurfsmuster. Factory-Method. Prototype 1 2017-01-11 Tagesprogramm Aspekte und Annotationen Software-Entwurfsmuster Factory-Method Prototype 2 2017-01-11 Aspekte und Annotationen Aspektorientierte Programmierung Paradigma der Modularisierung

Mehr

ENTWURFSPRINZIPIEN DIE SOLID-PRINZIPIEN NACH ROBERT C. MARTIN 1 / 21. Markus Just Wissenschaftliche Vertiefung

ENTWURFSPRINZIPIEN DIE SOLID-PRINZIPIEN NACH ROBERT C. MARTIN 1 / 21. Markus Just Wissenschaftliche Vertiefung ENTWURFSPRINZIPIEN DIE SOLID-PRINZIPIEN NACH ROBERT C. MARTIN Markus Just 22.01.2016 Wissenschaftliche Vertiefung 1 / 21 Agenda 1) Einführung 2) SOLID- nach Robert C. Martin 3) Fazit 2 / 21 Mängel von

Mehr

Software-Entwurfsmuster

Software-Entwurfsmuster Software-Entwurfsmuster Prinzip von Entwurfsmustern und einige elementare Beispiele Malte Spiess malte@mathematik.uni-ulm.de Seminar Bildanalyse und Simulation mit Java im WS 2003/2004 Universität Ulm

Mehr

Erzeugungsmuster (nach Gang of Four )

Erzeugungsmuster (nach Gang of Four ) 5. Wiederverwendung im Softwareentwurf 5.1 Entwurfsmuster.KVGTCVWT Gamma/Helm/Johnson/Vlissides: Design Patterns, Addison-Wesley 1994 (= Gang of Four, GoF ) Buschmann/Meunier/Rohnert/Sommerlad/Stal: A

Mehr

class Mitarbeiter {...} class AussendienstMitarbeiter extends Mitarbeiter {...} class InnendienstMitarbeiter extends Mitarbeiter {...

class Mitarbeiter {...} class AussendienstMitarbeiter extends Mitarbeiter {...} class InnendienstMitarbeiter extends Mitarbeiter {... Kapitel 12 Design Patterns 12.1 Das Role-Pattern Faustregel: Klassenhierarchien nicht zu tief, denn 1. Nachbildungen natürlicher tiefer Hierarchien sind meist nicht verhaltenskonformant; 2. Änderung des

Mehr

Verteidigung Großer Beleg

Verteidigung Großer Beleg Verteidigung Großer Beleg Die GoF-Entwurfsmuster in Java Corinna Herrmann ch17@inf.tu-dresden.de Gliederung 1. Aufgabenstellung 2. Entwurfsmuster 3. Verwandte Arbeiten 4. Beispiele: 4.1. Adapter 4.2. Flyweight

Mehr

Inhalt. Design patterns Kernbereiche Creational patterns Factory method Abstract Factory Builder Structural patterns Adapter Facade Decorator

Inhalt. Design patterns Kernbereiche Creational patterns Factory method Abstract Factory Builder Structural patterns Adapter Facade Decorator Inhalt Gute OOP-Programmierung ist schwer Objekte Objekte, wird aber so vermittelt (siehe jede Einführung in OOP) Ansprüche an gutes Design diametral welche Ansprüche haben wir überhaupt? Fehler im Design

Mehr

Objektorientierte Programmierung II

Objektorientierte Programmierung II Objektorientierte Programmierung II OOP I Erlaubt Entwicklers, im Problemraum zu denken und zu arbeiten. Das Problem wird in eine Menge von Objekten zerlegt. Objekte wirken aufeinander, um das Problem

Mehr

Wahlpflichtfach Design Pattern

Wahlpflichtfach Design Pattern 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

Mehr

SOFTWARE ENGINEERING 2

SOFTWARE ENGINEERING 2 Fakultät Informatik/Mathematik Lehrstuhl für Softwaretechnologie Vorlesungsmitschrift SOFTWARE ENGINEERING 2 Mitschrift von Falk-Jonatan Strube Vorlesung von Prof. Dr. Anna Sabine Hauptmann 27. März 2018

Mehr

Praktikum. SEP: Java-Programmierung WS 2018/19. Modularisierung. Thomas Lemberger und Martin Spießl

Praktikum. SEP: Java-Programmierung WS 2018/19. Modularisierung. Thomas Lemberger und Martin Spießl Praktikum SEP: Java-Programmierung WS 2018/19 Modularisierung Thomas Lemberger und Martin Spießl Basierend auf Folien von Matthias Dangl und Karlheinz Friedberger 1 / 10 Modularisierung Module gliedern

Mehr

Praxisbuch Objektorientierung

Praxisbuch Objektorientierung Bernhard Lahres, Gregor Rayman Praxisbuch Objektorientierung Von den Grundlagen zur Umsetzung Galileo Press 1.1 Was ist Objektorientierung? 11 1.2 Hallo liebe Zielgruppe 12 1.3 Was bietet dieses Buch (und

Mehr

Programmierparadigmen A01 OOP. Programmierparadigmen

Programmierparadigmen A01 OOP. Programmierparadigmen 2013-10-09 Programmierparadigmen 1 185.A01 OOP Programmierparadigmen 2013-10-09 Programmierparadigmen 2 OOP Klassische Programmierparadigmen Paradigma = Denkweise oder Art der Weltanschauung klassische

Mehr

Software Engineering II

Software Engineering II Software Engineering II 9 Entwurfsmuster Prof. Dr. Dirk Müller Übersicht Einführung Geschichte Anforderungen und Nutzen Grundlegende Elemente Alphabetischer GoF-Katalog 11 GoF-Muster im Detail Nachteile

Mehr

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

Übung 11: Klausurvorbereitung. Übung 11. Prüfungsvorbereitung Software Engineering WS16/17 Philipp Seltmann Übung 11 Prüfungsvorbereitung 1/32 0. Organisatorisches http://giphy.com/gifs/exam-gnjnnba5ieoou Klausur: 17.02.2016, 13-15 Uhr, B11, SR15 Keine Hilfsmittel!!! Papier wird bereitgestellt 2/32 01. Funktionale

Mehr

Programmierparadigmen

Programmierparadigmen Programmierparadigmen Paradigma = Denkweise oder Art der Weltanschauung klassische Einteilung: Programmiersprache imperativ deklarativ prozedural objektorientiert funktional logisch Zusammenhänge tatsächlich

Mehr

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

Ein Entwurfsmuster der GoF. vorgestellt von. Sigrid Weil 16. Januar 2008 Ein Entwurfsmuster der GoF vorgestellt von Sigrid Weil 16. Januar 2008 Einleitung 2 Entwurfsmuster (Design Patterns) beschreiben Probleme, die wiederholt in unterschiedlichsten Zusammenhängen aufreten

Mehr

Strategie. (Strategy. / Policy) Ein objektbasiertes Verhaltensmuster. Stephan Munkelt, Stefan Salzmann - 03IN

Strategie. (Strategy. / Policy) Ein objektbasiertes Verhaltensmuster. Stephan Munkelt, Stefan Salzmann - 03IN Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Gliederung 1. Zweck 2. Motivation 3. Anwendbarkeit 4. Struktur 5. Teilnehmer 6. Interaktionen 7. Konsequenzen 8. Implementierung 9. Beispiele

Mehr

Praktische Softwaretechnologie Vorlesung 9

Praktische Softwaretechnologie Vorlesung 9 Praktische Softwaretechnologie Vorlesung 9 Martin Giese Johann Radon Institute for Computational and Applied Mathematics Österr. Akademie der Wissenschaften Linz PSWT 2006 9. Januar 2007 p.1/38 Pattern

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Software Design Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Software Design Wie schreibe ich gute Software?

Mehr

Factory Method (Virtual Constructor)

Factory Method (Virtual Constructor) Factory Method (Virtual Constructor) Zweck: Definition einer Schnittstelle für Objekterzeugung Anwendungsgebiete: Klasse neuer Objekte bei Objekterzeugung unbekannt Unterklassen sollen Klasse neuer Objekte

Mehr

Paket Kommando. Command Command Processor Visitor

Paket Kommando. Command Command Processor Visitor Paket Kommando Command Command Processor Visitor Command Command [kə'mænd] aka: Action ['ækʃən] aka: Transaction [træn'zækʃən] Verhaltensmuster Zweck: Anfragen/Methodenaufrufe als Objekte kapseln 01.07.09

Mehr

MSE/SWF - API Design. Arthur Zaczek. Feb 2015

MSE/SWF - API Design. Arthur Zaczek. Feb 2015 Arthur Zaczek Feb 2015 1 Einleitung Dieses Dokument ist eine Zusammenfassung des Buches Practical API Design: Confessions of a Java Framework Architect. [@Tulach2012] 1.1 Cluelessness Je einfacher eine

Mehr

Seite Wiederverwendung im Softwareentwurf. 5.1 Entwurfsmuster. Erzeugungsmuster (nach Gang of Four ) Strukturmuster (nach Gang of Four )

Seite Wiederverwendung im Softwareentwurf. 5.1 Entwurfsmuster. Erzeugungsmuster (nach Gang of Four ) Strukturmuster (nach Gang of Four ) 5. Wiederverwendung im Softwareentwurf 5.1 Entwurfsmuster.KVGTCVWT *DPPD+HOP-RKQVRQ9OLVVLGHVÃ'HVLJQÃ3DWWHUQVÃ$GGLVRQ:HVOH\ÃÃ Â )CPIÂQHÂ(QWT Â )Q( 9OLVVLGHVÃ3DWWHUQÃ+DWFKLQJÃ$GGLVRQ:HVOH\ÃÃ *UDQGÃ3DWWHUQVÃLQÃ-DYDÃÃ%GHÃ:LOH\ÃÃ

Mehr

Factory Patterns und deren Auswirkung auf die Softwarearchitektur in der Praxis

Factory Patterns und deren Auswirkung auf die Softwarearchitektur in der Praxis Factory Patterns und deren Auswirkung auf die Softwarearchitektur in der Praxis Klaus Kusche, Juni 2013 Inhalt Was ist das? Warum braucht man das? Was bringt das? Wann hilft es noch? Realistisches Beispiel

Mehr

Entwurfsmuster - Iterator

Entwurfsmuster - Iterator HTWG Konstanz 7. Mai 2009 Muster Klassifikation objektbasiertes Verhaltensmuster des Patterns Ermögliche den sequentiellen Zugriff auf die Elemente eines zusammengestzten Objekts, ohne seine zugrundeligende

Mehr

Objektorientierte Entwurfsmuster

Objektorientierte Entwurfsmuster Objektorientierte Entwurfsmuster Claus Lewerentz Brandenburgische Technische Universität Cottbus Fraunhofer FIRST/SWQlab Cottbus Fraunhofer Institut Rechnerarchitektur und Softwaretechnik 12.05.2005, Software-Systemtechnik,

Mehr

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

Software Reuse Sommer 2004. Schritt 1: Rechtschreibung, Grammatik, Wortschatz, Semantik Schritt 2: Vertiefung Design Pattern Peter Sturm Universität Trier Analogie Erlernen einer Fremdsprache Schritt 1: Rechtschreibung, Grammatik, Wortschatz, Semantik Schritt 2: Vertiefung Bildung vernünftiger Sätze, Absätze,...

Mehr