Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Design-Pattern. 2 1. Muster Begriff und Bedeutung Geschichte der Entwurfsmuster Bestandteile und Beschreibung von Mustern.

Ähnliche Präsentationen


Präsentation zum Thema: "1 Design-Pattern. 2 1. Muster Begriff und Bedeutung Geschichte der Entwurfsmuster Bestandteile und Beschreibung von Mustern."—  Präsentation transkript:

1 1 Design-Pattern

2 2 1. Muster Begriff und Bedeutung Geschichte der Entwurfsmuster Bestandteile und Beschreibung von Mustern

3 3 1. Wiederverwendung von Wissen in der Softwareentwicklung Komponenten (Bausteine) Bibliotheken (Komponentensammlungen) Rahmenwerken, engl. Frameworks (wiederverwendbare Entwürfe) Programmgeneratoren, Wizards Muster, engl. Pattern (Problemlösungen) Anti-Muster (Problemlösungen, die nicht funktionieren) Prinzipien und Heuristiken Handbücher (Anleitungen)

4 4 1.Muster - allgemeiner Begriff Pattern im Websters Dictionary 1: a form or model proposed for imitation, see exemplar 2: something designed or used as a model for making things; e.g. a dressmakers pattern 3: a model for making a mold into which molten metal is poured to form a casting 4: an artistic, musical, literary, or mechanical design or form 5: a natural or chance configuration; e.g. frost pattern Muster im Brockhaus, ) Vorlage, nach der etwas hergestellt wird 2) etwas ins seiner Art Vollkommenes, Vorbild

5 5 1.Muster - Theorie des Lernens Ein Mensch lernt, indem er Beispiele beobachtet bzw. Erfahrungen macht, die Beobachtungen generalisiert, abstrahiert und daraus allgemeine Regeln (Muster) ableitet. Diese werden dann erprobt und wenn nötig modifiziert Das gilt auch für Problemlösungen: erprobte Lösungen werden immer wieder eingesetzt, (allerdings oft auch dann, wenn sie unangebracht sind) damit reduziert sich der Aufwand der Problemlösung Ein großer Teil der Kultur beruht auf erprobten Lösungen, z.B. Sprache, Schrift, Technik. Die praktische Ausbildung eines Menschen umfaßt daher vor allem die Weitergabe erprobter Lösungen.

6 6 1.Muster - Katalog vs. Mustersprache Katalog eine beliebige Sammlung von Mustern, die in der Regel nach demselben Schema beschrieben sind Mustersprache (pattern language) ein System von Mustern, die sich mit demselben Gebiet befassen die sich gegenseitig ergänzen deren Beziehungen und Kombinationsmöglichkeiten explizit aufgezeigt werden es können durch Kombination der Muster größere Probleme gelöst werden, als das mit einzelnen Mustern möglich ist auch zur Herleitung eines Entwurfs verwendbar

7 7 1.Muster in der Softwareentwicklung - Geschichte (1) Muster in der Architektur: Christopher Alexander In seinem Buch A Pattern Language (1977) beschreibt Alexander ein System von Mustern zur Architektur auf den Ebenen Landschaftsplanung Stadtplanung einzelne Gebäude einzelne Räume Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice. (Alexander, 1977, S. x) Definition Muster: Lösung eines Problems in einem Kontext

8 8 1.Muster in der Softwareentwicklung - Geschichte (2) Muster in der Softwareentwicklung Kent und Cunningham bezogen von Alexander ihre Inspiration für Entwurfsmuster in der Software-Entwicklung (etwa 1987) Ab etwa 1990 gibt es Workshops über Software-Architektur, bei denen auch über Entwurfsmuster diskutiert wird. Gamma, Vlissides, Johnson und Helm veröffentlichen 1995 das Buch Design Patterns und machen damit Entwurfsmuster populär. Seither steigt die Anzahl der Publikationen exponentiell. Seit 1994 gibt es die Konferenz PLoP (Pattern Languages of Program Design); später kamen die Konferenzen EuroPLoP (1996) und ChiliPLoP (1997) dazu.

