 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Zouplaz Guest
|
Posted: Mon Sep 08, 2003 7:50 pm Post subject: Polymorphisme : est-ce juste ? |
|
|
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 !?
Merci
|
|
| Back to top |
|
 |
Arnaud Debaene Guest
|
Posted: Mon Sep 08, 2003 8:34 pm Post subject: Re: Polymorphisme : est-ce juste ? |
|
|
Zouplaz wrote:
| Quote: | Bonjour, j'ai trouvé cette définition du polymorphisme sur le web et
ça correspond exactement à l'idée que je m'en faisais :
snip
Donc, je synthétise ma demande :
1) la définition ci-dessus est-elle juste ?
oui |
| Quote: | 2) l'exemple que je fournis (le mien) est-il correct ?
oui |
Arnaud
|
|
| Back to top |
|
 |
Gabriel Dos Reis Guest
|
Posted: Mon Sep 08, 2003 11:43 pm Post subject: Re: Polymorphisme : est-ce juste ? |
|
|
Luc Hermitte <hermitte (AT) free (DOT) fr.invalid> writes:
| Quote: | 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 ?
-- Gaby
|
|
| Back to top |
|
 |
Alain Naigeon Guest
|
Posted: Tue Sep 09, 2003 12:04 am Post subject: Re: Polymorphisme : est-ce juste ? |
|
|
"Gabriel Dos Reis" <gdr (AT) integrable-solutions (DOT) net> a écrit dans le message
news: [email]m3n0dehmn1.fsf (AT) uniton (DOT) integrable-solutions.net[/email]...
Luc Hermitte <hermitte (AT) free (DOT) fr.invalid> writes:
| Quote: | 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 ?
Dans un autre fil, il a bien été dit que C++ est un sucre
syntaxique de l'assembleur - j'exagère juste un peu ;-)
--
Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - [email]anaigeon (AT) free (DOT) fr[/email] - Strasbourg, France
|
|
| Back to top |
|
 |
Christophe Lephay Guest
|
Posted: Tue Sep 09, 2003 12:10 am Post subject: Re: Polymorphisme : est-ce juste ? |
|
|
| Quote: | "Gabriel Dos Reis" <gdr (AT) integrable-solutions (DOT) net> a écrit dans le message
de news:m3n0dehmn1.fsf (AT) uniton (DOT) integrable-solutions.net...
Luc Hermitte <hermitte (AT) free (DOT) 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 ?
|
Peut-être ce qui permet des changements au niveau du design ?
Chris
|
|
| Back to top |
|
 |
Samuel Krempp Guest
|
Posted: Tue Sep 09, 2003 2:23 am Post subject: Re: Polymorphisme : est-ce juste ? |
|
|
le Mardi 9 Septembre 2003 02:10, [email]christophe-lephay (AT) wanadoo (DOT) fr[/email] écrivit :
| Quote: | vu comme cela, qu'est-ce qui n'est pas du sucre syntaxique ?
Peut-être ce qui permet des changements au niveau du design ?
|
faut voir que le mécanisme de résolution de surcharge fournit qd même des
possibilités, et permet bien des changements en matière de design..
--
Sam
|
|
| Back to top |
|
 |
Christophe Lephay Guest
|
Posted: Tue Sep 09, 2003 5:48 am Post subject: Re: Polymorphisme : est-ce juste ? |
|
|
"Gabriel Dos Reis" <gdr (AT) integrable-solutions (DOT) net> a écrit dans le message de
news:m3ad9ehj14.fsf (AT) uniton (DOT) integrable-solutions.net...
| Quote: | mais le design, c'est du sucre syntaxique sur le programme :-/
|
Avec un peu de sel sémantique, qui plus est ;)
Chris
|
|
| Back to top |
|
 |
Gabriel Dos Reis Guest
|
Posted: Tue Sep 09, 2003 6:28 am Post subject: Re: Polymorphisme : est-ce juste ? |
|
|
"Christophe Lephay" <christophe-lephay (AT) wanadoo (DOT) fr> writes:
| Quote: | "Gabriel Dos Reis" <gdr (AT) integrable-solutions (DOT) net> a écrit dans le message de
news:m3ad9ehj14.fsf (AT) uniton (DOT) integrable-solutions.net...
mais le design, c'est du sucre syntaxique sur le programme :-/
Avec un peu de sel sémantique, qui plus est
|
le programe a une sémantique, c'est le design qui serait un sucre
syntaxique sur cette sémantique.
-- Gaby
|
|
| Back to top |
|
 |
