|
|
|
| /* Edition Française */ |
| « Précédent | Page 1 | Suivant » |
Re: Pas tout à fait compris ce truc appelé "polymorphysme". (T)
2008-04-16 03:35
•
par
Doc
(non enregistré)
|
|
Déjà, le polymorphisme, ce n'est pas l'héritage, qui est la définition donnée
ici, mais le fait de choisir la méthode selon le type de l'objet sur laquelle on l'appelle (ou a qui on passe le message en terminologie smalltalk). La même méthode fait donc des choses différentes selon le premier argument (ici implicite, l'objet lui même), d'où le nom. Ensuite, dans le code présenté, le test sur le type ne se fait pas sur l'objet lui même (this, self, etc.), mais sur un autre objet, passé en paramètre de la méthode donc. Dans ce cas, ce n'est plus du polymorphisme (single dispatch), mais du multiple dispatch, aussi appelé multi-méthodes, ou binding multiple... ce qui n'est pas du tout la même chose, et qui peut effectivement prendre cette forme dans un langage objet ne supportant pas ce paradigme (comme le Java qui semble être utilisé ici). |
Re: Pas tout à fait compris ce truc appelé "polymorphysme". (T)
2008-04-16 03:55
•
par
Jocelyn Demoy
|
|
Le code semble montrer que la personne fait un cast pour obtenir un attribut qui est partagé par toutes les classes testées : getAttribs(). Il aurait donc du créer une interface à ces classes "attribuables", cette interface définissant getAttribs() et étant implémentée par les classes MMS... Il aurait ensuite casté simplement le paramètre en attribuable pour récupérer directement la classe, évitant ainsi les multiples "instance of". Donc, on parle bien d'objet d'interfaces et de polymorphisme ;)
|
Re: Pas tout à fait compris ce truc appelé "polymorphysme". (T)
2008-04-16 06:10
•
par
Doc
(non enregistré)
|
|
je suis d'accord sur le getAttribs... encore qu'il peut y avoir des situations qui justifient ce genre de code. Je voulais juste 1. corriger la def du polymorphisme donnée, 2. élargir un peut le débat ;) Il peut etre tres difficile de juger du code d'apres un extrait aussi bref. Si c'est tout ce qui est fait dans ce bout de code, je suis d'accord que c'est pas la bonne méthode, mais il reste possible de trouver des conditionnelles sur le type dans du code propre, même dans un langage objet fortement typé.
|
Re: Pas tout à fait compris ce truc appelé "polymorphysme". (T)
2008-04-16 18:36
•
par
ID
(non enregistré)
|
|
Hey doc calme toi.
Et puis tu sais ce qu'on dit avec la culture et la confiture ? :p |
Re: Pas tout à fait compris ce truc appelé "polymorphysme". (T)
2008-04-17 09:27
•
par
LordOfThePigs
|
|
Désolé, mais je vois pas de multiple dispatch ici... Le gars switch vraiment sur le type de l'objet dont il appelle la méthods getAttribs()
|
Re: Pas tout à fait compris ce truc appelé "polymorphysme". (T)
2008-04-17 12:08
•
par
Pierre Tramo
(non enregistré)
|
|
Je crois que Doc et Jocelyn ont raison tous les deux.
Je suis a priori d'accord sur l'extraction d'une interface pour la question du getAttribs(). Maintenant, si les classes en question viennent d'une bibliothèque sur laquelle on n'a pas la main, c'est plus compliqué ^^ donc la remarque sur le contexte du code est AMHA légitime ;) |
Re: Pas tout à fait compris ce truc appelé "polymorphysme". (T)
2008-04-18 14:10
•
par
xilun
(non enregistré)
|
|
Il aurait surtout du utiliser un vrai langage de haut niveau qui fait du duck typing :P
(gniarf, gniarf, gniarf) |
| « Précédent | Page 1 | Suivant » |