Design Patterns. Markus Rundel. Julian Haug. Markus Schnalke. Dimitar Dimitrov. 27. Juni Design Patterns

Größe: px
Ab Seite anzeigen:

Download "Design Patterns. Markus Rundel. Julian Haug. Markus Schnalke. Dimitar Dimitrov. 27. Juni Design Patterns"

Transkript

1 Design Patterns Markus Rundel Julian Haug Markus Schnalke Dimitar Dimitrov Design Patterns Markus Rundel Julian Haug Markus Schnalke Dimitar Dimitrov Einführung in Design Patterns Markus Rundel Observer-Pattern Markus Schnalke Composite-Pattern Dimitar Dimitriv Andere Patterns Julian Haug Fazit 27. Juni 2007

2 Design Patterns Einführung in Design Patterns Markus Rundel Observer-Pattern Markus Schnalke Composite-Pattern Dimitar Dimitriv Andere Patterns Julian Haug Markus Rundel Julian Haug Markus Schnalke Dimitar Dimitrov Einführung in Design Patterns Markus Rundel Observer-Pattern Markus Schnalke Composite-Pattern Dimitar Dimitriv Andere Patterns Julian Haug Fazit Fazit

3 Einführung Markus Rundel Was sind Patterns? Einführung Markus Rundel Definitionen Geschichte Klassifizierung Nutzen und Vorteile Literatur

4 Einführung Was sind Patterns? Definitionen Geschichte Klassifizierung Nutzen und Vorteile Literatur Markus Rundel Was sind Patterns? Definitionen Geschichte Klassifizierung Nutzen und Vorteile Literatur

5 Was sind Patterns? Einführung Markus Rundel Was sind Patterns? Definitionen Geschichte Klassifizierung Was sind Design Patterns? Nutzen und Vorteile Literatur

6 Definitionen Einführung Markus Rundel Christopher Alexander Each pattern is a three-part-rule, which expresses a relation between a certain context, a problem and a solution Martin Fowler A pattern is an idea that has been useful in one practical context and will be probably useful in others. Gang of Four (GoF) Design Patterns sind Beschreibungen zusammenhängender Objekte und Klassen, die maßgeschneidert sind, um ein allgemeines Entwurfsproblem in einem bestimmten Kontext zu lösen. Was sind Patterns? Definitionen Geschichte Klassifizierung Nutzen und Vorteile Literatur

7 Definitionen Einführung Markus Rundel Christopher Alexander Each pattern is a three-part-rule, which expresses a relation between a certain context, a problem and a solution Martin Fowler A pattern is an idea that has been useful in one practical context and will be probably useful in others. Gang of Four (GoF) Design Patterns sind Beschreibungen zusammenhängender Objekte und Klassen, die maßgeschneidert sind, um ein allgemeines Entwurfsproblem in einem bestimmten Kontext zu lösen. Was sind Patterns? Definitionen Geschichte Klassifizierung Nutzen und Vorteile Literatur

8 Definitionen Einführung Markus Rundel Christopher Alexander Each pattern is a three-part-rule, which expresses a relation between a certain context, a problem and a solution Martin Fowler A pattern is an idea that has been useful in one practical context and will be probably useful in others. Gang of Four (GoF) Design Patterns sind Beschreibungen zusammenhängender Objekte und Klassen, die maßgeschneidert sind, um ein allgemeines Entwurfsproblem in einem bestimmten Kontext zu lösen. Was sind Patterns? Definitionen Geschichte Klassifizierung Nutzen und Vorteile Literatur

9 Geschichte Einführung Markus Rundel Was sind Patterns? 1970er Jahre Erstellung erster Entwurfsmuster von einem Architekten 1980er Jahre Entwicklung von Entwurfsmuster für grafische Benutzerschnittstellen 1991 Design Patterns - Elements of Reusable Object-Oriented Software Definitionen Geschichte Klassifizierung Nutzen und Vorteile Literatur

10 Geschichte Einführung Markus Rundel Was sind Patterns? 1970er Jahre Erstellung erster Entwurfsmuster von einem Architekten 1980er Jahre Entwicklung von Entwurfsmuster für grafische Benutzerschnittstellen 1991 Design Patterns - Elements of Reusable Object-Oriented Software Definitionen Geschichte Klassifizierung Nutzen und Vorteile Literatur

11 Geschichte Einführung Markus Rundel Was sind Patterns? 1970er Jahre Erstellung erster Entwurfsmuster von einem Architekten 1980er Jahre Entwicklung von Entwurfsmuster für grafische Benutzerschnittstellen 1991 Design Patterns - Elements of Reusable Object-Oriented Software Definitionen Geschichte Klassifizierung Nutzen und Vorteile Literatur

12 Klassifizierung Schema zum beschreiben von Design Patterns Mustername und Klassifikation Zweck (Wozu dient dieses Muster?) Synonyme Motivation Anwendbarkeit Struktur Beteiligte Klassen (Akteure) Zusammenspiel der involvierten Klassen Vor- und Nachteile Implementierung Beispielcode Praxiseinsatz Querverweise Einführung Markus Rundel Was sind Patterns? Definitionen Geschichte Klassifizierung Nutzen und Vorteile Literatur

13 Nutzen und Vorteile Einführung Markus Rundel Nutzen / Vorteile von Design Pattern Zeitersparnis Fehlerfreiheit Gemeinsame Kommunikationsgrundlage Sauberes OO-Design Lesbarkeit Geringerer Testaufwand Höhere Robustheit Was sind Patterns? Definitionen Geschichte Klassifizierung Nutzen und Vorteile Literatur

14 Literatur Einführung Markus Rundel Design Patterns Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides Design Patterns Explained A New Perspective on Object Oriented Design Allan Shalloway, James R. Trott Was sind Patterns? Definitionen Geschichte Klassifizierung Nutzen und Vorteile Literatur Modern C++ Design Generic Programming and Design Patterns applied Andrei Alexandrescu

