Muster „Iterator“

Werbung
-LABORPRAKTIKUMSOMMERSEMESTER 2005
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
„Umsetzung von Pattern“
Muster:
-ITERATOR(Verhaltensmuster)
Gruppe:
Folie 1
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
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“
www.fh-wedel.de/~si/vorlesungen/softwaredesign/Verhaltensmuster/Iterator.html
1. Klassifizierung und Zweck
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
Beispiel
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 2
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
2. Motivation (1/3)
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation (1/3)
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
Beispiel
Verwandte Muster
Folie 3
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
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
2. Motivation (2/3)
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation (2/3)
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
Beispiel
Verwandte Muster
Folie 4
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
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
2. Motivation (3/3)
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation (3/3)
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
Beispiel
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
Folie 5
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
• Abstrakte Liste hat Methode ErzeugeIterator, somit wird für
jede konkrete Unterklasse spezieller Iterator erzeugt
3. Anwendbarkeit
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
Beispiel
Verwandte Muster
Folie 6
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
• 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
4. Struktur
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
Beispiel
Verwandte Muster
Folie 7
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
5. Teilnehmer
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
Beispiel
Verwandte Muster
Folie 8
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
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
6. Konsequenzen
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
Beispiel
Verwandte Muster
Folie 9
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
• Möglichkeit von Varianten der Traversierung, z.B. Vorwärtsund 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)
7. Implementierung (1/2)
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
(1/2)
Beispiel
Verwandte Muster
Folie 10
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
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
7. Implementierung (2/2)
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
(2/2)
Beispiel
Verwandte Muster
Folie 11
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
• 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
8. Beispiel (1/11)
1. Definition allgemeiner Interfaces
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
1.1 Interface „Aggregat“ 
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
Beispiel (1/11)
Verwandte Muster
1.2 Interface „Iterator“

1.3 Interface „Drucken“: 
Folie 12
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
8. Beispiel (2/11)
2. Beispiel-Implementierung: „Aggregat und Iterator“
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
Beispiel (2/11)
Verwandte Muster
Folie 13
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
Beispiel 2.1: „MyArrayList“ / „MyArrayListIterator“
8. Beispiel (3/11)
2. Beispiel-Implementierung: „Aggregat und Iterator“
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
Beispiel (3/11)
Verwandte Muster
Folie 14
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
Beispiel 2.1: „MyArrayList“ / „MyArrayListIterator“
8. Beispiel (4/11)
2. Beispiel-Implementierung: „Aggregat und Iterator“
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
Beispiel (4/11)
Verwandte Muster
Folie 15
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
Beispiel 2.2.1: „MyTree“ / „MyTreeIterator“
8. Beispiel (5/11)
2. Beispiel-Implementierung: „Aggregat und Iterator“
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
Beispiel (5/11)
Verwandte Muster
Folie 16
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
Beispiel 2.2.1: „MyTree“ / „MyTreeIterator“
8. Beispiel (6/11)
2. Beispiel-Implementierung: „Aggregat und Iterator“
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
Beispiel (6/11)
Verwandte Muster
Folie 17
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
Beispiel 2.2.2: „MyReverseTree“ / „MyReverseTreeIterator“
8. Beispiel (7/11)
2. Beispiel-Implementierung: „Aggregat und Iterator“
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
Beispiel (7/11)
Verwandte Muster
Folie 18
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
Beispiel 2.2.2: „MyReverseTree“ / „MyReverseTreeIterator“
8. Beispiel (8/11)
3. Beispiel-Anwendung „PersonenListe“
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
Beispiel (8/11)
Verwandte Muster
Folie 19
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
3.1 Klasse „Client“:
8. Beispiel (9/11)
3. Beispiel-Anwendung „PersonenListe“
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
Beispiel (9/11)
Verwandte Muster
Folie 20
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
3.2 Klasse „Person“:
8. Beispiel (10/11)
3. Beispiel-Anwendung „PersonenListe“
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
Beispiel (10/11)
Verwandte Muster
Folie 21
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
3.3 Klasse „PersonenListe“:
8. Beispiel (11/11)
4. Visualisierung als Eclipse-PlugIn
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
Beispiel (11/11)
Verwandte Muster
Folie 22
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
9. Verwandte Muster
-LaborpraktikumSommersemester 2005
„Umsetzung von
Pattern“
Muster „Iterator“
1.
2.
3.
4.
5.
6.
7.
8.
9.
Klassifizierung
und Zweck
Motivation
Anwendbarkeit
Struktur
Teilnehmer
Konsequenzen
Implementierung
Beispiel
Verwandte Muster
Folie 23
Jan-Peter Schmidt
Matthias Teske
-Fernstudium Informatik-Matrikel 2000-
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