Zouplaz Guest
|
Posted: Tue Sep 09, 2003 9:25 am Post subject: Re: Polymorphisme : est-ce juste ? |
|
|
Luc Hermitte - [email]hermitte (AT) free (DOT) fr.inva[/email]lid :
| Quote: | Dans ton exemple, je suis quasi-persu‚d‚ que tu parles en fait de la
_red‚finition_ (overriding) (et non pas de la surcharge!) de m‚thodes
d‚finies dans une classe mŠre.
Ici, cela concerne directement le design de ton application car tu dis
qu'il est possible que l… o— un Objet3D est attendu, tu fourniras
peut-ˆtre bien un StaticObject dont la m‚thode Draw() aura ‚t‚
sp‚cialis‚e. [1]
|
Tu as tout à fait raison ! Il s'agit bien de redéfinition et non pas de
surcharge !!
Et dire que c'est du "syntaxic sugar" était déjà affirmé dans les plus
vieilles faq que j'ai pu lire il y a 10 ans.
Merci pour la précision
|
|
| Back to top |
|
 |
kanze@gabi-soft.fr Guest
|
Posted: Tue Sep 09, 2003 10:05 am Post subject: Re: Polymorphisme : est-ce juste ? |
|
|
Zouplaz <pouet (AT) pouet (DOT) com> wrote
| Quote: | 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."
|
Elle a l'air un peu confus. D'abord, il parle de « message », qui fait
penser à Smalltalk. Mais en Smalltalk, pas besoin d'avoir une classe de
base en commun ; en Smalltalk, il n'y a pas de vérificatin de type
statique, et lors de la reception d'un message, on ne vérifie que
l'existance d'un méthode pour traiter ce message.
En général, je crois qu'une bonne définition de polymorphisme doit être
indépendante du langage, et même du fait que le typage soit statique (à
la C++) ou non (à la Smalltalk). Or, l'héritage n'y joue un rôle que
dans le cas du typage statique, où on hérite surtout des interfaces.
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. Le polymorphisme peuvent se résoudre lors de
la compilation, lors de l'édition de liens, ou lors de l'exécution --
lors qu'il se résoud lors de l'exécution, on parle souvent de la
programmation orientée objet.
| Quote: | 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.
|
Pas overloaded/surchargées. Overridden/rédéfinies
Sinon, c'est l'exemple classique du polymorphisme dynamique, c-à-d
résolution lors de l'exécution. La nécessité d'une classe Object3D, dans
ce cas, est due au typage statique de C++ ; dans Smalltalk, si les
classes de base ne comportaient pas d'implémentation dont tu voulais
héritée, elle ne serait pas nécessaire.
| Quote: | 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 ?
|
Je la trouve un peu confu, mais elle va dans le bon sens.
| Quote: | 2) l'exemple que je fournis (le mien) est-il correct ?
|
Tout à fait. C'est même l'exemple type.
| Quote: | 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 !?
|
Si on veut ignorer les détails, je dirais simplement :
- que la définition donnée ne concerne réelement que le polymorphisme
dynamique, lors de l'exécution, et qu'il en existe d'autres, et
- que la nécessité d'héritage dans le polymorphisme, c'est un artifact
du typage statique.
--
James Kanze GABI Software mailto:kanze (AT) gabi-soft (DOT) 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
|
|
| Back to top |
|
 |
Luc Hermitte Guest
|
Posted: Tue Sep 09, 2003 12:44 pm Post subject: Re: Polymorphisme : est-ce juste ? |
|
|
drkm <darkman_spam (AT) yahoo (DOT) fr> wrote in news:wkllsymjfc.fsf (AT) yahoo (DOT) fr:
| Quote: | Je t'épargne les détails, au pire on a des références sous le coude.
On veut des noms !
|
cf la réponse de Gabriel à James. Il y a un article dispo en ligne qui
donne des définitions pour le polymorphisme -- google doit pouvoir
retrouver l'adresse que j'ai encore paumée.
--
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>
|
|
| Back to top |
|
 |
Luc Hermitte Guest
|
Posted: Tue Sep 09, 2003 12:46 pm Post subject: Re: Polymorphisme : est-ce juste ? |
|
|
Gabriel Dos Reis <gdr (AT) integrable-solutions (DOT) net> wrote in
news:m3n0dehmn1.fsf (AT) uniton (DOT) integrable-solutions.net:
| Quote: | Luc Hermitte <hermitte (AT) free (DOT) 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>
|
|
| Back to top |
|
 |
kanze@gabi-soft.fr Guest
|
Posted: Tue Sep 09, 2003 12:48 pm Post subject: Re: Polymorphisme : est-ce juste ? |
|
|
Gabriel Dos Reis <gdr (AT) integrable-solutions (DOT) net> wrote
| Quote: | kanze (AT) gabi-soft (DOT) 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.
| Quote: | 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 (AT) gabi-soft (DOT) 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
|
|
| Back to top |
|
 |
Gabriel Dos Reis Guest
|
Posted: Tue Sep 09, 2003 1:06 pm Post subject: Re: Polymorphisme : est-ce juste ? |
|
|
[email]kanze (AT) gabi-soft (DOT) fr[/email] writes:
| Quote: | (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
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|