Muster „Iterator“

 Documents

 27 views
of 23
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Description
-LABORPRAKTIKUM- SOMMERSEMESTER 2005 -Laborpraktikum- Sommersemester 2005 „Umsetzung von Pattern“ „Umsetzung von Pattern“ Muster: -ITERATOR-…
Share
Transcript
-LABORPRAKTIKUM- SOMMERSEMESTER 2005 -Laborpraktikum- Sommersemester 2005 „Umsetzung von Pattern“ „Umsetzung von Pattern“ Muster: -ITERATOR- (Verhaltensmuster) Gruppe: Jan-Peter Schmidt Matthias Teske Quellen: Folie 1 • Gamma, E., Helm, R., Jonson, R., Vlissides, J., Jan-Peter Schmidt „Entwurfsmuster“, Addison Wesley, Bonn, 1996 Matthias Teske • Prof. Dr. Uwe Schmidt, FH Wedel, Vorlesung „Softwaredesign“ -Fernstudium Informatik- www.fh-wedel.de/~si/vorlesungen/softwaredesign/Verhaltensmuster/Iterator.html -Matrikel 2000- 1. Klassifizierung und Zweck -Laborpraktikum- Sommersemester 2005 „Umsetzung von Klassifizierung: Pattern“ Das Iteratormuster gehört zu den objektbasierten Muster „Iterator“ Verhaltensmustern 1. Klassifizierung und Zweck 2. Motivation Zweck: 3. Anwendbarkeit 4. Struktur 5. Teilnehmer Ermögliche den sequentiellen Zugriff auf die Elemente eines 6. Konsequenzen zusammengesetzten Objekts, ohne seine zugrunde liegende 7. Implementierung Repräsentation offen zu legen. 8. Beispiel 9. Verwandte Muster Hinweis: Der Iterator ist auch bekannt als Cursor Folie 2 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- 2. Motivation (1/3) -Laborpraktikum- Sommersemester 2005 „Umsetzung von Gegeben: Pattern“ • Zusammengesetztes Objekt, z.B. Liste Muster „Iterator“ 1. Klassifizierung Anforderungen: und Zweck 2. Motivation (1/3) • Auf alle Elemente dieser Liste soll zugegriffen werden können 3. Anwendbarkeit 4. Struktur 5. Teilnehmer • Zugriff unabhängig von interner Struktur 6. Konsequenzen 7. Implementierung • Zugriff soll auf verschiedene Art möglich sein 8. Beispiel 9. Verwandte Muster • Schnittstelle der Listenklasse soll trotzdem schlank bleiben Folie 3 • Mehrfach gleichzeitige Traversierung soll möglich sein Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- 2. Motivation (2/3) -Laborpraktikum- Sommersemester 2005 „Umsetzung von Idee: Pattern“ • Zuständigkeit für Zugriff sowie Funktionalität zur Traversierung Muster „Iterator“ aus Listenobjekt ausgliedern 1. Klassifizierung und Zweck • Diese Funktionalität einem „Iterator-Objekt“ zuteilen 2. Motivation (2/3) 3. Anwendbarkeit 4. Struktur • Klasse Iterator definiert Schnittstelle zum Zugriff auf 5. Teilnehmer Listenelemente 6. Konsequenzen 7. Implementierung Beispiel: 8. Beispiel 9. Verwandte Muster • Klasse Liste führt zu der Klasse ListenIterator Folie 4 • Diese Klasse stellt die Methoden Start(), Weiter(), IstFertig() Jan-Peter Schmidt und AktuellesElement() bereit Matthias Teske -Fernstudium Informatik- -Matrikel 2000- 2. Motivation (3/3) -Laborpraktikum- Sommersemester 2005 „Umsetzung von Problematik: Pattern“ • Iterator und Liste sind gekoppelt, Client muss wissen, dass Muster „Iterator“ es eine „Liste“ ist und keine andere Struktur 1. Klassifizierung und Zweck • Somit Festlegung auf bestimmte Struktur 2. Motivation (3/3) 3. Anwendbarkeit 4. Struktur Erweiterte Idee: 5. Teilnehmer 6. Konsequenzen • Ausweitung des Iteratorkonzepts auf polymorphe Iteration 7. Implementierung 8. Beispiel 9. Verwandte Muster • Definition der Klasse AbstrakteListe  einheitliche Schnittstelle • Dementsprechend Definition der abstrakten Klasse Iterator Folie 5 Jan-Peter Schmidt • Abstrakte Liste hat Methode ErzeugeIterator, somit wird für Matthias Teske jede konkrete Unterklasse spezieller Iterator erzeugt -Fernstudium Informatik- -Matrikel 2000- 3. Anwendbarkeit -Laborpraktikum- Sommersemester 2005 „Umsetzung von • Zugriff auf Elemente eines zusammengesetzten Objekts Pattern“ ohne Offenlegung der internen Struktur Muster „Iterator“ • mehrfache gleichzeitige bzw. geschachtelte Traversierung 1. Klassifizierung und Zweck • einheitliche Schnittstelle zur Traversierung unterschiedlich 2. Motivation zusammengesetzter Strukturen (polymorphe Iteration) 3. Anwendbarkeit 4. Struktur 5. Teilnehmer • weniger geeignet, wenn Objekt rekursiv definiert ist 6. Konsequenzen 7. Implementierung • Kompositum nicht mit Iteratoren verarbeiten, sondern mit 8. Beispiel 9. Verwandte Muster Interpretierer und Besucher Folie 6 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- 4. Struktur -Laborpraktikum- Sommersemester 2005 „Umsetzung von Pattern“ Muster „Iterator“ 1. Klassifizierung und Zweck 2. Motivation 3. Anwendbarkeit 4. Struktur 5. Teilnehmer 6. Konsequenzen 7. Implementierung 8. Beispiel 9. Verwandte Muster Folie 7 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- 5. Teilnehmer -Laborpraktikum- Sommersemester 2005 „Umsetzung von Iterator: Pattern“ • definiert Schnittstelle zum Zugriff auf Elemente und zur Traversierung dieser Muster „Iterator“ 1. Klassifizierung KonkreterIterator: und Zweck • implementiert Schnittstelle von Iterator 2. Motivation • verwaltet aktuelle Position während Traversierung 3. Anwendbarkeit 4. Struktur 5. Teilnehmer Aggregat: 6. Konsequenzen • definiert Schnittstelle für Erzeugung Objekt der Klasse Iterator 7. Implementierung 8. Beispiel 9. Verwandte Muster Konkretes Aggregat: • implementiert Operationen zum Erzeugen eines konkreten Iterators Folie 8 • gibt Objekt der passenden KonkreterIterator-Klasse zurück Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- 6. Konsequenzen -Laborpraktikum- Sommersemester 2005 „Umsetzung von • Möglichkeit von Varianten der Traversierung, z.B. Vorwärts- Pattern“ und Rückwärtstraversierung Muster „Iterator“ • Vereinfachung der Aggregatschnittstelle, Aggregatklassen 1. Klassifizierung brauchen keine Iterationsschnittstelle anbieten und Zweck 2. Motivation • Ein Aggregat kann mehr als einmal gleichzeitig traversiert 3. Anwendbarkeit 4. Struktur werden, da der Iterator seinen eigenen Zustand verwaltet 5. Teilnehmer 6. Konsequenzen • Verwaltung ist allerdings nicht immer trivial: 7. Implementierung Bsp. Binärbaum 8. Beispiel 9. Verwandte Muster Der gesamte Pfad vom aktuellen Element (Knoten) bis zur Wurzel muss im Iterator verwaltet werden Folie 9 • Während der Iteration dürfen keine Modifikationen am Aggregat Jan-Peter Schmidt vorgenommen werden (Traversierung einer Kopie ist teuer) Matthias Teske -Fernstudium Informatik- -Matrikel 2000- 7. Implementierung (1/2) -Laborpraktikum- Sommersemester 2005 „Umsetzung von Viele Varianten und Alternativen möglich, z.B.: Pattern“ • Steuerung der Iteration Muster „Iterator“ - interner (passiver) Iterator: Iterator steuert selbst 1. Klassifizierung - externer (aktiver) Iterator: Client steuert Iteration, flexiblere und Zweck Variante: Prüfung auf Gleichheit zweier Behälter möglich 2. Motivation 3. Anwendbarkeit 4. Struktur • Definition des Traversierungsalgorithmus 5. Teilnehmer - muss nicht zwingend im Iterator erfolgen, auch im Aggregat 6. Konsequenzen möglich: Iterator speichert nur Zustand  Cursor! 7. Implementierung (1/2) 8. Beispiel • Robustheit 9. Verwandte Muster - stellt sicher, dass das Einfügen und Entfernen von Objekten nicht mit Traversierung in Konflikt gerät, ohne Aggregat zu Folie 10 kopieren Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- 7. Implementierung (2/2) -Laborpraktikum- Sommersemester 2005 „Umsetzung von • Zusätzliche Iteratoroperationen Pattern“ - Erweiterung der Schnittstelle des Iterators um Operationen wie Zurück() oder SpringeAuf(Element) Muster „Iterator“ 1. Klassifizierung • Iteratoren für Komposita und Zweck - Externe Iteratoren sind für rekursive Aggregationsstrukturen 2. Motivation schwer zu implementieren 3. Anwendbarkeit 4. Struktur - Einfacher durch internen Iterator, Speicherung der aktuellen 5. Teilnehmer Position durch rekursiven Aufruf 6. Konsequenzen - Preorder, Inorder-, Postorder- und Breitentraversierung 7. Implementierung von Komposita müssen über eigene Klasse möglich sein (2/2) 8. Beispiel 9. Verwandte Muster • Nulliteratoren - nützlich für Handhabung von Grenzbedingungen Folie 11 - ist immer am Ende der Iteration angelangt, also IstFertig() Jan-Peter Schmidt liefert immer true Matthias Teske - zur leichteren Traversierung von baumförmigen Aggregaten -Fernstudium Informatik- -Matrikel 2000- 8. Beispiel (1/11) 1. Definition allgemeiner Interfaces -Laborpraktikum- Sommersemester 2005 „Umsetzung von 1.1 Interface „Aggregat“  Pattern“ Muster „Iterator“ 1. Klassifizierung und Zweck 1.2 Interface „Iterator“  2. Motivation 3. Anwendbarkeit 4. Struktur 5. Teilnehmer 6. Konsequenzen 7. Implementierung 8. Beispiel (1/11) 9. Verwandte Muster 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“ -Laborpraktikum- Sommersemester 2005 „Umsetzung von Beispiel 2.1: „MyArrayList“ / „MyArrayListIterator“ Pattern“ 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 Folie 13 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- 8. Beispiel (3/11) 2. Beispiel-Implementierung: „Aggregat und Iterator“ -Laborpraktikum- Sommersemester 2005 „Umsetzung von Beispiel 2.1: „MyArrayList“ / „MyArrayListIterator“ Pattern“ 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 Folie 14 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- 8. Beispiel (4/11) 2. Beispiel-Implementierung: „Aggregat und Iterator“ -Laborpraktikum- Sommersemester 2005 „Umsetzung von Beispiel 2.2.1: „MyTree“ / „MyTreeIterator“ Pattern“ 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 Folie 15 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- 8. Beispiel (5/11) 2. Beispiel-Implementierung: „Aggregat und Iterator“ -Laborpraktikum- Sommersemester 2005 „Umsetzung von Beispiel 2.2.1: „MyTree“ / „MyTreeIterator“ Pattern“ 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 Folie 16 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- 8. Beispiel (6/11) 2. Beispiel-Implementierung: „Aggregat und Iterator“ -Laborpraktikum- Sommersemester 2005 „Umsetzung von Beispiel 2.2.2: „MyReverseTree“ / „MyReverseTreeIterator“ Pattern“ 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 Folie 17 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- 8. Beispiel (7/11) 2. Beispiel-Implementierung: „Aggregat und Iterator“ -Laborpraktikum- Sommersemester 2005 „Umsetzung von Beispiel 2.2.2: „MyReverseTree“ / „MyReverseTreeIterator“ Pattern“ 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 Folie 18 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- 8. Beispiel (8/11) 3. Beispiel-Anwendung „PersonenListe“ -Laborpraktikum- Sommersemester 2005 „Umsetzung von 3.1 Klasse „Client“: Pattern“ 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 Folie 19 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- 8. Beispiel (9/11) 3. Beispiel-Anwendung „PersonenListe“ -Laborpraktikum- Sommersemester 2005 „Umsetzung von 3.2 Klasse „Person“: Pattern“ 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 Folie 20 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- 8. Beispiel (10/11) 3. Beispiel-Anwendung „PersonenListe“ -Laborpraktikum- Sommersemester 2005 „Umsetzung von 3.3 Klasse „PersonenListe“: Pattern“ 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 Folie 21 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- 8. Beispiel (11/11) 4. Visualisierung als Eclipse-PlugIn -Laborpraktikum- Sommersemester 2005 „Umsetzung von Pattern“ 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 22 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- 9. Verwandte Muster -Laborpraktikum- Sommersemester 2005 „Umsetzung von Kompositum: Pattern“ • Iteratoren werden oft auf rekursive Strukturen wie Komposita Muster „Iterator“ angewendet 1. Klassifizierung und Zweck Fabrikmethode: 2. Motivation 3. Anwendbarkeit 4. Struktur • Polymorphe Iteratoren beruhen auf Fabrikmethode, um Objekt 5. Teilnehmer der richtigen Iteratorunterklasse zu erzeugen 6. Konsequenzen 7. Implementierung Memento: 8. Beispiel 9. Verwandte Muster • Iterator kann Memento nutzen, um den Zustand einer Iteration zwischenzuspeichern Folie 23 • Memento wird hier vom Iterator intern gespeichert Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000-
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks