OVH Cloud OVH Cloud

qu'est-ce que le polymorphisme?

41 réponses
Avatar
doryparker
En gros,qu'est-ce que le polymorphisme en C++?
Après plusieurs lectures de bouquins en C++,je n'arrive toujours pas à
vraiment comprendre ce que c'est(termes compliqués)

Merci.

10 réponses

1 2 3 4 5
Avatar
James Kanze
Gabriel Dos Reis writes:

|> Trognon Patrice writes:

|> Groumph. Donc tu appelles les templates C++ des « generics » ?

|> | Utiliser le mot polymorphisme dans differents contexte ne fait
|> | qu'allourdir sa comprehension.

Il y a une question intéressante, je crois : est-ce qu'il convient de
parler du tout de « polymorphisme » dans un cours de C++ ou de Java. Le
concepte de polymorphisme est indépendant du langage -- les deux
langages ont divers moyens de l'implémenter, et tous les moyens qui y
servent servent aussi à résoudre d'autres problèmes. (En Java Swing,
AbstractButton hérite de SwingConstants. J'espère qu'il ne présente pas
cet héritage comme du polymorphisme.)

Où je verrais bien le polymorphisme, c'est dans un cours sur la
programmation, plus particulièrement sur la programmation orientée
objet. (Mais je me pose la question s'il y un sens à faire un cours sur
la programmation orientée objet, par rapport à un cours sur la
programmation tout courte, qui couvre l'orientation objet, mais aussi la
fonctionnelle, etc. Parce que j'avoue que dans environ trente ans de
programmation, il ne m'est jamais arrivé d'écrire un programme qui
n'utilise qu'un seul paradigme.)

Maintenant, on peut arguer qu'on ne peut pas enseigner la programmation
en C++ sans enseigner le C++. Je n'en disconviens pas, mais dans ce cas,
on va quand même présenter les conceptes de programmation indépendamment
des détails de leur implémentation, et on le doit aux élèves d'au moins
présenter l'idée que quelque soit le concepte, il se laisse matérialiser
dans un programme par des techniques diverses, selon le cas.

--
James Kanze
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Avatar
Fabien LE LEZ
On Sat, 09 Oct 2004 08:19:29 +0200, Trognon Patrice
:

Ce que je dis c'est que je ne vois pas ce qu'on a à y gagner
à rendre un language déjà en sois très compliqué encore
plus compliqué par des débats sur une définition.


Il n'y a pas débat, et on n'a pas le choix. Le mot "polymorphisme" a
un sens peut-être complexe (quoique... James en a fourni une
définition assez simple dans le message
<news:), mais
ce n'est pas une raison pour le modifier. Si la définition d'un mot ne
te convient pas, utilise un autre mot.


--
;-)

Avatar
Fabien LE LEZ
On 09 Oct 2004 17:52:39 +0200, James Kanze :

Il y a une question intéressante, je crois : est-ce qu'il convient de
parler du tout de « polymorphisme » dans un cours de C++ ou de Java.


Certainement. Mais pas forcément comme un truc fondamental -- ça peut
être juste une définition en passant (éventuellement vers la fin du
cours), histoire que les élèves ne pataugent pas trop s'ils
rencontrent ce mot...


--
;-)

Avatar
drkm
James Kanze writes:

Mais je me pose la question s'il y un sens à faire un cours sur
la programmation orientée objet, par rapport à un cours sur la
programmation tout courte


La mode (de là à dire que c'est un « sens » ...).

Je ne parle que de mes impressions en tant qu'étudiant.

--drkm

Avatar
James Kanze
Fabien LE LEZ writes:

|> On 09 Oct 2004 17:52:39 +0200, James Kanze :

|> >Il y a une question intéressante, je crois : est-ce qu'il convient
|> >de parler du tout de « polymorphisme » dans un cours de C++ ou de
|> >Java.

|> Certainement. Mais pas forcément comme un truc fondamental -- ça
|> peut être juste une définition en passant (éventuellement vers la
|> fin du cours), histoire que les élèves ne pataugent pas trop s'ils
|> rencontrent ce mot...

Tu n'as pas dû lire la suite de mon posting. Ou bien, je n'étais pas
clair.

En soi, le polymorphisme n'a rien à faire avec un langage, qui offre (ou
non) des techniques pour implémenter différents types de polymorphisme.
Le polymorphisme n'existe ni en Java ni en C++. On peut l'implémenter au
moyen de l'héritage, mais l'héritage n'est pas le polymorphisme -- on
peut, le cas échéant, l'implémenter avec d'autres moyens aussi, et tous
les héritages ne sont pas des implémentations d'un polymorphisme. Dans
la mésure où on n'enseigne QUE le langage, le polymorphisme n'a rien à y
faire.

Évidemment, c'est plutôt rare qu'on veut enseigner un langage sans
enseigner aussi de la programmation qu'on fait avec lui.