9 9 1.Muster in der Softwareentwicklung - Begriff Muster (Riehle, 1997) Ein Muster ist eine in einem bestimmten Kontext erkennbare Form. Es dient als Vorlage zum Erkennen, Vergleichen und Erzeugen von Musterexemplaren. Ein Muster ist die Essenz aus Erfahrung und Analyse immerwiederkehrender Situationen. Es besitzt eine innere Struktur und Dynamik.

10 10 1.Muster in der Softwareentwicklung - Arten Verbreitet: Analysemuster Architekturmuster Entwurfsmuster Idiome Noch eher selten: Prozeßmuster, Vorgehensmuster (z.B. für Test, Review) Organisationsmuster Neue Idee: Antipatterns: beschreiben häufig gewählte falsche Lösungen für bestimmte Probleme und machen alternativen Lösungsvorschlag

11 11 1.Muster in der Softwareentwicklung - Begriff Design Pattern (Gamma et.al., 1995) A description of an object-oriented design technique which names, abstracts and identifies aspects of a design structure that are useful for creating an object-oriented design. The design pattern identifies classes and instances, their roles, collaborations and responsibilities. Each design pattern focuses on a particular object-oriented design problem or issue. It describes when it applies, whether it can be applied in the presence of other design constraints, and the consequences and trade-offs of its use.

12 12 1.Muster in der Softwareentwicklung - Eigenschaften von Entwurfsmustern Ein Entwurfsmuster dokumentiert vorhandene, erprobte Entwurfserfahrung; diese kann dadurch wiederverwendet werden Die durch Entwurfsmuster beschriebenen Abstraktionen liegen über der Stufe einzelner Klassen (Mikroarchitektur) Entwurfsmuster können flexibel kombiniert werden Entwurfsmuster helfen bei der Erstellung und der Dokumentation komplexer und heterogener Software-Architekturen Entwurfsmuster unterstützen Entwurfseigenschaften wie Änderbarkeit und Wiederverwendbarkeit Entwurfsmuster bilden ein Vokabular für den Entwurf und erleichtern daher die Kommunikation Entwurfsmuster können auch beim Reengineering vorhandener Software als Analysemittel dienen

13 13 1.Muster in der Softwareentwicklung - Aufbau eines Musters 4 grundlegende Elemente 1.Mustername 2.Problemabschnitt 3.Lösungsabschnitt 4.Konsequenzabschnitt

14 14 1.Muster in der Softwareentwicklung - Beschreibung von Entwurfsmustern (Gamma et.al.) 1.Mustername und Klassifizierung 2.Zweck 3.Auch bekannt als 4.Motivation 5.Anwendbarkeit 6.Struktur 7.Teilnehmer 8.Interaktionen 9.Konsequenzen 10.Implementierung 11.Beispielcode 12.Bekannte Verwendungen 13.Verwandte Muster Leider gibt es bisher kein einheitliches Format zur Musterbeschreibung!

15 15 1.Muster in der Softwareentwicklung - Beschreibung von Entwurfsmustern Name Problem (problem) Kontext (context): Bereich, in der das Problem auftritt Einflußfaktoren (forces), die berücksichtigt werden müssen Lösung (solution): Struktur und Dynamik Einschränkungen (constraints) Implementierung (implementation) Beispiele, Varianten, bekannte Verwendungen, verwandte Muster,... Leider gibt es bisher kein einheitliches Format zur Musterbeschreibung!

16 16 Design Pattern

17 Das GOF-Singleton-Pattern (1) - ein objektbasiertes Erzeugungsmuster Zweck: Sichere ab, daß eine Klasse genau ein Exemplar besitzt und stelle einen globalen Zugriffspunkt darauf bereit. (Garantie eines einzigen Exemplars) Motivation/Anwendbarkeit: Bei manchen Klassen ist es wichtig, dass es genau ein Exemplar gibt. Struktur: Teilnehmer: Singleton definiert eine Instance()-Operation Interaktionen: Clienten greifen ausschließlich durch die Instance()-Operation der Singleton-Klasse zu

