Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Harald Köbler Software Design Patterns Prototype.

Ähnliche Präsentationen


Präsentation zum Thema: "Harald Köbler Software Design Patterns Prototype."—  Präsentation transkript:

1 Harald Köbler hk018@hdm-stuttgart.de Software Design Patterns Prototype

2 Harald Köbler hk018@hdm-stuttgart.de Aufgabe: Erzeugungsmuster (Creational Pattern) Gültigkeitsbereich: objektbasierend

3 Harald Köbler hk018@hdm-stuttgart.de Zweck: Bestimme die Arten zu erzeugender Objekte durch die Verwendung eines prototypischen Exemplars und erzeuge neue Objekte durch Kopieren dieses Prototypen.

4 Harald Köbler hk018@hdm-stuttgart.de Motivation: Das Erzeugen einer Instanz einer Klasse ist sehr zeitraubend oder komplex. Es werden Kopien der original Instanz erzeugt und abgeändert.

5 Harald Köbler hk018@hdm-stuttgart.de Anwendbarkeit: System soll unabhängig davon sein, wie seine Produkte erzeugt, zusammengesetzt und repräsentiert werden

6 Harald Köbler hk018@hdm-stuttgart.de Anwendbarkeit: System soll unabhängig davon sein, wie seine Produkte erzeugt, zusammengesetzt und repräsentiert werden Klassen werden erst zur Laufzeit spezifiziert

7 Harald Köbler hk018@hdm-stuttgart.de Anwendbarkeit: System soll unabhängig davon sein, wie seine Produkte erzeugt, zusammengesetzt und repräsentiert werden Klassen werden erst zur Laufzeit spezifiziert parallele Klassenhierarchien vermeiden

8 Harald Köbler hk018@hdm-stuttgart.de Anwendbarkeit: System soll unabhängig davon sein, wie seine Produkte erzeugt, zusammengesetzt und repräsentiert werden Klassen werden erst zur Laufzeit spezifiziert parallele Klassenhierarchien vermeiden Exemplare einer Klasse haben nur wenige Zustandskombinationen

9 Harald Köbler hk018@hdm-stuttgart.de Struktur:

10 Harald Köbler hk018@hdm-stuttgart.de Konsequenzen: versteckt konkrete Produktklassen von dem Client ( Abstract Factory, Builder)

11 Harald Köbler hk018@hdm-stuttgart.de Konsequenzen: versteckt konkrete Produktklassen von dem Client ( Abstract Factory, Builder) Client kann ohne Modifikation mit anwendungsspezifische Klassen arbeiten

12 Harald Köbler hk018@hdm-stuttgart.de Konsequenzen: versteckt konkrete Produktklassen von dem Client ( Abstract Factory, Builder) Client kann ohne Modifikation mit anwendungsspezifische Klassen arbeiten Hinzufügen und entfernen von Produkten zur Laufzeit

13 Harald Köbler hk018@hdm-stuttgart.de Konsequenzen: versteckt konkrete Produktklassen von dem Client ( Abstract Factory, Builder) Client kann ohne Modifikation mit anwendungsspezifische Klassen arbeiten Hinzufügen und entfernen von Produkten zur Laufzeit Spezifikation neuer Objekte durch Variation von Werten

14 Harald Köbler hk018@hdm-stuttgart.de Konsequenzen: versteckt konkrete Produktklassen von dem Client ( Abstract Factory, Builder) Client kann ohne Modifikation mit anwendungsspezifische Klassen arbeiten Hinzufügen und entfernen von Produkten zur Laufzeit Spezifikation neuer Objekte durch Variation von Werten Spezifikation neuer Objekte durch Variation der Struktur

15 Harald Köbler hk018@hdm-stuttgart.de Konsequenzen: versteckt konkrete Produktklassen von dem Client ( Abstract Factory, Builder) Client kann ohne Modifikation mit anwendungsspezifische Klassen arbeiten Hinzufügen und entfernen von Produkten zur Laufzeit Spezifikation neuer Objekte durch Variation von Werten Spezifikation neuer Objekte durch Variation der Struktur Verringerte Unterklassenbildung