15 Literatur Einführung Markus Rundel Design Patterns Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides Design Patterns Explained A New Perspective on Object Oriented Design Allan Shalloway, James R. Trott Was sind Patterns? Definitionen Geschichte Klassifizierung Nutzen und Vorteile Literatur Modern C++ Design Generic Programming and Design Patterns applied Andrei Alexandrescu

16 Literatur Einführung Markus Rundel Design Patterns Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides Design Patterns Explained A New Perspective on Object Oriented Design Allan Shalloway, James R. Trott Was sind Patterns? Definitionen Geschichte Klassifizierung Nutzen und Vorteile Literatur Modern C++ Design Generic Programming and Design Patterns applied Andrei Alexandrescu

17 Einführung Markus Rundel Im Script behandelte Design Pattern Singleton Strategie Fassade Weitere Design-Patterns Iterator General Hierarchie Player Role Pattern Immutable Read-Only Interface Was sind Patterns? Definitionen Geschichte Klassifizierung Nutzen und Vorteile Literatur

18 Einführung Markus Rundel Design Patterns sind bewährte Lösungen zu bekannten, häufiger auftretenden Problemen in der Softwareentwicklung Ende der 80er Jahre wurden Entwurfsmusster erstmals in der Softwareentwicklung eingesetzt Die GoF entwickelte ein einheitliches Schema um die einzelnen Design Pattern beschreiben zu können Was sind Patterns? Definitionen Geschichte Klassifizierung Nutzen und Vorteile Literatur

19 Observer-Pattern Markus Schnalke Vorgehensweise Observer-Pattern Markus Schnalke Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code

20 Observer-Pattern Vorgehensweise Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code Markus Schnalke Vorgehensweise Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code

21 Von der anderen Seite Observer-Pattern Markus Schnalke Vorgehensweise Gründe Design Pattern sind Best Practices (= Erfolgsrezepte), meist nach Vorbildern in der Realität Meine Vorgehensweise Ich will nun anhand eines Beispiels aus dem täglichen Leben zeigen, dass das Design Pattern Observer ein absolut natürliches Vorgehen ist, das bei ähnlichen Situationen in Programmen deshalb ebenso verwendet werden sollte. Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code

22 Von der anderen Seite Observer-Pattern Markus Schnalke Vorgehensweise Gründe Design Pattern sind Best Practices (= Erfolgsrezepte), meist nach Vorbildern in der Realität Meine Vorgehensweise Ich will nun anhand eines Beispiels aus dem täglichen Leben zeigen, dass das Design Pattern Observer ein absolut natürliches Vorgehen ist, das bei ähnlichen Situationen in Programmen deshalb ebenso verwendet werden sollte. Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code

23 Ein Beispiel Observer-Pattern Markus Schnalke Die Situation Personen die verkaufen möchten Personen die kaufen möchten Sie wollen/sollen sich nicht kennen Möglichst effektives Vorgehen Vorgehensweise Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code Vorschläge?

24 Ein Beispiel Observer-Pattern Markus Schnalke Die Situation Personen die verkaufen möchten Personen die kaufen möchten Sie wollen/sollen sich nicht kennen Möglichst effektives Vorgehen Vorgehensweise Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code Vorschläge?

25 Ansatz Observer-Pattern Markus Schnalke Mögliche Vorgehen Personen direkt ansprechen Laut in die Menge rufen Den Freunden erzählen, die es dann weitererzählen Probleme Man weiß nicht wer Interesse hat nicht mal wieviele Manche Interessenten sind vielleicht nur zu bestimmten Zeiten da (... oder sie sind taub) Vorgehensweise Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code

26 Ansatz Observer-Pattern Markus Schnalke Mögliche Vorgehen Personen direkt ansprechen Laut in die Menge rufen Den Freunden erzählen, die es dann weitererzählen Probleme Man weiß nicht wer Interesse hat nicht mal wieviele Manche Interessenten sind vielleicht nur zu bestimmten Zeiten da (... oder sie sind taub) Vorgehensweise Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code

27 Eine (gute) Lösung: Pinnwand Funktionsweise Man kann Zettel anpinnen Hingehen und nach neuen Zetteln schauen Zettel lesen Zettel abnehmen Jeder der ein paar Fähigkeiten hat kann es Observer-Pattern Markus Schnalke Vorgehensweise Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code Probleme Man muss hingehen, nur um festzustellen, dass nichts Neues dabei ist Man kann wichtige Zettel verpassen Zettel sollten nicht weggenommen werden können

28 Eine (gute) Lösung: Pinnwand Funktionsweise Man kann Zettel anpinnen Hingehen und nach neuen Zetteln schauen Zettel lesen Zettel abnehmen Jeder der ein paar Fähigkeiten hat kann es Observer-Pattern Markus Schnalke Vorgehensweise Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code Probleme Man muss hingehen, nur um festzustellen, dass nichts Neues dabei ist Man kann wichtige Zettel verpassen Zettel sollten nicht weggenommen werden können

29 Verbesserung: Pinnwand-Sekretärin Observer-Pattern Markus Schnalke Lösung Durch Studiengebühren wird eine Sekretärin für die Pinnwand angestellt Pinnwand und Sekretärin sind fortan eine Einheit Man kann bei ihr einen Zettel in Auftrag geben (auch telefonisch) (Sie schreibt mit lesbarer Schrift) Sie verhindert, dass Zettel abgenommen werden Vorgehensweise Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code Bestehendes Problem Man läuft immer noch oft unnötig zur Pinnwand

30 Verbesserung: Pinnwand-Sekretärin Observer-Pattern Markus Schnalke Lösung Durch Studiengebühren wird eine Sekretärin für die Pinnwand angestellt Pinnwand und Sekretärin sind fortan eine Einheit Man kann bei ihr einen Zettel in Auftrag geben (auch telefonisch) (Sie schreibt mit lesbarer Schrift) Sie verhindert, dass Zettel abgenommen werden Vorgehensweise Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code Bestehendes Problem Man läuft immer noch oft unnötig zur Pinnwand

31 2. Verbesserung: Pinnwand-Sekretärin mit Benachrichtigung Observer-Pattern Markus Schnalke Vorgehensweise Lösung Durch Studiengebühren wird eine längere Arbeitszeit der Sekretärin finanziert Man kann sich bei der Sekretärin nun als Interessierter registrieren Die Sekretärin trägt die Telefonnummer in eine Liste ein Zukünftig ruft sie alle Personen der Liste an, wenn sie einen neuen Zettel anpinnt Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code

