Bonjour,
Je cogite sur la question suivante - j'ai une courbe paramétré C(t) que je représente par une classe (disons C) qui contient notamment une méthode pour calculer un point de la courbe (exemple - courbe de Bézier, algorithme de Casteljau). Pour dessiner la courbe, je peux rajouter une méthode qui va calculer le point et le tracer dans la foulée. Mais je ne pense pas que ce soit la bonne méthode de mélanger calcul et représentation, et je m'interroge sur la "best practice" pour séparer les deux. J'ai pensé aux possibilités suivantes (en supposant que je calcule les points et les stockes dans un <vecteur> qui est un param de la classe)
- ajouter à la classe une fonction amie qui permet d'accéder au vecteur des points pour dessiner le point
- laisser le vecteur "private" mais ajouter un itérateur public. Créer ensuite une fonction (qui n'est pas amie) qui prend en paramètre cet itérateur et dessine les points (variante: prend comme paramètre la classe C, ce qui permetrait de différencier la fonction dessiner "courbe" de dessiner "point"
- dans un contexte d'extensibilité de la solution, on peut penser qu'il y ait différentes versions de la fonction dessiner (par exemple en fonction des plateformes/OS). Du coup, pourquoi ne pas inclure une Factory (classe Context), inclure dans la classe C la classe Context (composition) qui a une méthode virtuelle "dessiner". En fonction des plateformes, il y a une fonction "dessiner" différente.
J'imagine que ce genre de problème est un "classique" et je voudrais savoir si il y a une "best practice".
En vous remerciant par avance.
Christian
Partager