--
James Kanze
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
Avatar
Trognon Patrice
James Kanze wrote:

Fabien LE LEZ writes:

|> On 09 Oct 2004 17:52:39 +0200, James Kanze :

|> >Il y a une question intéressante, je crois : est-ce qu'il convient
|> >de parler du tout de « polymorphisme » dans un cours de C++ ou de
|> >Java.

|> Certainement. Mais pas forcément comme un truc fondamental -- ça
|> peut être juste une définition en passant (éventuellement vers la
|> fin du cours), histoire que les élèves ne pataugent pas trop s'ils
|> rencontrent ce mot...

Tu n'as pas dû lire la suite de mon posting. Ou bien, je n'étais pas
clair.

En soi, le polymorphisme n'a rien à faire avec un langage, qui offre (ou
non) des techniques pour implémenter différents types de polymorphisme.
Le polymorphisme n'existe ni en Java ni en C++. On peut l'implémenter au
moyen de l'héritage, mais l'héritage n'est pas le polymorphisme -- on
peut, le cas échéant, l'implémenter avec d'autres moyens aussi, et tous
les héritages ne sont pas des implémentations d'un polymorphisme. Dans
la mésure où on n'enseigne QUE le langage, le polymorphisme n'a rien à y
faire.

Évidemment, c'est plutôt rare qu'on veut enseigner un langage sans
enseigner aussi de la programmation qu'on fait avec lui.



100% d'accord avec toi.
Je le presente dans la partie sur l'objet et non sur le language,
puis on voit sa mise en oeuvre en Java ou en C++.

Avatar
Trognon Patrice
Gabriel Dos Reis wrote:

Trognon Patrice writes:

[...]

| Si la question initialement posée dans le NG est une question
| plus général, c'est à dire posée par un débuttant dans ce
| language, la réponse se doit d'etre plus 'légère', donc moins
| proche de la théorie.

Et le fait est que dans la pratique, polymorphisme couvre aussi bien
la résolution dynamique (appel de fonctions virtuelles) que la
résolution statique (surcharge et templates). Ça ce n'est pas de la
théorie. Si un prof ne comprend pas, il devrait être interdit
d'enseignement de C++.

[...]

| Ce que je trouve dommage, c'est qu'avec notre débat (fort interessant
| en ce qui me concerne) notre ami Max risque d'être conforté
| dans l'idée que C++ est décidement un language impossible :(

Seulement quelques profs ignorants l'aident dans cette direction.
Et c'est reconfortant pour moi de voir que Michel Michaud fait
beaucoup d'effort pour redresser la barre, par exemple en corrigeant
des erreurs de traduction dans le TC++PL, vf.



Entre le comprendre et la facon de le faire passer il y a un
monde.

Je réagit sur la facon de le faire passer, relit mon post tu le
verras bien !

Pat.

Avatar
Gabriel Dos Reis
Trognon Patrice writes:

[...]

| > | Ce que je trouve dommage, c'est qu'avec notre débat (fort interessant
| > | en ce qui me concerne) notre ami Max risque d'être conforté
| > | dans l'idée que C++ est décidement un language impossible :(
| >
| > Seulement quelques profs ignorants l'aident dans cette direction.
| > Et c'est reconfortant pour moi de voir que Michel Michaud fait
| > beaucoup d'effort pour redresser la barre, par exemple en corrigeant
| > des erreurs de traduction dans le TC++PL, vf.
| >
|
| Entre le comprendre et la facon de le faire passer il y a un
| monde.

Sane blague !

| Je réagit sur la facon de le faire passer, relit mon post tu le
| verras bien !

Mais qu'est-ce qui te fait croire que je n'ai pas lu et relu tes
messages avant de poster ? Parce que je ne suis pas d'accord avec toi ?

-- Gaby
Avatar
Arnaud Meurgues
Trognon Patrice wrote:


Ce qui se nomme un message en UML est en fait
un appel de méthode en C++ (ou dans tout autre
language objet).


En Smalltalk, ça s'appelle aussi un message (et sans doute en
objective-C aussi, du coup).

--
Arnaud
(Supprimez les geneurs pour me répondre)

Avatar
Arnaud Meurgues
max wrote:
En gros,qu'est-ce que le polymorphisme en C++?
Après plusieurs lectures de bouquins en C++,je n'arrive toujours pas à
vraiment comprendre ce que c'est(termes compliqués)


J'ai trouvé ce document qui parle de trois polymorphismes (ad-hoc,
d'héritage et paramétrique):

http://tecfa.unige.ch/perso/staf/duclaux/blog/archives/RessourcesPOO.pdf

(page 6)

Voir aussi
http://dchaffiol.free.fr/info/langages/obj/art_obj_Polym_r.htm

--
Arnaud
(Supprimez les geneurs pour me répondre)

1 2 3 4 5