32 des Beispiels Pinnwand + Sekretärin + Benachrichtigung Man kann neue Zettel anpinnen lassen Man kann sich als Interessierter anmelden (und auch abmelden) Interessierte werden bei Änderungen der Pinnwand benachrichtigt Sie können dann zur Pinnwand gehen und sie sich anschauen Observer-Pattern Markus Schnalke Vorgehensweise Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code Eure Meinung? Ist diese Struktur zufriedenstellend? Erfüllt sie alle Anforderungen? Was fehlt?

33 des Beispiels Pinnwand + Sekretärin + Benachrichtigung Man kann neue Zettel anpinnen lassen Man kann sich als Interessierter anmelden (und auch abmelden) Interessierte werden bei Änderungen der Pinnwand benachrichtigt Sie können dann zur Pinnwand gehen und sie sich anschauen Observer-Pattern Markus Schnalke Vorgehensweise Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code Eure Meinung? Ist diese Struktur zufriedenstellend? Erfüllt sie alle Anforderungen? Was fehlt?

34 Überleitung Observer-Pattern Markus Schnalke Vorgehensweise Neue Namen Pinnwand-Sekretärin-Einheit Subject Die Zettel auf der Pinnwand subjectstate Interessenten Observers Schnittstellen Die Fähigkeiten der Pinnwand/Sekretärin und Interessenten sind ihre Interfaces. (vgl: taub, minimale Fähigkeiten, leserliche Schrift,...) Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code

35 Überleitung Observer-Pattern Markus Schnalke Vorgehensweise Neue Namen Pinnwand-Sekretärin-Einheit Subject Die Zettel auf der Pinnwand subjectstate Interessenten Observers Schnittstellen Die Fähigkeiten der Pinnwand/Sekretärin und Interessenten sind ihre Interfaces. (vgl: taub, minimale Fähigkeiten, leserliche Schrift,...) Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code

36 Struktur-Diagramm des Observers Observer-Pattern Markus Schnalke Vorgehensweise Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code

37 Interaktions-Diagramm des Observers Observer-Pattern Markus Schnalke Vorgehensweise Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code

38 Der Observer in der Praxis Observer-Pattern Markus Schnalke Vorgehensweise Observer ist sehr verbreitet v.a. MVC (Model = Subject; View = Observer) Mailinglisten Ebay Such-Abo Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code Aber nicht Blog mit RSS-Feed!

39 Der Observer in der Praxis Observer-Pattern Markus Schnalke Vorgehensweise Observer ist sehr verbreitet v.a. MVC (Model = Subject; View = Observer) Mailinglisten Ebay Such-Abo Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code Aber nicht Blog mit RSS-Feed!

40 Code? Nein, kein Code! Observer-Pattern Markus Schnalke Vorgehensweise Denn Implementierungen sind Schall und Rauch, Konzepte dagegen bleiben bestehen! Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code Beispiel-Implementierung in der Ausarbeitung.

41 Observer-Pattern Markus Schnalke Vorgehensweise Menschen denken basierend auf der Realität deshalb Design Patterns auf Realität zurückführen Patterns anwenden weil man es in der Realität auch so machen würde Erarbeitung des Patterns Ansatz Erarbeitung einer Lösung Das Pattern UML-Diagramme Code

42 Composite-Pattern Dimitar Dimitrov Definition Motivation Composite-Pattern Dimitar Dimitrov Wann verwenden? Struktur Java-Beispiel main, IComponent Composite Leaf

43 Definition Motivation Wann verwenden? Struktur Composite-Pattern Dimitar Dimitrov Definition Motivation Wann verwenden? Struktur Java-Beispiel main, IComponent Composite Leaf Java-Beispiel main, IComponent Composite Leaf

44 Definition Composite-Pattern Dimitar Dimitrov Definition Definition Organisiert Objekte in Baumstrukturen für die Repräsentation von Teil-Ganzes-Beziehungen Erlaubt den gleichförmigen Zugriff auf atomare Einzelobjekte wie auf zusammengesetzte Objekte Motivation Wann verwenden? Struktur Java-Beispiel main, IComponent Composite Leaf Beispiel Telefonnummer 0800-CAR-TALK

45 Motivation Beispiel Grafikprogramm Einfache Objekte (Primitive) wie Linien und Texte sollen gruppierbar sein; der Benutzer möchte Gruppen genau wie Einzelobjekte behandeln Implementierungsidee: Klassen für Primitive + Klassen für Container Diese Unterscheidung macht den Programmcode sehr komplex Composite-Pattern Dimitar Dimitrov Definition Motivation Wann verwenden? Struktur Java-Beispiel main, IComponent Composite Leaf Lösung Eine abstrakte Oberklasse repräsentiert Primitive und Container Operationen von Primitiven werden von Containerobjekten an die enthaltenen Objekte delegiert

46 Motivation Beispiel Grafikprogramm Einfache Objekte (Primitive) wie Linien und Texte sollen gruppierbar sein; der Benutzer möchte Gruppen genau wie Einzelobjekte behandeln Implementierungsidee: Klassen für Primitive + Klassen für Container Diese Unterscheidung macht den Programmcode sehr komplex Composite-Pattern Dimitar Dimitrov Definition Motivation Wann verwenden? Struktur Java-Beispiel main, IComponent Composite Leaf Lösung Eine abstrakte Oberklasse repräsentiert Primitive und Container Operationen von Primitiven werden von Containerobjekten an die enthaltenen Objekte delegiert

47 Wann verwenden? Composite-Pattern Dimitar Dimitrov Definition Motivation Wann verwenden? Wenn Teil-/Ganzes-Hierarchien von Objekten zu repräsentieren sind Wenn Anwendungsklassen den Unterschied zwischen atomaren und zusammengesetzten Objekten ignorieren sollen Struktur Java-Beispiel main, IComponent Composite Leaf