16 Harald Köbler hk018@hdm-stuttgart.de Konsequenzen: versteckt konkrete Produktklassen von dem Client ( Abstract Factory, Builder) Client kann ohne Modifikation mit anwendungsspezifische Klassen arbeiten Hinzufügen und entfernen von Produkten zur Laufzeit Spezifikation neuer Objekte durch Variation von Werten Spezifikation neuer Objekte durch Variation der Struktur Verringerte Unterklassenbildung Wichtig: jede Unterklasse von Prototype muss die Operation Clone() implementieren

17 Harald Köbler hk018@hdm-stuttgart.de Implementierung: statisch typisierten Programmiersprachen wie C++

18 Harald Köbler hk018@hdm-stuttgart.de Implementierung: statisch typisierten Programmiersprachen wie C++ Verwendung von Prototypenverwalter

19 Harald Köbler hk018@hdm-stuttgart.de Implementierung: statisch typisierten Programmiersprachen wie C++ Verwendung von Prototypenverwalter Implementierung der Clone()-Operation shallow copy – deep copy

20 Harald Köbler hk018@hdm-stuttgart.de Implementierung: statisch typisierten Programmiersprachen wie C++ Verwendung von Prototypenverwalter Implementierung der Clone()-Operation shallow copy – deep copy Initialisierung geklonter Objekte

21 Harald Köbler hk018@hdm-stuttgart.de Beispielcode: class Swimmer { String name; int age; String club; float time; boolean female; }

22 Harald Köbler hk018@hdm-stuttgart.de Beispielcode: public class SwimData implements Cloneable { Vector swimmers; public SwimData(String filename) { String s = ""; swimmers = new Vector(); //open data file InputFile f = new InputFile(filename); s= f.readLine(); //read in and parse each line while(s != null) { swimmers.addElement(new Swimmer(s)); s= f.readLine(); } f.close(); }

23 Harald Köbler hk018@hdm-stuttgart.de Beispielcode: Liste in GUI anzeigen: swList.removeAll(); //clear list for (int i = 0; i < sdata.size(); i++) { sw = sdata.getSwimmer(i); swList.addItem(sw.getName()+" "+sw.getTime()); }

24 Harald Köbler hk018@hdm-stuttgart.de Beispielcode: Liste in GUI anzeigen: swList.removeAll(); //clear list for (int i = 0; i < sdata.size(); i++) { sw = sdata.getSwimmer(i); swList.addItem(sw.getName()+" "+sw.getTime()); } sxdata = (SwimData)sdata.clone(); sxdata.sortByTime(); // re-sort cloneList.removeAll(); // clear list

25 Harald Köbler hk018@hdm-stuttgart.de Beispielcode: Geklonte Liste in GUI anzeigen: for(int i = 0; i< sxdata.size(); i++) { sw = sxdata.getSwimmer(i); cloneList.addItem(sw.getName()+ +sw.getTime()); }

26 Harald Köbler hk018@hdm-stuttgart.de Beispielcode: Nach Clone

27 Harald Köbler hk018@hdm-stuttgart.de Beispielcode: Nach Refresh:

28 Harald Köbler hk018@hdm-stuttgart.de Verwandte Muster: Abstrakte Fabrikmuster (Abstract Factory) Kompitions- und Dekorierermuster (Composite, Decorator)

29 Harald Köbler hk018@hdm-stuttgart.de Prototype im nicht-Computerbereich:

30 Harald Köbler hk018@hdm-stuttgart.de

31 Harald Köbler hk018@hdm-stuttgart.de Literaturquellen: Design Patterns, AW-Verlag Gamma, Helm, Johnson, Vlissides Entwurfsmuster, AW-Verlag Übersetzt Dirk Riehle The Design Patterns – Java Companion AW-Verlag, James W. Cooper

32 Harald Köbler hk018@hdm-stuttgart.de Internetquellen: http://www.fh-wedel.de/~si/seminare/ws97/Ausarbeitung/2.Winter/gamma10.htm http://home.earthlink.net/~huston2/dp/prototype.html www2.informatik.uni-erlangen.de/Lehre/SS01/XML/Docs/Erzeugungsmuster.pdf Catalog of Non-Software Examples of Design Patterns: http://www.agcs.com/supportv2/techpapers/patterns/papers/tutnotes/


Herunterladen ppt "Harald Köbler Software Design Patterns Prototype."

Ähnliche Präsentationen


Google-Anzeigen