Harald Köbler Software Design Patterns Prototype.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
Imperative Programmierung
der Universität Oldenburg
Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
Design-Pattern.
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Konzepte objektorientierter Systeme
der Universität Oldenburg
Objektorientierte Programmierung Definition von Klassen
Design Patterns- Entwurfsmuster
Daten Anzeigen und Ausdrucken Zu Zeigende Daten (z.B. Studentenplan) Daten in XML müssen geparst und in PDF- Format umgewandelt werden. Dazu iTEXT Bibliothek.
Threads Richard Göbel.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Komponentenbasierter Taschenrechner mit CORBA
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 6 Model-View-Controler als Grundlage für Nutzerschnittstellen Sommersemester 2003 Lars Bernard.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Sebastian Grahn Sebastian Kühn
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Folie 1 Christian Pfeffer Carsten Walther Fernstudium Informatik Matrikel LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: DECORATOR.
Entwurfsmuster – Iterator
Software Design Patterns Creational Patterns Structural Patterns Behavioral Patterns –Behavioral Class Patterns Interpreter Template Method Pattern –Behavioral.
Command Pattern Karola Schäuble,
Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich
Dependents, Publish-Subscribe, Listener
Entwurfsmuster EDV Entwurfsmuster.
DVG Klassen und Objekte
Datenströme DVG Datenströme.
Einführung in die Programmierung Datensammlung
Informatikunterricht mit Java
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 6 Sitzung 6: Model-View-Controller als Grundlage.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Die Persistenzschicht
Proseminar an der TU München Martin Levihn
Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. M. Thaller AM1: Re-usable Content in 3D und Simulationssystemen.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
1.3 Klassen und Beziehungen
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Software Design Patterns
Diskrete Mathematik I Vorlesung 2 Arrays.
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Einführung in die Programmierung mit Java
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Entwurfsmuster (Design Pattern)
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Case Tools Unterstützung für Design Pattern von Vladislav Krasnyanskiy.
Folie 1 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel LABORPRAKTIKUM- SOMMERSEMESTER 2005 „Umsetzung von Pattern“ Muster:
Design Pattern1 Motivation Entwurfsmuster Entwurf wiederverwendbarer objektorientierter Software schwer gute Entwürfe entstehen durch Wiederverwen- dung.
Strategy Pattern Teachlet Autor: Sven Wende Replay durch Stephan Schwake Konzepte objektorientierter Programmiersprachen, SS 2006.
Dr. Wolfram Amme, Generisches Programmieren, Informatik II, FSU Jena, SS Generisches Programmieren.
Dr. Wolfram Amme, Virtuelle Vererbung, Informatik II, FSU Jena, SS Auflösung von Konflikten bei Mehrfachvererbung Umbenennung mehrdeutiger Methoden.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
1. Die rekursive Datenstruktur Liste 1
 Präsentation transkript:

Harald Köbler Software Design Patterns Prototype

Harald Köbler Aufgabe: Erzeugungsmuster (Creational Pattern) Gültigkeitsbereich: objektbasierend

Harald Köbler Zweck: Bestimme die Arten zu erzeugender Objekte durch die Verwendung eines prototypischen Exemplars und erzeuge neue Objekte durch Kopieren dieses Prototypen.

Harald Köbler Motivation: Das Erzeugen einer Instanz einer Klasse ist sehr zeitraubend oder komplex. Es werden Kopien der original Instanz erzeugt und abgeändert.

Harald Köbler Anwendbarkeit: System soll unabhängig davon sein, wie seine Produkte erzeugt, zusammengesetzt und repräsentiert werden

Harald Köbler Anwendbarkeit: System soll unabhängig davon sein, wie seine Produkte erzeugt, zusammengesetzt und repräsentiert werden Klassen werden erst zur Laufzeit spezifiziert

Harald Köbler 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

Harald Köbler 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

Harald Köbler Struktur:

Harald Köbler Konsequenzen: versteckt konkrete Produktklassen von dem Client ( Abstract Factory, Builder)

Harald Köbler Konsequenzen: versteckt konkrete Produktklassen von dem Client ( Abstract Factory, Builder) Client kann ohne Modifikation mit anwendungsspezifische Klassen arbeiten

Harald Köbler 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

Harald Köbler 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

Harald Köbler 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

Harald Köbler 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

Harald Köbler 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

Harald Köbler Implementierung: statisch typisierten Programmiersprachen wie C++

Harald Köbler Implementierung: statisch typisierten Programmiersprachen wie C++ Verwendung von Prototypenverwalter

Harald Köbler Implementierung: statisch typisierten Programmiersprachen wie C++ Verwendung von Prototypenverwalter Implementierung der Clone()-Operation shallow copy – deep copy

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

Harald Köbler Beispielcode: class Swimmer { String name; int age; String club; float time; boolean female; }

Harald Köbler 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(); }

Harald Köbler 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()); }

Harald Köbler 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

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

Harald Köbler Beispielcode: Nach Clone

Harald Köbler Beispielcode: Nach Refresh:

Harald Köbler Verwandte Muster: Abstrakte Fabrikmuster (Abstract Factory) Kompitions- und Dekorierermuster (Composite, Decorator)

Harald Köbler Prototype im nicht-Computerbereich:

Harald Köbler

Harald Köbler 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

Harald Köbler Internetquellen: www2.informatik.uni-erlangen.de/Lehre/SS01/XML/Docs/Erzeugungsmuster.pdf Catalog of Non-Software Examples of Design Patterns: