Bonjour à tous et toutes,
je suis en train de réfléchir a la programmation d'un petit langage utilisant du calcul formel pour mes besoins personnels.
Idéalement, j'aimerais que l'utilisateur (moi ) puisse coder quelque chose du genre :

ou

(fun est le mot clef imaginaire menant a la définition d'une fonction)

dans les deux cas, mon parser me fabrique un objet instance de la classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
class fonction {
private :
ArbreExpr A; //Voir texte
public :
bool ispolynome();};
Ou ArbreExpr est un arbre dont les nœuds sont composés des opérateurs arithmétiques de bases ainsi que d’éventuelles fonctions (cf sin dans g) et les feuilles sont soient des doubles soient la variable x.
Il me semble assez facile (dans certains cas...) pour un objet de la classe fonction de se rendre compte qu'il est un polynôme.
De plus, il semble naturel que la classe polynôme dérive de la classe fonction. Du coup, ce que j aimerais c est que lors de la construction d'un objet de la classe fonction, celui ci s auto promeuve en polynome quand il est en mesure de comprendre qu il en a l intérêt.

Je suis mathématicien de formation (s'il vous plait évitez de me faire remarquer que dans mon mécanisme précédent j'ai fait des raccourcis mathématiques en pensant m'apprendre quelque chose de ce point de vu) je m'adresse a vous car je ne suis pas du tout informaticien et je me demande si ce down casting est nécessaire ? maladroit ? normal ? réalisable ?

Une autre solution serait d'implémenter cette promotion dans mon parser : par exemple, au moment de l entrée d'un pointeur d'objet fonction dans la table de symboles, un appel a la fonction membre ispolynome() par puis un appel à un constructeur de la classe polynome prenant une fonction comme argument en cas de réponse positive... cette méthode me semble moins sexy mais peut être est ce la méthode à employer ?

Si vous avez d'autres idées, je suis preneur !