Intention - PowerPoint PPT Presentation

kapila
intention n.
Skip this Video
Loading SlideShow in 5 Seconds..
Intention PowerPoint Presentation
play fullscreen
1 / 9
Download Presentation
Intention
160 Views
Download Presentation

Intention

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

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

  2. Motivations • Permet l’ajout de nouveaux types d’actions sur les objets de la structure sans les modifier • Exemple : Système de fichier • Renommage massif • Extraction selon type (*.png,*.jpg,… -> Images)

  3. Utilisation • Structure contenant un nombre de différent types de nœud fixe • 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

  4. Exemple d’implémentation • Eléments : • Chambre à coucher • WC • Cuisine • Salon • … • Visiteurs : • Ménagère • Peintre • Décorateur • Voleurs

  5. Interface visiteur publicinterface Visiteur { voidvisit(Bureau p); voidvisit(ChambreACoucher p); voidvisit(SalleDeBain p); voidvisit(Sallon p); voidvisit(Terrasse p); voidvisit(Toilettes p); }

  6. Menagère publicclassMenagereimplements Visiteur {    @Overridepublicvoidvisit(Bureau p){System.out.println("Nettoie bureau");}    @Overridepublicvoidvisit(Toilettes p){System.out.println("Nettoie les toilettes");}}

  7. 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++;}}

  8. 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);}}