48 UML-Diagramm des Composite-Pattern Composite-Pattern Dimitar Dimitrov Definition Motivation Wann verwenden? Struktur Java-Beispiel main, IComponent Composite Leaf

49 Beteiligte Component Definiert die gemeinsame Schnittstelle aller Objekte im Baum Implementiert Default-Verhalten, wo möglich und sinnvoll Definiert eine Schnittstelle für den Zugriff auf Kinder einer Komponente Leaf Repräsentiert Blätter in der Baumhierarchie Definiert das Verhalten von atomaren Objekten Composite Composite-Pattern Dimitar Dimitrov Definition Motivation Wann verwenden? Struktur Java-Beispiel main, IComponent Composite Leaf Repräsentiert Wurzel- und innere Knoten in der Baumhierarchie Definiert das Verhalten dieser Knoten Implementiert Kind-bezogene Operationen Client manipuliert Objekte mittels Component-Schnittstelle

50 class Main, interface IComponent Composite-Pattern Dimitar Dimitrov public class Main { public s t a t i c void main ( String [ ] args ) { Composite england = new Composite ( England ) ; Leaf york = new Leaf ( York ) ; Leaf london = new Leaf ( London ) ; england. addcomponent ( york ) ; england. addcomponent ( london ) ; england. removecomponent ( york ) ; Composite france = new Composite ( France ) ; france. addcomponent (new Leaf ( Paris ) ) ; Composite europe = new Composite ( Europe ) ; europe. addcomponent ( england ) ; europe. addcomponent ( france ) ; Definition Motivation Wann verwenden? Struktur Java-Beispiel main, IComponent Composite Leaf } } System. out. p r i n t l n ( europe. t o S t r i n g ( ) ) ; interface IComponent { Collection getchildren ( ) ; boolean addcomponent ( IComponent c ) ; boolean removecomponent ( IComponent c ) ; }

51 class Composite class Composite implements IComponent { private String id ; private List<IComponent> l i s t = new ArrayList<IComponent> ( ) ; public Composite ( String id ) { this. i d = i d ; } public String tostring ( ) { StringBuilder buf = new StringBuilder ( ) ; buf. append ( S t r i n g. format ( (%s :, i d ) ) ; } for ( IComponent c h i l d : l i s t ) { buf. append ( + c h i l d. t o S t r i n g ( ) ) ; } buf. append ( ) ) ; return buf. t o S t r i n g ( ) ; Composite-Pattern Dimitar Dimitrov Definition Motivation Wann verwenden? Struktur Java-Beispiel main, IComponent Composite Leaf / / public List<IComponent> getchildren ( ) public C o l l e c t i o n getchildren (){ return l i s t ; } public boolean addcomponent ( IComponent c ){ return l i s t. add ( c ) ; } } public boolean removecomponent ( IComponent c ){ return l i s t. remove ( c ) ; }

52 class Leaf Composite-Pattern Dimitar Dimitrov class Leaf implements IComponent { private String id ; public Leaf ( String id ) { this. i d = i d ; } public String tostring ( ) { return this. i d ; } public Collection getchildren ( ) { return null ; } Definition Motivation Wann verwenden? Struktur Java-Beispiel main, IComponent Composite Leaf / / f a l s e because f a i l e d to add public boolean addcomponent ( IComponent c ) { return false ; } } / / f a l s e because f a i l e d to f i n d i t f o r removal public boolean removecomponent ( IComponent c ) { return false ; }

53 Definiert Klassenhierarchien bestehend aus atomaren Objekten (Primitiven) und zusammengesetzten Objekten Verbirgt den Unterschied zwischen diesen Objekten vor Anwendungsklassen Vereinfacht Anwendungsklassen (viele Fallunterscheidungen entfallen) Macht es einfach, neue Arten von Komponenten hinzuzufügen; Anwendungsklassen funktionieren ohne Änderung. Macht das Design vielleicht allgemeiner als gewünscht; falls nur bestimmte Klassen in ein bestimmtes Composite aufgenommen werden sollen, sind dafür Laufzeitüberprüfungen notwendig Composite-Pattern Dimitar Dimitrov Definition Motivation Wann verwenden? Struktur Java-Beispiel main, IComponent Composite Leaf

54 Andere Patterns Julian Haug Andere Patterns Julian Haug Andere Arten von Mustern anderer Muster Idom Weitere Anti-Patterns Programmier-Anti-Patterns Tipps zur Anwendung

55 Andere Patterns Julian Haug Andere Arten von Mustern anderer Muster Idom Weitere Anti-Patterns Programmier-Anti-Patterns Andere Arten von Mustern anderer Muster Idom Weitere Anti-Patterns Programmier-Anti-Patterns Tipps zur Anwendung Tipps zur Anwendung

56 Andere Arten von Mustern Andere Patterns Julian Haug Andere Arten von Mustern Gang of Four motivieren viele Autoren zu weiteren Veröffentlichungen Problematik: ein Muster lässt sich nicht mehr ohne weiteres als Entwurfsmuster klassifizieren Es entstanden mehrere Arten von Mustern Andere Arten von Mustern anderer Muster Idom Weitere Anti-Patterns Programmier-Anti-Patterns Tipps zur Anwendung

57 Architekturmuster Andere Patterns Julian Haug beschreiben typische Software-Architekturen bestimmen nicht ein konkretes Teilproblem, sondern den Grundaufbau der Anwendung Lässt sich in 4 verschiedene Kategorien einteilen Mud-to-structure: hilft die Unmengen von Komponenten und Objekten eines Softwaresystems zu organisieren. Verteilte Systeme: unterstützten die Verwendung verteilter Ressourcen und Dienste in Netzwerken Interaktive Systeme: helfen Mensch-Computer-Interaktionen zu strukturieren Adaptive Systeme: unterstützen besonders die Erweiterungs- und Anpassungsfähigkeit von Softwaresystemen. Andere Arten von Mustern anderer Muster Idom Weitere Anti-Patterns Programmier-Anti-Patterns Tipps zur Anwendung

