Folie 1 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- -LABORPRAKTIKUM- SOMMERSEMESTER 2005 „Umsetzung von Pattern“ Muster:

Slides:



Advertisements
Ähnliche Präsentationen
Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
Advertisements

Harald Köbler Software Design Patterns Prototype.
Graphen Ein Graph ist eine Kollektion von Knoten und Kanten. Knoten sind einfache Objekte. Sie haben Namen und können Träger von Werten, Eigenschaften.
Lineare Suche Divide-and-Conquer-Suche Kombinationssuche
Kapitel 4 Datenstrukturen
Christian A. Kopf Institut für Informatik FU Berlin Episode Recognizer Framework - Rahmenwerk zur Episodenerkennung.
Design Patterns- Entwurfsmuster
Hörsaalübung 1: Textuelle Beschreibung von Use Cases
Gliederung Motivation / Grundlagen Sortierverfahren
Threads Richard Göbel.
Java: Dynamische Datentypen
Listen Richard Göbel.
Baumstrukturen Richard Göbel.
DOM (Document Object Model)
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 - Bäume: Durchlaufreihenfolgen, Analyse nat. Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (11-1 –Selbstanordnende lineare Listen) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27-Selbstanordnende lineare Listen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 16 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Fliegengewicht Ein objektbasiertes Strukturmuster.
Sebastian Grahn Sebastian Kühn
Das Strukturmuster Kompositum von C. Günther, T. Hammerschmidt und D. Kuhn.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
Remote Methode Invocation (RMI)
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Folie 1 Christian Pfeffer Carsten Walther Fernstudium Informatik Matrikel LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: DECORATOR.
Entwurfsmuster – Iterator
Command Pattern Karola Schäuble,
Entwurfsmuster EDV Entwurfsmuster.
DVG Klassen und Objekte
Wir müssen also überlegen: Implementierung der Knoten, Implementierung der Kanten, daraus: Implementierung des Graphen insgesamt. Annahme: die Knoteninhalte.
Einführung in die Programmierung Datensammlung
Analyse (1) Oberstes Gebot: Typsicherheit muss in Sicht und Basis jeweils für sich gelten. Basisschema muss unverändert bleiben. Bei rein syntaktischer.
Kollektionstypen (1) Es sind polymorphe Typkonstruktoren, jeweils als Sorten- und als Klassenkonstruktor (t,v beliebige Typen): –set, Set :Ungeordnete.
Wizards & Builders GmbH Schulung Visual SourceSafe für Visual FoxPro Norbert Abb W&B.
FH-Hof 1 XML-Parser Richard Göbel. FH-Hof 2 XML-Parser- DOM Object Tree Parser Objekt der Klasse 'DocumentBuilderFactory' mit 'newInstance()' erzeugen.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Systementwurf Überblick: Entwicklung der globalen Problemlösungsstrategie.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lecture 13: (Container-)Datenstrukturen.
Interpreter Seminar Entwurfsmuster Tobias Webelsiep
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lecture 13: (Container-)Datenstrukturen.
Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. M. Thaller AM1: Re-usable Content in 3D und Simulationssystemen.
1.2 Trennung von Struktur und Inhalt
1.5 Das Entwurfsmuster Kompositum
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
Graphen und Bäume.
SWE1 / Übung 10 ( ) Rekursion Binärbäume.
Software Design Patterns
7.4 Traversieren von Bäumen
Java-Kurs Übung Besprechung der Hausaufgabe
Einführung in die Programmierung mit Java
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Entwurfsmuster (Design Pattern)
Laborpraktikum Umsetzung von Pattern SS 05 Prof. Paul, Dipl.-Inf. Fröhlich, Dipl.-Inf. Linke {paul | iti.cs.uni-magdeburg.de
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Design Pattern1 Motivation Entwurfsmuster Entwurf wiederverwendbarer objektorientierter Software schwer gute Entwürfe entstehen durch Wiederverwen- dung.
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Strategy Pattern Teachlet Autor: Sven Wende Replay durch Stephan Schwake Konzepte objektorientierter Programmiersprachen, SS 2006.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 3 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Tutorium Software-Engineering SS14 Florian Manghofer.
1. Die rekursive Datenstruktur Liste 1.5 Das Entwurfsmuster Kompositum
1. Die rekursive Datenstruktur Liste 1
 Präsentation transkript:

Folie 1 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel LABORPRAKTIKUM- SOMMERSEMESTER 2005 „Umsetzung von Pattern“ Muster: -ITERATOR- (Verhaltensmuster) Gruppe: Jan-Peter Schmidt Matthias Teske Quellen: Gamma, E., Helm, R., Jonson, R., Vlissides, J., „Entwurfsmuster“, Addison Wesley, Bonn, 1996 Prof. Dr. Uwe Schmidt, FH Wedel, Vorlesung „Softwaredesign“

Folie 2 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Klassifizierung und Zweck Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung 8.Beispiel 9.Verwandte Muster Klassifizierung: Das Iteratormuster gehört zu den objektbasierten Verhaltensmustern Zweck: Ermögliche den sequentiellen Zugriff auf die Elemente eines zusammengesetzten Objekts, ohne seine zugrunde liegende Repräsentation offen zu legen. Hinweis: Der Iterator ist auch bekannt als Cursor

Folie 3 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Motivation (1/3) Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation (1/3) 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung 8.Beispiel 9.Verwandte Muster Gegeben: Zusammengesetztes Objekt, z.B. Liste Anforderungen: Auf alle Elemente dieser Liste soll zugegriffen werden können Zugriff unabhängig von interner Struktur Zugriff soll auf verschiedene Art möglich sein Schnittstelle der Listenklasse soll trotzdem schlank bleiben Mehrfach gleichzeitige Traversierung soll möglich sein

Folie 4 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Motivation (2/3) Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation (2/3) 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung 8.Beispiel 9.Verwandte Muster Idee: Zuständigkeit für Zugriff sowie Funktionalität zur Traversierung aus Listenobjekt ausgliedern Diese Funktionalität einem „Iterator-Objekt“ zuteilen Klasse Iterator definiert Schnittstelle zum Zugriff auf Listenelemente Beispiel: Klasse Liste führt zu der Klasse ListenIterator Diese Klasse stellt die Methoden Start(), Weiter(), IstFertig() und AktuellesElement() bereit

Folie 5 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Motivation (3/3) Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation (3/3) 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung 8.Beispiel 9.Verwandte Muster Problematik: Iterator und Liste sind gekoppelt, Client muss wissen, dass es eine „Liste“ ist und keine andere Struktur Somit Festlegung auf bestimmte Struktur Erweiterte Idee: Ausweitung des Iteratorkonzepts auf polymorphe Iteration Definition der Klasse AbstrakteListe  einheitliche Schnittstelle Dementsprechend Definition der abstrakten Klasse Iterator Abstrakte Liste hat Methode ErzeugeIterator, somit wird für jede konkrete Unterklasse spezieller Iterator erzeugt

Folie 6 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Anwendbarkeit Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung 8.Beispiel 9.Verwandte Muster Zugriff auf Elemente eines zusammengesetzten Objekts ohne Offenlegung der internen Struktur mehrfache gleichzeitige bzw. geschachtelte Traversierung einheitliche Schnittstelle zur Traversierung unterschiedlich zusammengesetzter Strukturen (polymorphe Iteration) weniger geeignet, wenn Objekt rekursiv definiert ist Kompositum nicht mit Iteratoren verarbeiten, sondern mit Interpretierer und Besucher

Folie 7 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Struktur Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung 8.Beispiel 9.Verwandte Muster

Folie 8 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Teilnehmer Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung 8.Beispiel 9.Verwandte Muster Iterator: definiert Schnittstelle zum Zugriff auf Elemente und zur Traversierung dieser KonkreterIterator: implementiert Schnittstelle von Iterator verwaltet aktuelle Position während Traversierung Aggregat: definiert Schnittstelle für Erzeugung Objekt der Klasse Iterator Konkretes Aggregat: implementiert Operationen zum Erzeugen eines konkreten Iterators gibt Objekt der passenden KonkreterIterator-Klasse zurück

Folie 9 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Konsequenzen Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung 8.Beispiel 9.Verwandte Muster Möglichkeit von Varianten der Traversierung, z.B. Vorwärts- und Rückwärtstraversierung Vereinfachung der Aggregatschnittstelle, Aggregatklassen brauchen keine Iterationsschnittstelle anbieten Ein Aggregat kann mehr als einmal gleichzeitig traversiert werden, da der Iterator seinen eigenen Zustand verwaltet Verwaltung ist allerdings nicht immer trivial: Bsp. Binärbaum Der gesamte Pfad vom aktuellen Element (Knoten) bis zur Wurzel muss im Iterator verwaltet werden Während der Iteration dürfen keine Modifikationen am Aggregat vorgenommen werden (Traversierung einer Kopie ist teuer)

Folie 10 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Implementierung (1/2) Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung (1/2) 8.Beispiel 9.Verwandte Muster Viele Varianten und Alternativen möglich, z.B.: Steuerung der Iteration - interner (passiver) Iterator: Iterator steuert selbst - externer (aktiver) Iterator: Client steuert Iteration, flexiblere Variante: Prüfung auf Gleichheit zweier Behälter möglich Definition des Traversierungsalgorithmus - muss nicht zwingend im Iterator erfolgen, auch im Aggregat möglich: Iterator speichert nur Zustand  Cursor! Robustheit - stellt sicher, dass das Einfügen und Entfernen von Objekten nicht mit Traversierung in Konflikt gerät, ohne Aggregat zu kopieren

Folie 11 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Implementierung (2/2) Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung (2/2) 8.Beispiel 9.Verwandte Muster Zusätzliche Iteratoroperationen - Erweiterung der Schnittstelle des Iterators um Operationen wie Zurück() oder SpringeAuf(Element) Iteratoren für Komposita - Externe Iteratoren sind für rekursive Aggregationsstrukturen schwer zu implementieren - Einfacher durch internen Iterator, Speicherung der aktuellen Position durch rekursiven Aufruf - Preorder, Inorder-, Postorder- und Breitentraversierung von Komposita müssen über eigene Klasse möglich sein Nulliteratoren - nützlich für Handhabung von Grenzbedingungen - ist immer am Ende der Iteration angelangt, also IstFertig() liefert immer true - zur leichteren Traversierung von baumförmigen Aggregaten

Folie 12 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Beispiel (1/11) 1. Definition allgemeiner Interfaces Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung 8.Beispiel (1/11) 9.Verwandte Muster 1.1 Interface „Aggregat“  1.2 Interface „Iterator“  1.3 Interface „Drucken“: 

Folie 13 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Beispiel (2/11) 2. Beispiel-Implementierung: „Aggregat und Iterator“ Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung 8.Beispiel (2/11) 9.Verwandte Muster Beispiel 2.1: „MyArrayList“ / „MyArrayListIterator“

Folie 14 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Beispiel (3/11) 2. Beispiel-Implementierung: „Aggregat und Iterator“ Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung 8.Beispiel (3/11) 9.Verwandte Muster Beispiel 2.1: „MyArrayList“ / „MyArrayListIterator“

Folie 15 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Beispiel (4/11) 2. Beispiel-Implementierung: „Aggregat und Iterator“ Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung 8.Beispiel (4/11) 9.Verwandte Muster Beispiel 2.2.1: „MyTree“ / „MyTreeIterator“

Folie 16 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Beispiel (5/11) 2. Beispiel-Implementierung: „Aggregat und Iterator“ Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung 8.Beispiel (5/11) 9.Verwandte Muster Beispiel 2.2.1: „MyTree“ / „MyTreeIterator“

Folie 17 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Beispiel (6/11) 2. Beispiel-Implementierung: „Aggregat und Iterator“ Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung 8.Beispiel (6/11) 9.Verwandte Muster Beispiel 2.2.2: „MyReverseTree“ / „MyReverseTreeIterator“

Folie 18 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Beispiel (7/11) 2. Beispiel-Implementierung: „Aggregat und Iterator“ Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung 8.Beispiel (7/11) 9.Verwandte Muster Beispiel 2.2.2: „MyReverseTree“ / „MyReverseTreeIterator“

Folie 19 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Beispiel (8/11) 3. Beispiel-Anwendung „PersonenListe“ Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung 8.Beispiel (8/11) 9.Verwandte Muster 3.1 Klasse „Client“:

Folie 20 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Beispiel (9/11) 3. Beispiel-Anwendung „PersonenListe“ Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung 8.Beispiel (9/11) 9.Verwandte Muster 3.2 Klasse „Person“:

Folie 21 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Beispiel (10/11) 3. Beispiel-Anwendung „PersonenListe“ Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung 8.Beispiel (10/11) 9.Verwandte Muster 3.3 Klasse „PersonenListe“:

Folie 22 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Beispiel (11/11) 4. Visualisierung als Eclipse-PlugIn Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung 8.Beispiel (11/11) 9.Verwandte Muster

Folie 23 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel Verwandte Muster Muster „Iterator“ 1.Klassifizierung und Zweck 2.Motivation 3.Anwendbarkeit 4.Struktur 5.Teilnehmer 6.Konsequenzen 7.Implementierung 8.Beispiel 9.Verwandte Muster Kompositum: Iteratoren werden oft auf rekursive Strukturen wie Komposita angewendet Fabrikmethode: Polymorphe Iteratoren beruhen auf Fabrikmethode, um Objekt der richtigen Iteratorunterklasse zu erzeugen Memento: Iterator kann Memento nutzen, um den Zustand einer Iteration zwischenzuspeichern Memento wird hier vom Iterator intern gespeichert