18 18 2.1Das GOF-Singleton-Pattern (2) - ein objektbasiertes Erzeugungsmuster Implementierung: Singleton.h #ifndef __CSingleton #define __CSingleton class CSingleton { public: static CSingleton* Instance(); protected: CSingleton(); private: static CSingleton* _instance; }; #endif // __CSingleton

19 19 2.1Das GOF-Singleton-Pattern (3) - ein objektbasiertes Erzeugungsmuster Implementierung: Singleton.cpp #include ".\Singleton.h" CSingleton* CSingleton::_instance = 0; CSingleton* CSingleton::Instance() { if (_instance == 0) { _instance = new CSingleton; } return _instance; } CSingleton::CSingleton() { }

20 20 2.1Das GOF-Singleton-Pattern (4) - ein objektbasiertes Erzeugungsmuster Implementierung: mainprg.cpp #include #include "Singleton.h" using namespace std; int main() { CSingleton * my1stSingleton; my1stSingleton=CSingleton::Instance(); CSingleton * my2ndSingleton; my2ndSingleton=CSingleton::Instance(); cout << "my1stSingleton Adress = " << my1stSingleton << endl; cout << "my2ndSingleton Adress = " << my2ndSingleton << endl; return 0; }

21 21 Konsequenzen: 1.Zugriffskontrolle auf das Exemplar (Instance) 2.Eingeschränkter Namensraum: Keine Überfrachtung des globalen Namensraumes mit globaler Variable 3.Verfeinerung von Operationen und Repräsentation 4.Variable Anzahl von Exemplaren (Instances) Beispiel: Tripleton 5.Flexibler als Klassenoperationen 2.1Das GOF-Singleton-Pattern (5) - ein objektbasiertes Erzeugungsmuster

22 22 Verbesserung des Schutzes vor unerlaubter Kopie eines Singletons und unerlaubten Löschens eines Singleton-Pointers Idee: private Sichtbarkeit von Constructor, Copy-Constructor, Destructor und Zuweisungsoperator Rückgabe einer Referenz anstelle eines Pointers Headerfile: Singleton.h class Singleton { public: Singleton & Instance(); … operations … private: Singleton(); Singleton(const Singleton&); Singleton & operator=(const Singleton&); ~Singleton(); } 2.2Optimierungen und Implementierungsvarianten des Singleton-Pattern (1)

23 23 3. Weitere Design-Pattern …

24 24 Das Observer-Pattern

25 25 Das Observer-Pattern

26 26

27 27

28 28

29 29

30 30

31 31

32 32

33 33 Das Template Method -Pattern

34 34 Template Method-Pattern: Client Applikation Framework Abstract Class: TemplateMethod() PrimitiveOperation1() PrimitiveOperation2() Concrete Class PrimitiveOperation1() PrimitiveOperation2() Fachlicher Code Fachlicher Code { Primitive Method Primitive Method } Intent: define the skeleton of an algorithm in an operation, defering same steps to subclasses. Template methods lets subclasses redefine certain steps of algorithm without changing the algorithm´s structure. Applicability: - Framework development Structure: Hooks OOAOODedit compilelinkinit runtime shutdown Wann Object-Composition, Object-Intentions (class)... Early Binding Late Binding Polymorphie Runtime TypeInformation Reflection Pattern MetaClass Class

35 35 Abstract Factory-Pattern: Client Abstract Factory: CreateProductA() CreateProductB() Concrete Factory1 CreateProductA() CreateProductB() Intent: provide interface for creating families of related objects Applicability: - a system (client) should be independent of how its products are created, composed and represented - a system should be configured with one of multiple families of products - you want a class library of products; you want the interface, not the implementation Example: DCOM – Object Aktivierung Structure: Abstract Product A Product A1Product A2 Concrete Factory2 CreateProductA() CreateProductB() Abstract Product B Product B1Product B2

36 36 Das Abstract Factory-Pattern

37 37 Das Composite-Pattern (1) - ein objektbasiertes Strukturmuster Zweck: Füge Objekte zu Baumstrukturen zusammen, um Teil-Ganzes-Hierarchien zu repräsentieren. Das Kompositionsmuster ermöglicht es Klienten, sowohl einzelne Objekte als auch Kompositionen von Objekten einheitlich zu behandeln. Motivation/Anwendbarkeit: Unterklassen Linie, Rechteck und Text einer abstrakten Klasse Grafik

