Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Folie 1 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- -LABORPRAKTIKUM- SOMMERSEMESTER 2005 „Umsetzung von Pattern“ Muster:"—  Präsentation transkript:

1 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“

2 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

3 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

4 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

5 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

6 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

7 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

8 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

9 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)

10 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

11 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

12 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“: 

13 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“

14 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“

15 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“

16 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“

17 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“

18 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“

19 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“:

20 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“:

21 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“:

22 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

23 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


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

Ähnliche Präsentationen


Google-Anzeigen