intention séparer les traitements appliquées à différents type de nœuds d’une structure à...
TRANSCRIPT
Intention• Séparer les traitements appliquées à différents
type de nœuds d’une structure à l’algorithme de parcours
Motivations• Permet l’ajout de nouveaux types d’actions sur
les objets de la structure• Exemple : Système de fichier
• Renommage massif• Extraction selon type (*.png,*.jpg,… -> Images)
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
Exemple d’implémentation• Eléments :
• Chambre à coucher• WC• Cuisine• Salon• …
• Visiteurs :• Ménagère• Peintre• Décorateur• Voleurs
class Class Mo...
Toilettes
+ accept(Visiteur) : voidTerrasse
+ accept(Visiteur) : voidSallon
+ accept(Visiteur) : voidSalleDeBain
+ accept(Visiteur) : void
Piece
+ accept(Visiteur) : void+ getName() : String+ getSize() : Dimension+ setSize(Dimension) : void
ChambreACoucher
+ accept(Visiteur) : voidBureau
+ accept(Visiteur) : void
Menagere
+ visit(Bureau) : void+ visit(ChambreACoucher) : void+ visit(SalleDeBain) : void+ visit(Sallon) : void+ visit(Terrasse) : void+ visit(Toilettes) : void
«interface»Visiteur
+ visit(Bureau) : void+ visit(ChambreACoucher) : void+ visit(SalleDeBain) : void+ visit(Sallon) : void+ visit(Terrasse) : void+ visit(Toilettes) : void
Voleur
+ getNbObjetsVoles() : int+ visit(Bureau) : void+ visit(ChambreACoucher) : void+ visit(SalleDeBain) : void+ visit(Sallon) : void+ visit(Terrasse) : void+ visit(Toilettes) : void
Maison
1