Iterator Design Pattern Alessandro Soro Sylvain Giroux.

Slides:



Advertisements
Présentations similaires
Spécialisation/généralisation Héritage Polymorphisme.
Advertisements

Approfondissement du langage
F. Voisin : Introduction à Java 1 Introduction à Java - les interfaces - Frédéric VOISIN FIIFO - « Remise à Niveau »
JAV - TD 6 Structures de données JAVA
Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV1 JAV – TD 5 Lhéritage en Java.
PHP Interface base de données
Introduction à la POO: Les classes vs les objets
بسم الله الرحمن الرحيم. Institut Supérieure des Etudes Technologiques de Kébili.
Page de garde Introduction aux Design Patterns ISIA, Mars 2003
Pattern État PowerPoint 2003, télécharger la visionneuse PowerPoint Viewer dernière édition si vous ne lavez pas…télécharger la visionneuse PowerPoint.
Classes locales classes définies à l'intérieur d'un bloc de code,
Structures collectives en Java
IPA – Catherine Faron Zucke et Anne Marie Deryr. suite ordonnée d'éléments de taille variable ArrayList liste; liste = new ArrayList (); Ne peuvent contenir.
Programmation orientée objet
1 Cours JAVA / Y.Laborde Java : Les types génériques ( ) LES TYPES GENERIQUES : Introduction (diapo 2) Déclaration dun type générique (3) 1re déclaration.
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
POO-L3 H. Fauconnier1 Chapitre IV 1. classe Object, clonage 2. interfaces 3. classes internes et imbriquées.
Langage Oriente Objet Cours 4.
IFT1025, Programmation 2 Jian-Yun Nie
Chapitre 21 Collections Partie I Introduction Une collection : est un objet qui regroupe multiple éléments dans une unité. Une collection est.
Factory Design Patterns Factory Method
1 Objectifs de ce cours (I21) Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde Résumé du cours précédent.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
DESS CCI POO-JAVA TD n°7 exercice n°1
Behavioral Design Patterns The Observer Pattern Roberto Demontis Sylvain Giroux.
Rappels Java.
Introduction au paradigme orienté-objet (suite)
Présentation Structures de Données et TDA
Un patron de conception
POO-L3 H. Fauconnier1 Supplément gratuit…. POO-L3 H. Fauconnier2 Entrée-sortie public static void main(String[] args) { // sortie avec printf ou double.
Design Pattern Memento. Principe : Enregistrer les changements d'états d'un objet Objectif : Pouvoir restituer les états précédents d'un objet.
Types de données abstrait et mécanismes d'encapsulation
COURS DE PROGRAMMATION ORIENTEE OBJET :
Java, les objets : tout de suite ! Rassembler, grouper les objets
Synchronisation Classique
Objectifs À la fin de ce cours, vous serez capables de :
COURS DE PROGRAMMATION ORIENTEE OBJET :
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
Cours n°3 rappels. POO-L3 H. Fauconnier2 Entrée-sortie public static void main(String[] args) { // sortie avec printf ou double a = 5.6d ; double b =
Propriétés. Propriétés ► Les propriétés peuvent être visibles dans les environnements de scripts ► Les propriétés peuvent être accédées par programmation.
Factory Design Patterns. Contents Factory patterns: principesFactory patterns: principes The Factory Method patternThe Factory Method pattern The Abstract.
Cours 9 Exceptions (fin) Généricité. POO-L3 H. Fauconnier2 Chaînage d'exceptions  Une exception peut être causée par une autre.  il peut être utile.
Cours 7 Classes locales Clonage Divers: tableaux.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 6 – Exceptions.
Un visiteur… …venu d’ailleurs Whooooooooooooooo!!!
Tutorat en bio-informatique
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
ETNA – 1ème année Guillaume Belmas –
Un visiteur… …venu d’ailleurs
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Schéma de conception Factory Method Exemple Sylvain Giroux.
C# de plus près.  Ce sont globalement les mêmes que Java : ◦ Int(int16, int32), float, double, bool,…  Les classe « communes » sont également les mêmes.
Cours du 5 novembre.
Master 1 SIGLIS Intégration des données dans l’entreprise Stéphane Tallard JDBC: Java Database Connectivity Master 1 SIGLIS1JDBC.
6ième Classe (Mercredi, 17 novembre) CSI2572
Liste Une liste est une séquence d’éléments. Concept important: Chaque élément possède une position dans la liste. Notation: De quelles opérations a-t-on.
Introduction à la programmation objet avec java
Héritage Conception par Objet et programmation Java
Cours du 26 octobre  Classes internes  Clones POO-L3 H. Fauconnier1.
Factory Design Patterns Raffaella Sanna Sylvain Giroux.
Conception de Programmes - IUT de Paris - 1ère année Les classes Introduction Déclaration d’une classe Utilisation d’une classe Définition des.
BlueJ_VII 1 Java, les objets : tout de suite ! Conception de classes (1) Notes de cours associées au chapitre 7 tutorial BlueJ
Template Method Design Pattern. But Définir le squelette d’un algorithme tout en déléguant certaines étapes aux sous-classes. Les sous-classes peuvent.
Un visiteur… …venu d’ailleurs Whooooooooooooooo!!!
JAVA et l'orientation objet Jean-Jacques LE COZ. Encapsulation L'encapsulation est le concept de masquer l'implémentation de la classe De ne permettre.
POO-L3 H. Fauconnier1 Classes locales  classes définies à l'intérieur d'un bloc de code,  analogue à des variables locales: une classe interne locale.
Transcription de la présentation:

Iterator Design Pattern Alessandro Soro Sylvain Giroux

Plan But et Motivation Structure et implémentation Exemple Conclusion Références

But et motivation Problèmes – Fournir une façon de parcourir un objet aggrégé de manière indépendante de son implémentation. – Permettre différents parcours des objets aggrégés – Fournir une interface uniforme pour parcourir diverses structures aggrégées, Supporter l’itération polymorphique Solution – Extraire la responsabilité pour les accès et les parcours et la donner à un objet iterator.

Structure

Participants Aggregate: – Interface standard pour créer les objets Iterator. ConcreteAggregate: – Implémente createIterator() qui rend une instance de l’itérateur concret (ConcreteIterator). Iterator: – Définit une interface pour accéder et parcourir les éléments. ConcreteIterator: – Implémente Iterator, connaît les détails interne de ConcreteAggregate.

Problèmes d’implémentation Qui contrôle l’itération? – le client  external iterator – iterator  internal iterator Où est défini l’algorithme de parcours? – dans Iterator  solution la plus commune, il est ainsi facile d’avoir plus qu’une technique de parcours – Dans l’aggrégat  Iterator ne conserve que l’état de l’itération (cursor) Accès concurrent aux objets aggregate. – Un itérateur qui permet des modifications parallèles sans faire une copie de la structure est dit robuste Opérations supplémentaires – Previous() – SkipTo(); Index() – Remove(); Replace()

Exemple public abstract class AbstractList extends AbstractCollection implements List { private class Itr implements Iterator { //voir page suivante } public int size() {... } abstract public Object get(int index); public Iterator iterator() { return new Itr(); }

Exemple private class Itr implements Iterator { int cursor = 0; int lastRet = -1; int expectedModCount = modCount; public boolean hasNext() { return cursor != size(); } public Object next() { try {Object next = get(cursor); checkForComodification(); lastRet = cursor++; return next; } catch(IndexOutOfBoundsException e) { checkForComodification(); throw new NoSuchElementException(); }... }

Exemple private class Itr implements Iterator {.... public void remove() { if (lastRet==-1) throw new IllegalStateException(); checkForComodification(); try { AbstractList.this.remove(lastRet); if (lastRet<cursor) cursor--; lastRet=-1; expectedModCount=modCount; } catch (IndexOutOfBoundsException e) { throw new ConcurrentModificationException(); } private final void checkForComodification() { if (modCount != expectedModCount) throw new ConcurrentModificationException(); }

Exemple d’utilisation java.util.Collection c = new java.util.ArrayList(); c.add(new String("uno")); c.add(new String("due")); c.add(new String("tre")); java.util.Iterator i = c.iterator(); while (i.hasNext()) { System.out.println(i.next().toString()); }

Conclusion Usages connus – interface java.util.Enumerator. – interface Java 2 Collections Framework Iterator Iterators – Similar to the familiar Enumeration interface,Enumeration – but more powerful, and with improved method names. – Iterator – Iterator In addition to the functionality of the Enumeration interface, allows the user to remove elements from the backing collection with well defined, useful semantics. – ListIterator – ListIterator Iterator for use with lists. In addition to the functionality of the Iterator interface, supports bi-directional iteration, element replacement, element insertion and index retrieval.

Conclusion Patrons de conception reliés – Factory method  itérateurs polymorphiques – Composite  pour parcours récursivement des structures composites – Visitor  pour appliquer une opération à chaque membre d’une structure – Memento  pour sauver l’état d’une itération

Références Design Patterns: Elements of Reusable Object-Oriented Software Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides The Iterator Pattern Design Patterns In Java Bob Tarr The collection framework – /index.html /index.html