Problème d'architecture sur des classes abstraites
Bonjour à tous :)
Ça fait maintenant plusieurs jours que je planche sur un petit programme de calcul en C++, et maintenant je me retrouve bloqué depuis un moment sur la conception du programme
Voila, je vous explique mon problème :
Je souhaite representer un calcul par la classe suivante (c'est volontairement abrégé, c'est juste histoire de se donner une idée) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
class Operateur {
public :
Operateur(Element l, Element r) : left(l), right(r), result(null) {}
Element getResult(){return result;}
virtual void calc(){} = 0;
/* cette fonction est à implémenter suivant les types d'elements manipulés */
private :
Element left;
Element right;
Element result;
}; |
Avec ça, je pourrais créer autant d'opérateurs que je veux (je suis très partisan de l'Open-Close).
Pour Element, j'avais au tout d'abord pensé à simplement créer une classe abstraite pure, qui ne posséderait que la méthode "getValue", afin de conserver l'Open-Close et donner à la possibilité à l'utilisateur de créer ses propres éléments et ses propres opérations.
Le problème vient de là : comment faire si l'on décide de créer (par exemple) un élément Frequency (dont getValue renverait un float) , et un élément NaturalInteger (dont getValue renverrait un int)
J'avais bien pensé à utiliser un template, mais le problème ne fait que ce déplacer, comment savoir quel type de données je vais manipuler dans les surcharges de calc() ?
J'avoue que là, je sèche totalement. Est-ce que l'un de vous pourrait m'aider ?
W. Bishop
PS : Pour les modos : si ce sujet n'est pas dans le bon thread, je m'en excuse et n'hésitez pas à le déplacer :)