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

Post on 06-Apr-2016

218 views 2 download

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

-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