C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Polymorphisme : est-ce juste ?

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Zouplaz
Guest





PostPosted: Mon Sep 08, 2003 7:50 pm    Post subject: Polymorphisme : est-ce juste ? Reply with 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."

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





PostPosted: Mon Sep 08, 2003 8:34 pm    Post subject: Re: Polymorphisme : est-ce juste ? Reply with quote



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





PostPosted: Mon Sep 08, 2003 11:43 pm    Post subject: Re: Polymorphisme : est-ce juste ? Reply with quote



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





PostPosted: Tue Sep 09, 2003 12:04 am    Post subject: Re: Polymorphisme : est-ce juste ? Reply with quote

"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





PostPosted: Tue Sep 09, 2003 12:10 am    Post subject: Re: Polymorphisme : est-ce juste ? Reply with quote

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





PostPosted: Tue Sep 09, 2003 2:23 am    Post subject: Re: Polymorphisme : est-ce juste ? Reply with quote

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





PostPosted: Tue Sep 09, 2003 5:48 am    Post subject: Re: Polymorphisme : est-ce juste ? Reply with 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...
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





PostPosted: Tue Sep 09, 2003 6:28 am    Post subject: Re: Polymorphisme : est-ce juste ? Reply with quote

"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 Wink

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





PostPosted: Tue Sep 09, 2003 9:25 am    Post subject: Re: Polymorphisme : est-ce juste ? Reply with quote

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





PostPosted: Tue Sep 09, 2003 10:05 am    Post subject: Re: Polymorphisme : est-ce juste ? Reply with quote

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





PostPosted: Tue Sep 09, 2003 12:44 pm    Post subject: Re: Polymorphisme : est-ce juste ? Reply with quote

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





PostPosted: Tue Sep 09, 2003 12:46 pm    Post subject: Re: Polymorphisme : est-ce juste ? Reply with quote

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 Wink
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





PostPosted: Tue Sep 09, 2003 12:48 pm    Post subject: Re: Polymorphisme : est-ce juste ? Reply with quote

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





PostPosted: Tue Sep 09, 2003 1:06 pm    Post subject: Re: Polymorphisme : est-ce juste ? Reply with quote

[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
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.