Folie 1 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- -LABORPRAKTIKUM-...

23
-Laborpraktikum - Som m ersem ester 2005 „U m setzung von Pattern“ Folie 1 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- -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 „Softwaredes www.fh-wedel.de /~ si / vorlesungen / softwaredesign /Verhaltensmuster/ Iterato

Transcript of Folie 1 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- -LABORPRAKTIKUM-...

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

-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

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

-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

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

-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

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

-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

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

-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

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

-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

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

-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

Page 8: Folie 1 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- -LABORPRAKTIKUM- SOMMERSEMESTER 2005 „Umsetzung von Pattern“ 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

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

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

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

-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

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

-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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

-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

Page 23: Folie 1 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel 2000- -LABORPRAKTIKUM- SOMMERSEMESTER 2005 „Umsetzung von Pattern“ 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