58 Idom Definition Beschreibt konkrete Implementierung eines Entwurfsmusters ist programmiersprachenspezifisch Anwendung Konkrete Implementierung eines Entwurfsmusters. Programmierkonventionen (Codeformatierung, Namenskonventionen, Kommentar Formatierung, usw.) Typische Lösungsansätze für Probleme die durch die Programmiersprache nicht direkt unterstützt werden (Speicherverwaltung) Andere Patterns Julian Haug Andere Arten von Mustern anderer Muster Idom Weitere Anti-Patterns Programmier-Anti-Patterns Tipps zur Anwendung

59 Idom Definition Beschreibt konkrete Implementierung eines Entwurfsmusters ist programmiersprachenspezifisch Anwendung Konkrete Implementierung eines Entwurfsmusters. Programmierkonventionen (Codeformatierung, Namenskonventionen, Kommentar Formatierung, usw.) Typische Lösungsansätze für Probleme die durch die Programmiersprache nicht direkt unterstützt werden (Speicherverwaltung) Andere Patterns Julian Haug Andere Arten von Mustern anderer Muster Idom Weitere Anti-Patterns Programmier-Anti-Patterns Tipps zur Anwendung

60 Weitere Andere Patterns Julian Haug Weitere Analysemuster (beschreiben typische Fälle der Anforderungsanalyse) Kommunikationsmuster (beschreiben Kommunikationswege zwischen Personen einer Organisation) Organisationsmuster (beschreiben Elemente der Strukturen von Organisationen) Andere Arten von Mustern anderer Muster Idom Weitere Anti-Patterns Programmier-Anti-Patterns Tipps zur Anwendung

61 Anti-Patterns Dokumentieren wiederkehrende Fehler bei der Software-Entwicklung um durch das Wissen ihrer Existenz diese zu vermeiden bereits manifestierte Anti-Pattern durch geschickte Maßnahmen zu beheben Analog zu positiven Mustern gibt es auch hier eine weitere Unterscheidung Andere Patterns Julian Haug Andere Arten von Mustern anderer Muster Idom Weitere Anti-Patterns Programmier-Anti-Patterns Tipps zur Anwendung Projektmanagement-Anti-Patterns Architektur- bzw. Design-Anti- Patterns Meta-Patterns Organisations-, Prozess- Anti-Patterns Programmierungs-Anti-Patterns

62 Anti-Patterns Dokumentieren wiederkehrende Fehler bei der Software-Entwicklung um durch das Wissen ihrer Existenz diese zu vermeiden bereits manifestierte Anti-Pattern durch geschickte Maßnahmen zu beheben Analog zu positiven Mustern gibt es auch hier eine weitere Unterscheidung Andere Patterns Julian Haug Andere Arten von Mustern anderer Muster Idom Weitere Anti-Patterns Programmier-Anti-Patterns Tipps zur Anwendung Projektmanagement-Anti-Patterns Architektur- bzw. Design-Anti- Patterns Meta-Patterns Organisations-, Prozess- Anti-Patterns Programmierungs-Anti-Patterns

63 Programmierungs-Anti-Patterns Andere Patterns Julian Haug Zwiebel Neue Funktionalität wird um (oder über) die alte gelegt Häufig bei Erweiterungen Führt zu vielschichtigem Programmcode (Zwiebel) Andere Arten von Mustern anderer Muster Idom Weitere Anti-Patterns Programmier-Anti-Patterns Tipps zur Anwendung Lavafluss in Anwendung häuft sich toter Quelltext Statt zu löschen wird um ihn herum programmiert

64 Programmierungs-Anti-Patterns Andere Patterns Julian Haug Zwiebel Neue Funktionalität wird um (oder über) die alte gelegt Häufig bei Erweiterungen Führt zu vielschichtigem Programmcode (Zwiebel) Andere Arten von Mustern anderer Muster Idom Weitere Anti-Patterns Programmier-Anti-Patterns Tipps zur Anwendung Lavafluss in Anwendung häuft sich toter Quelltext Statt zu löschen wird um ihn herum programmiert

65 Tipps zur Anwendung Auswahl eines Entwurfmusters Problem: Viele (ähnliche) Muster kommen in Frage Musterkatalog Genaue Analyse des Problems Verwendung des Musters Problem: Verstehen wie das Muster unser Problem löst Strukturdiagramm (UML) Objekt/Klassenliste Implementierungsbeispiele Andere Patterns Julian Haug Andere Arten von Mustern anderer Muster Idom Weitere Anti-Patterns Programmier-Anti-Patterns Tipps zur Anwendung Wann sollte KEIN Entwurfsmuster benutzt werden Muster dürfen den Code nicht verkomplizieren Oft reicht eine Lösung die zwar weniger flexibel aber simpler ist

66 Tipps zur Anwendung Auswahl eines Entwurfmusters Problem: Viele (ähnliche) Muster kommen in Frage Musterkatalog Genaue Analyse des Problems Verwendung des Musters Problem: Verstehen wie das Muster unser Problem löst Strukturdiagramm (UML) Objekt/Klassenliste Implementierungsbeispiele Andere Patterns Julian Haug Andere Arten von Mustern anderer Muster Idom Weitere Anti-Patterns Programmier-Anti-Patterns Tipps zur Anwendung Wann sollte KEIN Entwurfsmuster benutzt werden Muster dürfen den Code nicht verkomplizieren Oft reicht eine Lösung die zwar weniger flexibel aber simpler ist

67 Tipps zur Anwendung Auswahl eines Entwurfmusters Problem: Viele (ähnliche) Muster kommen in Frage Musterkatalog Genaue Analyse des Problems Verwendung des Musters Problem: Verstehen wie das Muster unser Problem löst Strukturdiagramm (UML) Objekt/Klassenliste Implementierungsbeispiele Andere Patterns Julian Haug Andere Arten von Mustern anderer Muster Idom Weitere Anti-Patterns Programmier-Anti-Patterns Tipps zur Anwendung Wann sollte KEIN Entwurfsmuster benutzt werden Muster dürfen den Code nicht verkomplizieren Oft reicht eine Lösung die zwar weniger flexibel aber simpler ist

