Heu... le polymorphisme, ce n'est pas plutot lorsqu'une fonction peut prendre différent type de paramètres et avoir un comportement différent celon le type de ces paramètres ? (valable en Java mais pas en PHP)
Ou bien ca a encore un autre nom ?
Heu... le polymorphisme, ce n'est pas plutot lorsqu'une fonction peut prendre différent type de paramètres et avoir un comportement différent celon le type de ces paramètres ? (valable en Java mais pas en PHP)
Ou bien ca a encore un autre nom ?
En effet, tu as tout à fait raison. Mais je le vois plutot d'un point de vue plus abstrait :
ouLe polymorphisme est le concept idéal pour réaliser une variation du comportement des objets en fonction de leur type.
ou encoreUtiliser le polymorphisme pour implémenter les variation de comportement en fonction de la classe.
http://c2.com/cgi/wiki?PolyMorphismSame interface, different implementation. Substitutability.
salut,
la poo est vraiment interressante pour une appli importante.
Ca te permet de dissocier le code metier et l afichage, encore plus si tu utilise un gestionnaire de template comme smarty.
Ca te permet aussi de reutiliser du code quand tu arive a faire du generique avec un peu de pratique.
Puis en te mettant a uml, tu modelise bien ton appli, tu fais tes zolis diagrammes et tu peux deja générer des bouts de code.
600% d'accord. Je suis désolé de l'avouer, mais je trouve l'objet tellement beau que j'ai envie d'en faireEnvoyé par Moloc'h
Merci à tous pour votre débat "philosophique", je lis les documents et m'informe
Faire de l'objet pour la beauté de la chose, ou par challenge intellectuel, ça me va.
Il y a plusieurs formes de polymorphismes qui techniquement sont fondamentalement différents.
polymorphisme paramètrique, polymorphisme d'héritage, etc.
* se sent rassuré * Et oui vive la prise de tête gratuite mais qui nous fait avancer ^^ Bon courage Anduriel pour l'apprentissage ; tu verras pour les bases c'est pas durEnvoyé par Moloc'h
toute manière une fois que tu t y es mis t es foutu, tu raisonne objet tout le temps et du coup meme quand tu fais du procedural tu gardes une conception objet en distribuant tout et des fois tu te dis "#### si seulement j avais fais une classe je pourrais faire ca" !
tu te fais des pseudos frames en te disant que ton smarty sera trop lourd :d
Je vais donner un petit exemple
il y a quelques années je me suis écrit une classe pour faire des SELECT sur MySQL
bref une connexion, une requête et toutes les methodes qui permetent de naviguer dans le résultat (comme une collection)
cette petite classe je l'ai reprise telle quelle. pour d'autre projets.
je n'avais rien conçu de précis juste répondu à un besoin qui reveniat souvent.
puis pour un projet j'ai eu besoin de quelque chose de plus précis.
j'ai pris ma classe et je l'ai découpé en Select et Base
une prenant en charge la connexion et l'autre la selection.
j'ai ajouté une classe Table qui n'était qu'un Select * sur une table.
bref après quelques réutilisation j'ai ajouté des methode à table pour faire
de insert
mon but était de pouvoir écrire une classe table permetannt de naviguer dans une table d'ajouteur ou modifier des objets dans la table sans avoir à écrire de SQL.
et voilà qu'il est décidé de changer de base nous sommes passé à PostGreSQL
j'ai mis 1/2 journé pour dupliquer mes classe MySQl et en faire une version PostGreSQL
tout ça en moins d'un an au fil des besoins succéssif.
aujourd'hui soit moins de 2 ans après la première version j'ai un systeme qui me permet de travailler avec une base de données sans faire de SQL en utilisant un Mapping Objet table
la notion de query à été séparé de celle du Select la notion de vue est apparue. et ce en PostGreSQL et MySQL
j'héritage, le polymorphisme est utilisé à fond.
je pourais dire qu'on peut faire ce genre de chose en Fonctionnel mais je ne suis pas sur que j'évolution soit aussi souple.
par exemple dans c'est ensemble de classes lorsque j'ai séparré la notion de query de cette de select j'ai repris les nouvelles je les ai posé dans les dossiers des vielle application et ni vu ni connu tout fonctionnait.
A+JYT
pas tout a fait d'accord, pour moi une méthode est une fonction ne renvoyant pas de valeur (void), mais bon c'est du chipotage.... ;-)Envoyé par Mr N.
ben en uml on appel ca des methodes, y a pas de notions de fonctions
oui je suis du même avis, le nom "méthode" fait parti du vocabulaire d'UML et donc par extention de la programmation objetEnvoyé par siddh
quand j'ai dit que la classe n'est qu'une suite de fonctions, je disais un peu ça pour taquiner les puristes de l'objet en me mettant du coté d'un nouvel arrivant qui voit du code de classe remplis du mot clé "function"
j avoue que dans la pratique je dis aussi bien methode que fonction
effectivement pour moi qui ne connaît pas encore vraiment les classes à fond dans leur potentiel j'ai tendance à ne voir qu'une suite de fonctionsEnvoyé par mathieu
Ceci
$piece = new Piece;
$piece->bouge(25, 75);
$piece->affiche();
c'est un peu la même chose que
$piece = piece_construit();
piece_bouge($piece, 25, 75);
piece_affiche($piece);
piece_detruit($piece);
Et bien voilà, quand tu veux t'exprimer tu peux
Voila typiquement dans cet exemple, pourquoi utiliser les classes quand on peut utiliser les fonctions ? C'est ça mon problème... (Désolé pour mon vocabulaire fonction/classe)Envoyé par loufoque
lit ca, ca va t aider, c est deux discussions qui traitent du meme sujet
http://www.developpez.net/forums/viewtopic.php?t=416358
Disons que normalement, une procédure ou une fonction ne devrait prendre que des paramètres en passage par valeur.Envoyé par Anduriel
C'est à dire que la valeur du paramètre n'est pas modifiée (ou si elle l'est, elle l'est seulement le temps de la fonction/procédure et pas en dehors).
Or dans cet exemple, le paramètre est passé par référence, c'"est à dire que sa valeur est modifiée. On peut appeler ça un effet de bord. C'est plus difficile à maintenir/débugger.
Maintenant, il existe des langages comme ADA où il est possible de passer des paramètres par valeur, référence (in inout ou out) mais l'avantage, c'est que c'est écrit précisément dans le corp de la fonction.
Voilà, ma modeste participation, en espèrant ne pas avoir trop raconter d'aneries.
Partager