En ayant lu l’ensemble, je me demande toujours ce qu’est concrètement un visiteur ?
Par exemple Base est abstraite pure et représente les expressions algébriques,les classes dérivées concrètes représentent les atomes (nombres et indeterminées) et les combinateurs + et * (pour simplifier).
Tu peux alors implémenter les algorithmes développer, dériver ou évaluer comme des visiteurs concrets de la classe de base.
Le point clef du modèle est que tu veux implémenter un traitement par une classe (le visiteur) qui reçoit un pointeur sur une classe abstraite, surlaquelle le visiteur ne sait rien faire: les traitements ne sont définis que sur les classes concrètes. En renversant l'ordre d'appel (c'est la classe abstraite qui se présente au visiteur par une méthode virtuelle, ce qui permet de récupérer le type concret de la classe).
[^] # Re: Intérêt du visiteur ?
Posté par Michaël (site web personnel) . En réponse au journal Visiteurs en C++. Évalué à 5.
Par exemple Base est abstraite pure et représente les expressions algébriques,les classes dérivées concrètes représentent les atomes (nombres et indeterminées) et les combinateurs + et * (pour simplifier).
Tu peux alors implémenter les algorithmes développer, dériver ou évaluer comme des visiteurs concrets de la classe de base.
Le point clef du modèle est que tu veux implémenter un traitement par une classe (le visiteur) qui reçoit un pointeur sur une classe abstraite, surlaquelle le visiteur ne sait rien faire: les traitements ne sont définis que sur les classes concrètes. En renversant l'ordre d'appel (c'est la classe abstraite qui se présente au visiteur par une méthode virtuelle, ce qui permet de récupérer le type concret de la classe).