68 Andere Patterns Julian Haug Es gibt verschiedene Arten von Mustern für uns von direkter Bedeutung sind Entwurfs-, Architekturmuster und Idome Anti-Pattern zeigen welche Fehler man vermeiden sollte Bei Anwendung von Mustern das Problem genau analysieren, passendes Muster suchen und gegebenenfalls anwenden Andere Arten von Mustern anderer Muster Idom Weitere Anti-Patterns Programmier-Anti-Patterns Tipps zur Anwendung

69 Fazit Fazit Fragen Fazit

70 Fazit Fazit Fazit Fragen 1. understand the problem 2. understand the pattern 3. understand how the pattern solves the problem

71 Fazit Fazit Fazit Fragen 1. understand the problem 2. understand the pattern 3. understand how the pattern solves the problem

72 Fazit Fazit Fazit Fragen 1. understand the problem 2. understand the pattern 3. understand how the pattern solves the problem

73 Fragen? Fazit Fazit Fragen?

74 Abschließend Fazit Fazit Verwendete Software Debian GNU/Linux L A T E X-Beamer und pdflatex Vim qiv und ImageMagick Mercurial Fragen Danke für eure Aufmerksamkeit

Design Pattern Observer

Design Pattern Observer Design Pattern Observer Markus Schnalke MatNr: 039131 Dies ist meine Ausarbeitung zum Design Pattern Observer im Rahmen der Vorlesung Softwaretechnik im Studiengang Wirtschaftsinformatik an der Hochschule

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

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

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

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

Design Patterns I. Observer, Listener & MVC

Design Patterns I. Observer, Listener & MVC Design Patterns I Observer, Listener & MVC Design Patterns I - Gliederung - Was sind Design Patterns? - Definition von Design Patterns - Entstehung - Nutzen & Verwendung - MVC - Model, View, Controller

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

Ü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

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

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

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

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

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

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 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

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

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

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

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

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

Einführung in die Programmierung für NF. Übung

Einführung in die Programmierung für NF. Übung Einführung in die Programmierung für NF Übung 08 11.12.2013 Inhalt Korrektur Blatt 7 Programmierung Banksimulation (Blatt 6) Design Patterns (Entwurfsmuster) MVC und Observer Pattern Einführung in die

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

Einführung in die Programmierung für NF MI. Übung 11

Einführung in die Programmierung für NF MI. Übung 11 Einführung in die Programmierung für NF MI Übung 11 Inhalt Design Patterns (Entwurfsmuster) MVC und Observer Pattern Einführung in die Programmierung für NF MI - Übung 11 2 Design Patterns A Design 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

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

Softwarearchitektur, UML, Design Patterns und Unit Tests

Softwarearchitektur, UML, Design Patterns und Unit Tests Softwarearchitektur, UML, Design Patterns und Unit Tests Stefan Wehr Prof. Dr. Peter Thiemann 7. Dezember 2005 Übersicht Softwarearchitektur UML Design Pattern Unit Tests 2 / 34 Softwarearchitektur Softwarearchitektur

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

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

Mustersuche in Quellcode

Mustersuche in Quellcode Mustersuche in Quellcode Komponentenbasierte Softwareentwicklung 13.07.2005 Peter Schübel 1 Gliederung 1. Vorstellung des Projekts InPulse 2. Design Patterns 1. Idee 2. Beispiele 3. Referenzsystem World

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

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

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

Übersicht. Softwarearchitektur. Softwarearchitektur, UML, Design Patterns und Unit Tests. Softwarearchitektur Übersicht Object Oriented Organization Das System besteht aus Objekten, die mittels Methodenaufrufe (Nachrichten) miteinander kommunizieren. 2 / 34 4 / 34,, Design Patterns und Stefan Wehr Prof. Dr. Peter

Mehr

Das Zustandsmuster Eine Einführung

Das Zustandsmuster Eine Einführung Das Zustandsmuster Eine Einführung Universität Hamburg 25. August 2010 Organisatorisches vorweg Diese Folien sind unter CC-BY-SA 3.0 freigegeben. Alle Illustrationen, soweit sie nicht von mir erstellt

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

Entwurfsmuster. Rainer Schmidberger

Entwurfsmuster. Rainer Schmidberger Entwurfsmuster Rainer Schmidberger schmidrr@informatik.uni-stuttgart.de Copyright 2004, Rainer Schmidberger, Universität Stuttgart, Institut für Softwaretechnologie, Abt. Software Engineering Was sind

Mehr

Interface. So werden Interfaces gemacht

Interface. So werden Interfaces gemacht Design Ein Interface (=Schnittstelle / Definition) beschreibt, welche Funktionalität eine Implementation nach Aussen anzubieten hat. Die dahinter liegende Algorithmik wird aber der Implementation überlassen.

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

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08 Security Patterns Benny Clauss Sicherheit in der Softwareentwicklung WS 07/08 Gliederung Pattern Was ist das? Warum Security Pattern? Security Pattern Aufbau Security Pattern Alternative Beispiel Patternsysteme

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

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2013 1 / 19 Einführung: Entwurfsmuster Erzeugungsmuster Fabrik-Muster Singleton-Muster Beispiel 2

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

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2013 1 / 19 Einführung: Entwurfsmuster Erzeugungsmuster Fabrik-Muster Singleton-Muster Beispiel 2

Mehr

ASPECT-ORIENTED DESIGN PATTERNS

ASPECT-ORIENTED DESIGN PATTERNS ASPECT-ORIENTED DESIGN PATTERNS 1 Gliederung I. Entwurfsmuster Aufbau und Beschreibung II. Probleme objektorientierter Entwurfsmuster III. Entwicklung eines aspektorientierten Musters 2 Abschnitt I: Entwurfsmuster

Mehr

Softwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel

Softwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel Übungen zur Vorlesung Softwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel Übungsblatt 10 - Lösungshilfe Aufgabe 1. CRC-Karten (7 Punkte) Es geht um die Modellierung der folgenden Bibliotheks-Anwendung:

Mehr

INSPIRE - Modellierung