38 38 Das Composite-Pattern (2) - ein objektbasiertes Strukturmuster Struktur: Anwendbarkeit: Sie wollen Teil-Ganzes-Hierarchien von Objekten repräsentieren. Sie wollen, daß Klienten in der Lage sind, die Unterschiede zwischen zusammengesetzten Objekten zu ignorieren. Klienten behandeln alle Objekte in der zusammengesetzten Struktur einheitlich.

39 39 Das Composite-Pattern (3) - ein objektbasiertes Strukturmuster Teilnehmer: Component deklariert die Schnittsstelle für Objekte in der zusammengesetzten Struktur implementiert ggf. ein Defaultverhalten für die gemeinsame Schnittstelle aller Klassen deklariert eine Schnittstelle zum Zugriff/zur Verwaltung von Kindobjekt- komponenten definiert optional eine Schnittstelle zum Zugriff auf das Elternobjekt einer Komponente innerhalb einer rekursiven Struktur und implementiert sie ggf. Leaf repräsentiert Blattobjekte in der Komposition. Ein Blatt besitzt keine Kindobjekte. definiert Verhalten für die primitiven Objekte in der Komposition Composite def. Verhalten für Komponenten, die Kindobjekte haben können. speichert Kindobjektkomponenten implementiert kindobjekt-bezogene Operationen Client manipuliert die Objekte in der Komposition durch die Schnittstelle der Komponente (Component)

40 40 Das Composite-Pattern (4) - ein objektbasiertes Strukturmuster Interaktionen: Klienten verwenden die Klassenschnittstelle von Komponente, um mit Objekten in der Kompositionsstruktur zu interagieren. Wenn der Empfänger ein Blatt ist, wird die Anfrage direkt abgehandelt. Wenn der Empfänger ein Kompositum ist, leitet es zumeist die Anfrage an seine Kindobjektkomponenten weiter. Möglicherweise führt es zusätzliche Operationen vor und/oder nach der Weiterleitung aus. Konsequenzen: Primitive Objekte können rekursiv zu komplexeren Objekten zusammengesetzt werden Vereinfachung des Klienten (aus der Sicht des Klienten kein Unterschied zwischen einfachen Blattobjekten und Kompositionsobjekten) Einfaches Hinzufügen neuer Komponenten Einschränkung der möglichen Komponenten eines Kompositums erschwert (zusätzliche Typüberprüfung zur Laufzeit nötig) Implementierung:

41 41 Composite-Pattern: Intent: Compose objects into tree structure to represent part-whole hierarchie Hint: Composite Pattern = Pattern Composition Applicability: - port-whole hierarchie - client will ignore difference between composition of objects and individual objects Structure: Participants: Component:- declares interface for objects in the composition - implements default behaviour for the interfaces common to all classes - declares interface for accessing and managing - (optional) defines an interface for accessing a components parent in a recursive structure Leaf:- represents a leaf object, a leaf has no children - defines behaviour of primitive objects Composite:- represents behaviour for components being children, store child components - implements child-related operations in the component interface Component > Operation: Add(Component) Remove(Component) Leaf Operation: % Composite Operation: Add(Component) Remove(Component) Composition

42 42 Das Strategy-Pattern

43 43 Das Proxy-Pattern z.B. Smartpointer

44 44 Das Bridge-Pattern (Handle-Body-Idiom)

45 45 Das Facade-Pattern

46 46 Active Object Design Pattern - Class Diagram Context Hint: Servant as Context, which is a Façade to Applications Dynamics: Method request construction and scheduling, Method request execution, Completion Passive Object

47 47 Active Object - CRC Model 1/2

48 48 Active Object - CRC Model 2/2

49 49 Active Object Design Pattern - Sequence Diagram

50 50 Das State-Pattern

51 51 Das Decorator-Pattern


Herunterladen ppt "1 Design-Pattern. 2 1. Muster Begriff und Bedeutung Geschichte der Entwurfsmuster Bestandteile und Beschreibung von Mustern."

Ähnliche Präsentationen


Google-Anzeigen