1 / 20

Un visiteur… …venu d’ailleurs

Un visiteur… …venu d’ailleurs. Whooooooooooooooo !!!. Sommaire. Classification Intention Motivation Utilisation Constituants Structure Collaboration Conséquence Considération d’implémentation Exemple d’implémentation Mini Projet. Classification. Comportemental – Objet

dwight
Download Presentation

Un visiteur… …venu d’ailleurs

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Un visiteur… …venu d’ailleurs Whooooooooooooooo!!!

  2. Sommaire • Classification • Intention • Motivation • Utilisation • Constituants • Structure • Collaboration • Conséquence • Considération d’implémentation • Exemple d’implémentation • Mini Projet

  3. Classification • Comportemental – Objet • Objet => Relation dynamique par composition • Un élément fait appel à un visiteur • Comportemental => Collaborations, répartition des responsabilité

  4. Intention • Séparer et extraire les traitements appliquées à différents type de nœuds d’une structure

  5. Motivation • Permet l’ajout de nouveaux types d’actions sur les objets de la structure sans les modifier • Les actions divergent selon le type d’élément de la structure • Exemple : Compilateur • Parcours de l’arbre syntaxique • Traitement différent selon l’opérateur

  6. Utilisation • Structure dont le nombre de types d’éléments est peut variable • Structure sur laquelle on peut envisager d’appliquer plusieurs type de traitements • Exemple : • Système de fichiers • Compilateurs (variables, fonctions, opérateurs, …) • Liste de produits

  7. Constituant(1/2) • Structure de l’objet • Représente la structure des éléments • liste, Set, Composite - Arbre • Visiteur • Interface • Définit les méthode de visite pour chaque classe concrète de la structure • Elément • Interface représentant les éléments constituant la structure de l’objet • Définit la méthode abstraite permettant l’appel au visiteur

  8. Constituant(2/2) • Visiteur concret • Implémente les opérations du Visiteur • Définit un contexte pour la visite et garde son état local • Elément concret • Implémente la méthode d’appel au visiteur • Se passe en paramètre à la bonne méthode du visiteur

  9. Structure

  10. Collaboration

  11. Conséquence • Avantages • Facile de rajouter de nouvelles opération (visiteur) • Le visiteur peut garder des états des éléments. On ne doit ainsi pas les passer en argument. • Les algorithmes de traitement d’un élément ne sont pas dans sa classe => meilleure séparation • Désavantage • Difficile de rajouter de nouveaux éléments => il faut changer chaque visiteur => violation OCP • L’encapsulation est limitée car il faut laisser les méthodes d’accès en public dans l’élément

  12. Considération d’implémentation(1/2) • Chaque élément concret a une méthode associée dans le visiteur. • Rigueur dans la nomenclature, confusion • Une classe par nœuds, lourd si les nœuds ont les même propriétés. • Déclaration des accesseurs obligatoires(attribut public) pour les nœuds, afin d’accéder au contexte du nœud depuis le visiteur.

  13. Considération d’implémentation(2/2) • Double dispatch • Surcharge de la méthode accept avec le visiteur • Surcharge de la méthode visit avec le type nœud • Qui traverse la structure • La structure de l’objet • Collection, Composite • Le visiteur • Parcours dupliqué par visiteur • Parcours complexe • Itérateur séparé

  14. Exemple d’implémentation(1/6)Description • Eléments : • Chambre à coucher • WC • Cuisine • Salon • … • Visiteurs : • Ménagère • Peintre • Décorateur • Voleurs

  15. Exemple d’implémentation(2/6)Schéma UML

  16. Exemple d’implémentation(3/6)Visiteur publicinterface Visiteur { voidvisit(Bureau p); voidvisit(ChambreACoucher p); voidvisit(SalleDeBain p); voidvisit(Sallon p); voidvisit(Terrasse p); voidvisit(Toilettes p); }

  17. Exemple d’implémentation(4/6)Ménagère publicclassMenagereimplements Visiteur {    @Overridepublicvoidvisit(Bureau p){System.out.println("Nettoie bureau");}    @Overridepublicvoidvisit(Toilettes p){System.out.println("Nettoie les toilettes");}}

  18. Exemple d’implémentation(5/6)Voleur publicclass Voleur implements Visiteur {privateintnbObjetsVoles;publicintgetNbObjetsVoles(){returnnbObjetsVoles;}    @Overridepublicvoidvisit(Bureau p){System.out.printf("%20s --> %s\n", p.getClass().getSimpleName()," Vol l'ordinateur");nbObjetsVoles++;}    @Overridepublicvoidvisit(Toilettes p){System.out.printf("%20s --> %s\n", p.getClass().getSimpleName()," Vol la brosse");nbObjetsVoles++;}}

  19. Exemple d’implémentation(6/6)Principal publicstaticvoid main(String[]args){intnbPieces=10;    List<Piece>pieces=newLinkedList<Piece>();    Visiteur visiteur=newMenagere();String[]typePieces={"Bureau", "ChambreACoucher", "SalleDeBain","Sallon","Terrasse","Toilettes"};// Generation d'une maison aléatoirefor(int i =0; i <nbPieces; i++){pieces.add(newPieceAleatoire(typePieces));}// Afficher la structure de la maisonSystem.out.println("Pieces : ");for(Piece p :pieces){System.out.println("  - "+p.getName());}System.out.println();// Action sur la maisonfor(Piece p :pieces){p.accept(visiteur);}}

  20. Mini Projet • Programme de gestion d’un système de fichier • Les éléments: • Dossiers • Liens • Fichiers • Les visiteurs: • Statistique d’un dossier • Copie des fichiers respectant une expression régulière

More Related