Comment On Pas tout à fait compris ce truc appelé "polymorphysme". (T)

Objet. L' encapsulation de champs et d'opérations pour rendre le code plus simple et plus réutilisable. Facile ! Polymorphisme : L'habilité d'avoir des objets avec le même comportement, à travers l'héritage, les interfaces , etc.. Pigé. [Texte complet]
« PrécédentPage 1Suivant »

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
189973 en réponse à 189971
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é)
189990 en réponse à 189973
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
190288 en réponse à 189971
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é)
190560 en réponse à 189973
Il aurait surtout du utiliser un vrai langage de haut niveau qui fait du duck typing :P
(gniarf, gniarf, gniarf)
« PrécédentPage 1Suivant »

Ajouter un commentaire