Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Entwurfsmuster – Iterator Gina Puzic. Entwurfsmuster Iterator2 Übersicht Entwurfsmuster Entwurfsmuster Aufgabe Erzeugung- smuster Struktur- muster Verhaltensmuster.

Ähnliche Präsentationen


Präsentation zum Thema: "Entwurfsmuster – Iterator Gina Puzic. Entwurfsmuster Iterator2 Übersicht Entwurfsmuster Entwurfsmuster Aufgabe Erzeugung- smuster Struktur- muster Verhaltensmuster."—  Präsentation transkript:

1 Entwurfsmuster – Iterator Gina Puzic

2 Entwurfsmuster Iterator2 Übersicht Entwurfsmuster Entwurfsmuster Aufgabe Erzeugung- smuster Struktur- muster Verhaltensmuster Gültigkeits -bereich klassen- basiert FabrikmethodeAdapter Interpreter Schablonen- methode objekt- basiert Abstrakte Fabrik Erbauer Prototyp Singleton Adapter Brücke Dekorierer Fassade Fliegenge- wicht Kompositum Proxy Befehl Beobachter Besucher Iterator Momento Strategie Vermittler Zustand Zuständigkeits- kette

3 Entwurfsmuster Iterator3 Zweck Zugriffsmöglichkeit auf eine Sammlung von Daten, ohne dass die darunter liegende Datenstruktur offengelegt wird.

4 Entwurfsmuster Iterator4 Motivation Verschiedene Traversierungsalgorithmen auf eine Datenstruktur (z.B. Liste) anwenden können ohne ihre Schnittstelle aufblähen zu müssen. Die Datenstruktur zur selben Zeit mehrfach traversieren können. Die Aggregationsklasse ändern können ohne den Klientcode ändern zu müssen.

5 Entwurfsmuster Iterator5 Strukturdiagramm ErzeugeIterator() Aggregat ErzeugeIterator() KonkretesAggregat Start() Weiter() IstFertig() AktuellesElement() Iterator KonkreterIterator return new KonkreterIterator(this)

6 Entwurfsmuster Iterator6 Teilnehmer Iterator KonkreterIterator Aggregat KonkretesAggregat

7 Entwurfsmuster Iterator7 Anzahl() HaengeAn(Element) Entferne(Element) ….. Liste Start() Weiter() IstFertig() AktuellesElemtent() ListenIterator liste Index Trennung des Traversierungsalgorithmus vom Listenobjekt. Beispiel: Liste

8 Entwurfsmuster Iterator8 Beispiel: Liste Polymorphe Iteratoren (Iteration vom Klient gesteuert) ErzeugeIterator() Anzahl() HaengeAn(Element) Entferne(Element) … Aggregat Start() Weiter() IstFertig() AktuellesElement() Iterator ListenIterator Klient SkipListenIterator SkipListe Liste

9 Entwurfsmuster Iterator9 Beispielcode public interface Iterator{ public boolean hasNext() //Liefert true, falls noch weitere Elemente //verfügbar public Object next() //Liefert das nächste Element zurück public void remove() //Löscht das zuletzt mit next() abgerufenen //Element }

10 Entwurfsmuster Iterator10 Beispielcode import java.util.*; public class Beispiel {… //Füllen einer Liste ArrayList list=new ArrayList(); for(int i=0;i<5;i++){ list.add(i); }

11 Entwurfsmuster Iterator11 Beispielcode … //Löschen von Elementen mit dem Iterator Iterator it=list.iterator(); while(it.hasNext()){ String s=(String) it.next(); if(s=="abc"){ it.remove(); }

12 Entwurfsmuster Iterator12 Beispielcode … //Ausgeben aller Elemente while(it.hasNext()){ System.out.println((String) it.next()); }

13 Entwurfsmuster Iterator13 Robustheit des Iterators Probleme beim Ändern des Aggregats während der Traversierung. Lösung 1: Kopieren des Aggregats zu teuer Lösung 2: Einen robusten Iterator verwenden z.B. Benutzung des Observer Patterns

14 Entwurfsmuster Iterator14 Umsetzung mit Observer Aggregat = Subjekt Iterator = Beobachter Änderung des Aggregats: Iterator wird benachrichtigt die update-Methode wird aufgerufen

15 Entwurfsmuster Iterator15 Literaturverzeichnis Entwurfsmuster: Elemente wiederverwendbarer objektorientierter Software Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides.


Herunterladen ppt "Entwurfsmuster – Iterator Gina Puzic. Entwurfsmuster Iterator2 Übersicht Entwurfsmuster Entwurfsmuster Aufgabe Erzeugung- smuster Struktur- muster Verhaltensmuster."

Ähnliche Präsentationen


Google-Anzeigen