Bonjour, j'ai trouvé cette définition du polymorphisme sur le web et ça
correspond exactement à l'idée que je m'en faisais :
"Le polymorphisme est le fait qu'un message identique envoye à
deux objets de classes differentes mais heritant d'une meme
superclasse puisse entrainer un traitement different de ce
message."
Dans mon cas, lors d'un projet il y a quelques mois j'avais un truc du
genre (ici version ultra simplifiée) :
classe object3D
classe staticObject dérivant de object3D
classe animatedObject dérivant de staticObject
classe character dérivant de object3D
classe player dérivant de character
dans object3D deux méthodes majeures étaient définies :
- update
- draw
et overloadées (surchargées) dans chaque classe dérivées.
ensuite, j'avais une classe scene dont un membre était un vector
d'object3D
Sauf que je créais des instances des classes dérivées et que je stockais
des pointeurs vers ces instances dans le vector en question.
Du coup, les méthodes update et draw appellée étaient correctes.
Ca semble bien correspondre à la définition ci-dessus et me semblait un
moyen très naturel de résoudre un certain nombre de problèmes (mais ce
n'est pas le propos).
Donc, je synthétise ma demande :
1) la définition ci-dessus est-elle juste ?
2) l'exemple que je fournis (le mien) est-il correct ?
Je dois rencontrer quelques profs de fac en vue de mon incarcération en
milieu technique, alors je voudrais pas bafouiller une énormité ;-)
Et pitié... Faites pas dans le détail !!!! Je sais qu'il y a ici des
intervenants très pointus sur le sujet... N'en faites pas trop hein !?
| La surcharge est un "sucre syntaxique" juste là pour simplifier la | vie du développeur
vu comme cela, qu'est-ce qui n'est pas du sucre syntaxique ?
j'aurais dû dire de la "sucrette syntaxique" ? ou alors deux sucres ;) Je voulais juste dire que la différence était plus flagrante au niveau du code que du design (si on compare à la redéfinition).
-- Luc Hermitte <hermitte at free.fr> FAQ de <news:fr.comp.lang.c++> : <http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/> Dejanews : <http://groups.google.com/advanced_group_search>
Gabriel Dos Reis <gdr@integrable-solutions.net> wrote in
news:m3n0dehmn1.fsf@uniton.integrable-solutions.net:
Luc Hermitte <hermitte@free.fr.invalid> writes:
| La surcharge est un "sucre syntaxique" juste là pour simplifier la
| vie du développeur
vu comme cela, qu'est-ce qui n'est pas du sucre syntaxique ?
j'aurais dû dire de la "sucrette syntaxique" ? ou alors deux sucres ;)
Je voulais juste dire que la différence était plus flagrante au niveau du
code que du design (si on compare à la redéfinition).
--
Luc Hermitte <hermitte at free.fr>
FAQ de <news:fr.comp.lang.c++> :
<http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/>
Dejanews : <http://groups.google.com/advanced_group_search>
| La surcharge est un "sucre syntaxique" juste là pour simplifier la | vie du développeur
vu comme cela, qu'est-ce qui n'est pas du sucre syntaxique ?
j'aurais dû dire de la "sucrette syntaxique" ? ou alors deux sucres ;) Je voulais juste dire que la différence était plus flagrante au niveau du code que du design (si on compare à la redéfinition).
-- Luc Hermitte <hermitte at free.fr> FAQ de <news:fr.comp.lang.c++> : <http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/> Dejanews : <http://groups.google.com/advanced_group_search>
kanze
Gabriel Dos Reis wrote in message news:...
writes:
| En fait, le polymorphisme, c'est simplement le fait de pouvoir | envoyer un message identique, ou appeler la même fonction (la | terminologie dépend du langage), sur des objets dont le type varie, | dont on ne connaît pas forcement le type, et dont les types ont des | implémentations différentes de la fonction.
cette définition exclut les fonctions templates de C++.
Ce n'était pas mon intention. Il me semble évident, par exemple, que quelque chose comme std::find est une fonction polymorphique -- ou plutôt, qu'il dépend du polymorphisme des opérateurs sur les itérateurs et de la fonction de comparison.
Voir les travaux de Stracher, Cardelli & Wegner.
On cherchait une définition simple... (Mais au fond, peut-être il n'y en a pas.)
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Gabriel Dos Reis <gdr@integrable-solutions.net> wrote in message
news:<m365k2fe9j.fsf@uniton.integrable-solutions.net>...
kanze@gabi-soft.fr writes:
| En fait, le polymorphisme, c'est simplement le fait de pouvoir
| envoyer un message identique, ou appeler la même fonction (la
| terminologie dépend du langage), sur des objets dont le type varie,
| dont on ne connaît pas forcement le type, et dont les types ont des
| implémentations différentes de la fonction.
cette définition exclut les fonctions templates de C++.
Ce n'était pas mon intention. Il me semble évident, par exemple, que
quelque chose comme std::find est une fonction polymorphique -- ou
plutôt, qu'il dépend du polymorphisme des opérateurs sur les itérateurs
et de la fonction de comparison.
Voir les travaux de Stracher, Cardelli & Wegner.
On cherchait une définition simple... (Mais au fond, peut-être il n'y en
a pas.)
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
| En fait, le polymorphisme, c'est simplement le fait de pouvoir | envoyer un message identique, ou appeler la même fonction (la | terminologie dépend du langage), sur des objets dont le type varie, | dont on ne connaît pas forcement le type, et dont les types ont des | implémentations différentes de la fonction.
cette définition exclut les fonctions templates de C++.
Ce n'était pas mon intention. Il me semble évident, par exemple, que quelque chose comme std::find est une fonction polymorphique -- ou plutôt, qu'il dépend du polymorphisme des opérateurs sur les itérateurs et de la fonction de comparison.
Voir les travaux de Stracher, Cardelli & Wegner.
On cherchait une définition simple... (Mais au fond, peut-être il n'y en a pas.)
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Gabriel Dos Reis
writes:
| (Mais au fond, peut-être il n'y en a pas.)
in fine, c'est ce que je voulais dire. Enfin, pour une définition appropriée de « simple ».
Inclure les fonctions templates demande un autre point de vue, mais alors on ne fait plus « simple », à part dire que polymophisme c'est le fait qu'un nom désigne une collection d'entités et dont la signification -- en tant qu'entité de la collection -- dépend du contexte. Mais alors, je suis certain que (1) soit ce n'est pas simple; (2) soit j'ai exclu quelque chose qu'on peut raisonnablement qualifier de polymorphe.
-- Gaby
kanze@gabi-soft.fr writes:
| (Mais au fond, peut-être il n'y en a pas.)
in fine, c'est ce que je voulais dire. Enfin, pour une définition
appropriée de « simple ».
Inclure les fonctions templates demande un autre point de vue, mais
alors on ne fait plus « simple », à part dire que polymophisme c'est
le fait qu'un nom désigne une collection d'entités et dont la
signification -- en tant qu'entité de la collection -- dépend du
contexte. Mais alors, je suis certain que
(1) soit ce n'est pas simple;
(2) soit j'ai exclu quelque chose qu'on peut raisonnablement
qualifier de polymorphe.
in fine, c'est ce que je voulais dire. Enfin, pour une définition appropriée de « simple ».
Inclure les fonctions templates demande un autre point de vue, mais alors on ne fait plus « simple », à part dire que polymophisme c'est le fait qu'un nom désigne une collection d'entités et dont la signification -- en tant qu'entité de la collection -- dépend du contexte. Mais alors, je suis certain que (1) soit ce n'est pas simple; (2) soit j'ai exclu quelque chose qu'on peut raisonnablement qualifier de polymorphe.