Entwurfsmuster – Iterator

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
Imperative Programmierung
Klassen - Verkettete Liste -
Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
Harald Köbler Software Design Patterns Prototype.
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Konzepte objektorientierter Systeme
Übungskonzept für Algorithmen Informatik-Praktikum im Grundstudium Aron Ruß, Ingo Löhken, Martin Breede.
Design Patterns- Entwurfsmuster
Threads Richard Göbel.
Java: Dynamische Datentypen
Listen Richard Göbel.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (07 - Skiplisten) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 6 Model-View-Controler als Grundlage für Nutzerschnittstellen Sommersemester 2003 Lars Bernard.

Sebastian Grahn Sebastian Kühn
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
Entwurfsmuster EDV Entwurfsmuster.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
DVG Verkettete Listen Verkettete Listen. DVG Verkettete Listen 2 Primitive Datentypen Vorteile: –werden direkt vom Prozessor unterstützt.
Einführung in die Programmierung Datensammlung
Informatikunterricht mit Java
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
Kollektionstypen (1) Es sind polymorphe Typkonstruktoren, jeweils als Sorten- und als Klassenkonstruktor (t,v beliebige Typen): –set, Set :Ungeordnete.
Template Pattern Richard Göbel.
FH-Hof 1 XML-Parser Richard Göbel. FH-Hof 2 XML-Parser- DOM Object Tree Parser Objekt der Klasse 'DocumentBuilderFactory' mit 'newInstance()' erzeugen.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sitzung 3: Klassen, Objekte, Arrays und Kontrollstrukturen
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 6 Sitzung 6: Model-View-Controller als Grundlage.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Die Persistenzschicht
Rekursion mit Listen: Quicksort
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lecture 13: (Container-)Datenstrukturen.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Programmierung
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lecture 13: (Container-)Datenstrukturen.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Komponentenschnittstellen (1)
1.5 Das Entwurfsmuster Kompositum
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
EPROG Tutorium #5 Philipp Effenberger
Programmiervorkurs WS 2014/15 Methoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Referenzarchitektur Externes Datenmodell Anfragebearbeitung Internes Datenmodell Satz- u. Satzmengenverwaltung Physische Datenstrukturen Zugriffsschicht.
Java-Kurs Übung Besprechung der Hausaufgabe Listen und Mengen Komplexitäten Iteratoren (Durchlaufen von Listen/Mengen)
Java-Kurs Übung Besprechung der Hausaufgabe
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 14. Vorlesung WS 2001/2002.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 10. Vorlesung WS 2002/2003.
Folie 1 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel LABORPRAKTIKUM- SOMMERSEMESTER 2005 „Umsetzung von Pattern“ Muster:
Controller Werkstatt updaten Werkstatt ws = werkstattarray.get(werkstattId); ws.setName(name); ws.setAnsprechpartner(ansprechpartner); ws.setTelefonnummer(telefonnummer);
Tutorium Software-Engineering SS14 Florian Manghofer.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Die Klasse Vielfrass in Java
Allgemeine Befehle für die allgemeine Liste
1. Die rekursive Datenstruktur Liste 1
 Präsentation transkript:

Entwurfsmuster – Iterator Gina Puzic Der Iterator ist ein Verhaltensmuster. Er ist sowohl Klassen wie auch Objektbasiert.

Übersicht Entwurfsmuster Aufgabe Erzeugung-smuster Struktur-muster Verhaltensmuster Gültigkeits-bereich klassen-basiert Fabrikmethode Adapter 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 Iterator auch bekannt als Cursor. compound=Zusammensetzung(Mischen)   Entwurfsmuster Iterator

Zweck Zugriffsmöglichkeit auf eine Sammlung von Daten, ohne dass die darunter liegende Datenstruktur offengelegt wird. Iterator auch bekannt als Cursor. Bsp.Eine Liste von Objekten sollte die Möglichkeit bieten auf ihre Elemente zuzugreifen ohne ihre interne Struktur offenzulegen. Entwurfsmuster Iterator

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. 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. Entwurfsmuster Iterator

return new KonkreterIterator(this) Strukturdiagramm ErzeugeIterator() Aggregat KonkretesAggregat Start() Weiter() IstFertig() AktuellesElement() Iterator KonkreterIterator return new KonkreterIterator(this) Externer Iterator=Iteration vom Klient gesteuert erhöht die Flexibilität. Wird vom Klient gesteuert. Interner Iterator=Iteration vom Iterator selbst gesteuert. Verbirgt die Ausführung der Iteration vom Klient. ErzeugeIterator(): ähnlich wie virtueller Konstruktor(Fabrikmethode), da diese Methode ein Objekt erzeugt und zurückgibt. Entwurfsmuster Iterator

Teilnehmer Iterator KonkreterIterator Aggregat KonkretesAggregat Definiert Schnittstelle für Zugriff und Travesierung von Elementen ConcreteIterator Implementiert Iterator-Schnittstelle Aggregate Definiert eine Schnittstelle zur Erzeugung eines Iterator-Objektes ConcreteAggregate Implementiert die Iterator-Kreationsroutine und gibt eine Instanz von ConcreteIterator zurück Entwurfsmuster Iterator

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

Beispiel: Liste Polymorphe Iteratoren (Iteration vom Klient gesteuert) Aggregat ErzeugeIterator() Anzahl() HaengeAn(Element) Entferne(Element) … Klient Iterator Start() Weiter() IstFertig() AktuellesElement() Externer Iterator=Iteration vom Klient gesteuert erhöht die Flexibilität. Wird vom Klient gesteuert. Interner Iterator=Iteration vom Iterator selbst gesteuert. Verbirgt die Ausführung der Iteration vom Klient. Liste ListenIterator SkipListe SkipListenIterator Entwurfsmuster Iterator

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 } Entwurfsmuster Iterator

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); } Entwurfsmuster Iterator

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

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

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 Ein Hauptproblem: Der Iterator zeigt auf ein Element, das gelöscht wird. Entwurfsmuster Iterator

Umsetzung mit Observer Aggregat = Subjekt Iterator = Beobachter Änderung des Aggregats: Iterator wird benachrichtigt die update-Methode wird aufgerufen Probleme in Sprachen ohne Garbage Collector: Iterator muss vom Stack gelöscht (delete) werden Entwurfsmuster Iterator

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