INSPIRE - Modellierung INSPIRE - Modellierung Inhalt Motivation Modellierung UML Diagramme INSPIRE-Schulung LKROS 2 Motivation Was ist ein Modell, und warum wollen wir modellieren? Warum brauchen wir eine Modellierungssprache

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

Software Design basierend auf dem Plug-In Konzept

Software Design basierend auf dem Plug-In Konzept Software Design basierend auf dem Plug-In Konzept Michael Antes Seminar Simulation und Bildanalyse mit Java, WS2003 Universität Ulm Software-Design basierend auf dem Plug-In-Konzept Inhalt: Einführung:

Mehr

Schnittstellen und. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Schnittstellen und. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda Schnittstellen und Abstrakte Klassen 1 Hauptziel der objektorientierten Programmiertechniken ist es, die Flexibilität leichte Anpassbarkeit und Wiederverwendbarkeit von Software zu vereinfachen. 2 Kapselung

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

JUnit a Cook s Tour. Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren. Unterlagen als PDF auf der Übungsseite!

JUnit a Cook s Tour. Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren. Unterlagen als PDF auf der Übungsseite! JUnit a Cook s Tour Ziel des Frameworks Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren Design des Frameworks Beginne bei Nichts Schritt für Schritt aus passenden Mustern

Mehr

ALP II Dynamische Datenmengen

ALP II Dynamische Datenmengen ALP II Dynamische Datenmengen Teil III Iteratoren Iterator-Objekt O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 22. ALP2-Vorlesung, M. Esponda 2 Motivation: Iteratoren Wir haben für die Implementierung

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

Model View Controller Pattern

Model View Controller Pattern Christian Vogt HAW Hamburg 19. Dezember 2011 Inhaltsverzeichnis 1 Prolog Einleitung Entwurfsmuster andere Muster 2 Model-View-Controller Hintergrund Konzept Umsetzung 3 Beispiele Überblick Beispiel in

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

Refaktorisierung des Eclipse- Plugins Saros für die Portierung auf andere IDEs. Verteidigung der Bachelorarbeit von Arndt Tigges

Refaktorisierung des Eclipse- Plugins Saros für die Portierung auf andere IDEs. Verteidigung der Bachelorarbeit von Arndt Tigges Refaktorisierung des Eclipse- Plugins Saros für die Portierung auf andere IDEs Verteidigung der Bachelorarbeit von Arndt Tigges Überblick Einleitung Saros Refaktorisierung Durchführung Analysen Anwendung

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

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

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

Einführung in die objektorientierte Programmierung

Einführung in die objektorientierte Programmierung Einführung in die objektorientierte Programmierung Seminarunterlage Version: 4.04 Copyright Version 4.04 vom 17. Juni 2016 Dieses Dokument wird durch die veröffentlicht. Copyright. Alle Rechte vorbehalten.

Mehr

Objekt-orientierte Programmierung

Objekt-orientierte Programmierung Objekt-orientierte Programmierung Eine (sehr) kurze Einführung Daniel Lübke Gliederung Motivation Grundlagen (Objekte, Klassen, Vererbung) Interfaces Klassenvariablen

Mehr

Design Patterns (dt. Entwurfsmuster)

Design Patterns (dt. Entwurfsmuster) Design Patterns (dt. Entwurfsmuster) Michael Svoboda 25. Mai 2007 Ein fortgeschrittener bzw. erfahrener Softwareentwickler hat oftmals während der Analyse eines Problems bei der Erstellung eines Entwurfs

Mehr

Einleitung. Wozu benötigen wir Entwurfsmuster? Warum ein weiteres Buch über Entwurfsmuster? Warum ein weiteres Buch über Entwurfsmuster?

Einleitung. Wozu benötigen wir Entwurfsmuster? Warum ein weiteres Buch über Entwurfsmuster? Warum ein weiteres Buch über Entwurfsmuster? Warum ein weiteres Buch über Entwurfsmuster? Einleitung This book is meant to be played, rather than to be read in an armchair. Jerry Coker et. al: Patterns for Jazz, Studio P/R, 1970 Wozu benötigen wir

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Lauftagebuch Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 21 Erstellen einer

Mehr

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

Software-Projekt. Prof. Dr. Rainer Koschke. Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen Software-Projekt Prof. Dr. Rainer Koschke Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen Wintersemester 2008/09 Überblick I 1 1 Was ist ein Entwurfsmuster? Bestandteile

Mehr

Factory Method Pattern

Factory Method Pattern Factory Method Pattern Bedeutung: Das Muster ist eines der sogenannten GoF-Entwurfsmuster (Gang offour). Es bezeichnet ein Muster, bei dem die Schnittstelle zur Erstellung eines Objektes eine (abstrakte)

Mehr

Programmiertechnik II WS 2017/18

Programmiertechnik II WS 2017/18 Programmiertechnik II WS 2017/18 Fakultät Informatik Bachelor Angewandte Informatik Prof. Dr. Oliver Bittel bittel@htwg-konstanz.de www-home.htwg-konstanz.de/~bittel WS 17/18 Überblick OOP: Schnittstellen

Mehr

Programmiertechnik II SS Fakultät Informatik Bachelor Angewandte Informatik

Programmiertechnik II SS Fakultät Informatik Bachelor Angewandte Informatik Programmiertechnik II SS 2017 Fakultät Informatik Bachelor Angewandte Informatik Prof. Dr. Oliver Bittel bittel@htwg-konstanz.de www-home.htwg-konstanz.de/~bittel SS 2017 Überblick! OOP: Schnittstellen

Mehr

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

Bekannte Lösungen für bekannte Probleme benutzen. Entwurf auf höherer Abstraktionsebene als bei Programmiersprachen Michael Saecker Bekannte Lösungen für bekannte Probleme benutzen Entwurf auf höherer Abstraktionsebene als bei Programmiersprachen Gemeinsames Vokabular für Designer 2 http://www.clickpix.de/sommer/architektur.jpg

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 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

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

Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D 1 1. EINLEITUNG... 3 2. ZWECK... 3 3. MOTIVATION... 3 4. ANWENDBARKEIT... 6 5. STRUKTUR... 6 6. TEILNEHMER... 7 7. INTERAKTION...

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2014/2015 1 / 29 UML Einführung Klassendiagramme in der UML Relationen zwischen Klassen Einführung:

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

