folie 1 jan-peter schmidt matthias teske -fernstudium informatik- -matrikel 2000- -laborpraktikum-...
Post on 06-Apr-2016
218 Views
Preview:
TRANSCRIPT
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 1
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
-LABORPRAKTIKUM-SOMMERSEMESTER 2005
„Umsetzung von Pattern“Muster: -ITERATOR-
(Verhaltensmuster)
Gruppe: Jan-Peter SchmidtMatthias 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
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 2
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
1. Klassifizierung und Zweck
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung8. Beispiel9. Verwandte Muster
Klassifizierung:
Das Iteratormuster gehört zu den objektbasiertenVerhaltensmustern
Zweck:
Ermögliche den sequentiellen Zugriff auf die Elemente eineszusammengesetzten Objekts, ohne seine zugrunde liegendeRepräsentation offen zu legen.
Hinweis: Der Iterator ist auch bekannt als Cursor
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 3
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
2. Motivation (1/3)
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation (1/3)3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung8. Beispiel9. 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
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 4
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
2. Motivation (2/3)
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation (2/3)3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung8. Beispiel9. 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
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 5
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
2. Motivation (3/3)
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation (3/3)3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung8. Beispiel9. 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
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 6
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
3. Anwendbarkeit
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung8. Beispiel9. 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
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 7
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
4. Struktur
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung8. Beispiel9. Verwandte Muster
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 8
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
5. Teilnehmer
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung8. Beispiel9. 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
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 9
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
6. Konsequenzen
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung8. Beispiel9. 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ärbaumDer 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)
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 10
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
7. Implementierung (1/2)
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung
(1/2)8. Beispiel9. 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
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 11
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
7. Implementierung (2/2)
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung
(2/2)8. Beispiel9. 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
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 12
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
8. Beispiel (1/11) 1. Definition allgemeiner Interfaces
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung8. Beispiel (1/11)9. Verwandte Muster
1.1 Interface „Aggregat“
1.2 Interface „Iterator“
1.3 Interface „Drucken“:
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 13
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
8. Beispiel (2/11) 2. Beispiel-Implementierung: „Aggregat und Iterator“
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung8. Beispiel (2/11)9. Verwandte Muster
Beispiel 2.1: „MyArrayList“ / „MyArrayListIterator“
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 14
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
8. Beispiel (3/11) 2. Beispiel-Implementierung: „Aggregat und Iterator“
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung8. Beispiel (3/11)9. Verwandte Muster
Beispiel 2.1: „MyArrayList“ / „MyArrayListIterator“
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 15
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
8. Beispiel (4/11) 2. Beispiel-Implementierung: „Aggregat und Iterator“
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung8. Beispiel (4/11)9. Verwandte Muster
Beispiel 2.2.1: „MyTree“ / „MyTreeIterator“
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 16
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
8. Beispiel (5/11) 2. Beispiel-Implementierung: „Aggregat und Iterator“
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung8. Beispiel (5/11)9. Verwandte Muster
Beispiel 2.2.1: „MyTree“ / „MyTreeIterator“
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 17
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
8. Beispiel (6/11) 2. Beispiel-Implementierung: „Aggregat und Iterator“
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung8. Beispiel (6/11)9. Verwandte Muster
Beispiel 2.2.2: „MyReverseTree“ / „MyReverseTreeIterator“
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 18
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
8. Beispiel (7/11) 2. Beispiel-Implementierung: „Aggregat und Iterator“
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung8. Beispiel (7/11)9. Verwandte Muster
Beispiel 2.2.2: „MyReverseTree“ / „MyReverseTreeIterator“
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 19
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
8. Beispiel (8/11) 3. Beispiel-Anwendung „PersonenListe“
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung8. Beispiel (8/11)9. Verwandte Muster
3.1 Klasse „Client“:
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 20
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
8. Beispiel (9/11) 3. Beispiel-Anwendung „PersonenListe“
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung8. Beispiel (9/11)9. Verwandte Muster
3.2 Klasse „Person“:
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 21
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
8. Beispiel (10/11) 3. Beispiel-Anwendung „PersonenListe“
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung8. Beispiel (10/11)9. Verwandte Muster
3.3 Klasse „PersonenListe“:
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 22
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
8. Beispiel (11/11) 4. Visualisierung als Eclipse-PlugIn
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung8. Beispiel (11/11)9. Verwandte Muster
-Laborpraktikum-Sommersemester 2005
„Umsetzung vonPattern“
Folie 23
Jan-Peter SchmidtMatthias Teske
-Fernstudium Informatik--Matrikel 2000-
9. Verwandte Muster
Muster „Iterator“
1. Klassifizierung und Zweck
2. Motivation3. Anwendbarkeit4. Struktur5. Teilnehmer6. Konsequenzen7. Implementierung8. Beispiel9. 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
top related