Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Design-Pattern.

Ähnliche Präsentationen


Präsentation zum Thema: "Design-Pattern."—  Präsentation transkript:

1 Design-Pattern

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

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 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 dressmaker‘s 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, 1993 1) Vorlage, nach der etwas hergestellt wird 2) etwas ins seiner Art Vollkommenes, Vorbild

5 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 Muster - Katalog vs. Mustersprache
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 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 Muster in der Softwareentwicklung - Geschichte (2)
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 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 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 Muster in der Softwareentwicklung - Begriff „Design Pattern“ (Gamma et
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 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 Muster in der Softwareentwicklung - Aufbau eines Musters
4 grundlegende Elemente Mustername Problemabschnitt Lösungsabschnitt Konsequenzabschnitt

14 Muster in der Softwareentwicklung - Beschreibung von Entwurfsmustern (Gamma et.al.)
Mustername und Klassifizierung Zweck Auch bekannt als Motivation Anwendbarkeit Struktur Teilnehmer Interaktionen Konsequenzen Implementierung Beispielcode Bekannte Verwendungen Verwandte Muster Leider gibt es bisher kein einheitliches Format zur Musterbeschreibung!

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

17 2.1 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 2.1 Das 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 2.1 Das 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 2.1 Das GOF-Singleton-Pattern (4) - ein objektbasiertes Erzeugungsmuster
Implementierung: “mainprg.cpp“ #include<iostream> #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 2.1 Das GOF-Singleton-Pattern (5) - ein objektbasiertes Erzeugungsmuster
Konsequenzen: Zugriffskontrolle auf das Exemplar (Instance) Eingeschränkter Namensraum: Keine Überfrachtung des globalen Namensraumes mit globaler Variable Verfeinerung von Operationen und Repräsentation Variable Anzahl von Exemplaren (Instances) Beispiel: Tripleton Flexibler als Klassenoperationen

22 2.2 Optimierungen und Implementierungsvarianten des Singleton-Pattern (1)
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(); }

23 3. Weitere Design-Pattern

24 Das Observer-Pattern

25 Das Observer-Pattern

26

27

28

29

30

31

32

33 Das Template Method -Pattern

34 Template Method-Pattern:
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: Framework Applikation Client Abstract Class: TemplateMethod() PrimitiveOperation1() PrimitiveOperation2()  { Primitive Method Primitive Method } Hooks Concrete Class PrimitiveOperation1() PrimitiveOperation2()  Fachlicher Code  Fachlicher Code Early Binding Late Binding  Polymorphie OOA OOD edit compile link init runtime shutdown Runtime TypeInformation Reflection Pattern MetaClass Class Wann Object-Composition, Object-Intentions (class)...

35 Abstract Factory-Pattern:
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: Client Abstract Factory: CreateProductA() CreateProductB() Abstract Product A Product A2 Product A1 Concrete Factory1 CreateProductA() CreateProductB() Concrete Factory2 CreateProductA() CreateProductB() Abstract Product B Product B2 Product B1

36 Das Abstract Factory-Pattern

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 Das Composite-Pattern (2) - ein objektbasiertes Strukturmuster
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 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 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 Composite Operation: Add(Component) Remove(Component)
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 <<abstract>> Operation: Add(Component) Remove(Component) Composition Leaf Operation: % Composite Operation: Add(Component) Remove(Component)

42 Das Strategy-Pattern

43 Das Proxy-Pattern z.B. Smartpointer

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

45 Das Facade-Pattern

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

47 Active Object - CRC Model 1/2

48 Active Object - CRC Model 2/2

49 Active Object Design Pattern - Sequence Diagram

50 Das State-Pattern

51 Das Decorator-Pattern


Herunterladen ppt "Design-Pattern."

Ähnliche Präsentationen


Google-Anzeigen