Objektorientierte Programmierung

Objektorientierte Programmierung Bernhard Lahres, Gregor Rayman Objektorientierte Programmierung Das umfassende Handbuch Galileo Press 1.1 Was ist Objektorientierung? 13 1.2 Hallo liebe Zielgruppe 14 1.3 Was bietet dieses Buch (und was

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 05 Unified Modeling Language, Codierregeln Clemens Lang T2/T4 25. Mai 2010 (bergfrei) 27. Mai 2010 (Vertretung) Tafelübung zu AuD 1/18 Was ist UML? Was ist UML?

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 06: Das Visitor Pattern Prof. Dr. Peter Thiemann (vertreten durch Luminous Fennell) Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg)

Mehr

Software- /Systemarchitektur

Software- /Systemarchitektur Software- /Systemarchitektur Agenda: Definition von Softwarearchitektur Voraussetzungen Was bedeutet Objektorientierung? Wie speichert man Daten persistent? Client-Server-Architektur Schichtenarchitektur

Mehr

8 Design Patterns. Events

8 Design Patterns. Events 8 Design Patterns. Events Jörn Loviscach Versionsstand: 28. März 2015, 19:13 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work

Mehr

Info B VL 11: Innere Klassen/Collections

Info B VL 11: Innere Klassen/Collections Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections

Mehr

Objektorientierte Programmierung OO mit Ada 2005

Objektorientierte Programmierung OO mit Ada 2005 Objektorientierte Programmierung mit Ada 2005 Markus Knauß 8. Januar 2010 1/33 Motivation Erstellen Sie ein Programm, mit dem Sie Literaturverweise verwalten können. Die Literaturverweise sollen in einer

Mehr

Softwaretechnik WS 16/17. Übungsblatt 01

Softwaretechnik WS 16/17. Übungsblatt 01 Softwaretechnik WS 16/17 Übungsblatt 01 Was ist eine Klasse? Definition der Object Management Group: A class describes a set of objects that share the same specifications of features, constraints, and

Mehr

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

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen

Mehr

Objektorientierte Systementwicklung

Objektorientierte Systementwicklung Karl-Heinz Rau Objektorientierte Systementwicklung Vom Geschäftsprozess zum Java-Programm Mit 162 Abbildungen vieweg Überblick und Vorbemerkungen 1 1 Objektorientierte Software-Entwicklung 5 1.1 Überblick

Mehr

Richard Bubel & Martin Hentschel

Richard Bubel & Martin Hentschel Einführung in Software Engineering Übung 9: Design Patterns Richard Bubel & Martin Hentschel 31. Januar 2013 130131 TUD M. Hentschel 1 Aufgabe 9.1 (7 Punkte) Ziel: Entwurfsmuster verstehen und anwenden

Mehr

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

Web Engineering-Seminar Methoden zur Web Modellierung: Object-oriented Hypermedia Method (OO-H) Web Engineering-Seminar Methoden zur Web Modellierung: Object-oriented Hypermedia Method (OO-H) Dominik Kirsten Daniel Schäferbarthold Trier, 21.01.2008 1 Gliederung 1. Einführung 1.1 Anforderungen an

Mehr

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 20 Polymorphie/Späte Bindung Abstrakte Klassen Interfaces 2 / 20 Definition: Polymorphie Der Begriff Polymorphie (manchmal

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

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

Entwurfsmuster (Design Pattern) ETIS SS05

Entwurfsmuster (Design Pattern) ETIS SS05 Entwurfsmuster (Design Pattern) ETIS SS05 Gliederung Motivation Pattern allgemein Proxy-Pattern Zusammenfassung 2 Motivation I Wie gut sind eure Programme strukturiert? Wartbarkeit? - Verständlichkeit

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

Funktionales Programmieren mit objektorientierten Sprachen

Funktionales Programmieren mit objektorientierten Sprachen Funktionales Programmieren mit objektorientierten Sprachen Dr. Dieter Hofbauer d.hofbauer@ba-nordhessen.de Hochschule Darmstadt, WS 2008/09 p.1/21 Function Objects In funktionalen Sprachen (Haskell, ML,...

Mehr

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2 iii Inhaltsverzeichnis Kurseinheit 1 1 Von der Aufgabenstellung zum Programm... 1 1.1 Motivation... 1 1.2 Softwareentwicklung... 2 1.3 EXKURS: Unified Modeling Language (UML)... 4 2 Anforderungsanalyse...

Mehr

12.4 Sicherheitsarchitektur

12.4 Sicherheitsarchitektur 12.4 Sicherheitsarchitektur Modellierung Sicherheitsstrategie Systemmodell Sicherheitsmodell Entwurf Architektur Sicherheitsarchitektur Implementierung sicherer Code SS-12 1 Wie wird das Sicherheitsmodell

Mehr

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2014/2015 1 / 28 Strukturmuster Kompositum Dekorierer Adapter 2 / 28 Einführung: Strukturmuster Zu

Mehr

Programmieren 2 C++ Überblick

Programmieren 2 C++ Überblick Programmieren 2 C++ Überblick 1. Einführung und Überblick 2. Klassen und Objekte: Datenkapselung 3. Erzeugung und Vernichtung von Objekten 4. Ad-hoc Polymorphismus 5. Behälter und Iteratoren 6. Templates

Mehr

Effizientes Programmieren

Effizientes Programmieren Effizientes Programmieren Praktikum smuster (09.05.2016) Christopher Pietsch Agenda 1 2 smuster 3 4 1 / 23 smuster (09.05.2016) smuster Teil 1 2 / 23 smuster (09.05.2016) smuster Definition: [...] alle

Mehr

Effizientes Programmieren

Effizientes Programmieren Effizientes Programmieren Praktikum smuster (04.07.2017) Christopher Pietsch Agenda 1 2 smuster 3 4 1 / 23 smuster (04.07.2017) smuster Teil 1 2 / 23 smuster (04.07.2017) smuster Definition: [...] alle

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:

Mehr