Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

POLYMORPHISME DE METHODE


Information sur la source

Catégorie :Class et Objet ( POO ) Niveau : Débutant Date de création : 12/03/2003 Date de mise à jour : 12/03/2003 05:22:26 Vu : 3 179

Note :
1 / 10 - par 1 personne
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

Description

*************************************************
* Le but est d'utiliser une meme methode
* "show() dans notre cas", qui puisse, en
* fonction du parametre, mapper sur la
* methode adequat
*
* Pour ce faire, on effectue un test du type de
* parametre a l'entree de notre methode show()
* qui ensuite, appellera la methode appropriee
************************************************/

// -- NOTE --
// Le but final (une meme signature de methode pour +eurs
// implementations differentes) peu paraitre inutile, lorsque
// l'on voit la bidouille a utiliser, je vous l'accord !!
//
// -- NOTE BIS --
// Personnellement, je ne me sert pas de cette methodologie.
// Je lui prefere le "polymorphisme au niveau des classes",
// plus simple a mettre en oeuvre, donc plus a mon gout
//
// Anli D. (anli.daroueche@libertysurf.fr)
 

Source

  • /***************************************
  • * test le format d'une date JJ/MM/AAAA
  • ***************************************/
  • function is_date($p) {
  • if(! ereg("^[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}$",$p))
  • return FALSE;
  • else
  • return TRUE;
  • }
  • /*******************
  • * une classe objet
  • *******************/
  • class OBJET {
  • function OBJET() {}
  • function show($v="") {
  • if(is_date($v))
  • $this->showDate($v);
  • elseif(is_numeric($v))
  • $this->showEntier($v);
  • else
  • $this->showChaine($v);
  • }
  • function showEntier($v) {
  • echo "show avec parametre entier</br>";
  • }
  • function showDate($v) {
  • echo "show avec parametre date</br>";
  • }
  • function showChaine($v) {
  • echo "show avec parametre chaine</br>";
  • }
  • }
  • /**********************
  • * Programme Principal
  • **********************/
  • echo "<HTML>";
  • $obj1 = new OBJET();
  • $obj1->show("coucou");
  • $obj1->show(23);
  • $obj1->show("12/10/2002");
  • echo "</HTML>";
/*************************************** 
* test le format d'une date JJ/MM/AAAA 
***************************************/ 

function is_date($p) { 
if(! ereg("^[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}$",$p)) 
return FALSE; 
else 
return TRUE; 
} 

/******************* 
* une classe objet 
*******************/ 

class OBJET { 

function OBJET() {} 

function show($v="") { 
if(is_date($v)) 
$this->showDate($v); 
elseif(is_numeric($v)) 
$this->showEntier($v); 
else 
$this->showChaine($v); 
} 

function showEntier($v) { 
echo "show avec parametre entier</br>"; 
} 

function showDate($v) { 
echo "show avec parametre date</br>"; 
} 

function showChaine($v) { 
echo "show avec parametre chaine</br>"; 
} 

} 

/********************** 
* Programme Principal 
**********************/ 

echo "<HTML>"; 

$obj1 = new OBJET(); 
$obj1->show("coucou"); 
$obj1->show(23); 
$obj1->show("12/10/2002"); 

echo "</HTML>";

Conclusion

Une bidouille parmis tant d'autres....
 

Commentaires et avis

signaler à un administrateur
Commentaire de Kirua le 13/03/2003 16:54:25

bwarf :)
y a aussi is_array etc... (print_r() est bien pratique lors de testes d'un script!)
en C++, on peut surcharger une fonction lors de sa déclaration, ça évite ce genre de bidouillages.
C'est bien de mentionner cette possibilité, mais un exemple concret ou c'est vrmnt utile (voire nécessaire) ne serait pas de trop. C'est plutôt abstrait vu comme ça.

signaler à un administrateur
Commentaire de willowman le 14/03/2003 09:30:17

Bah vi...

Justement, c'etait pour repondre a une personne desirant "emuler" la surcharge de methode disponible en C++ ou Java (et pas encore en PHP objet ...a quand ??) !

C'est sur que c'est une grosse bidouille, mais j'avais mis en garde tout commun des mortels que nous sommes....

Merci toutefois de ta remarque ;-)

A pluche !

signaler à un administrateur
Commentaire de Kirua le 14/03/2003 16:32:04

et cette personne, c t ds quel but qu'elle voulait un substitut ?
ça m'intéresserait de savoir dans quel cas c'est utile, voire indispensable.

signaler à un administrateur
Commentaire de willowman le 14/03/2003 18:24:54

Ah ca...ca ne regarde qu'elle...

Mais d'apres ce que j'ai compris, c'etait pour clarifier son code en implementant la surcharge de methodes (enfin, les principes sommaires). La bidouille faisant bien entendu, partie d'un fichier bibliotheque, donc transparent aux utilisateurs !

Allez, a pluche ;-)

signaler à un administrateur
Commentaire de Kirua le 16/03/2003 17:08:14

k, bye ;-)

signaler à un administrateur
Commentaire de kiminox le 06/08/2003 11:35:42

c nul ton truc!
appeler cela du polymorphisme!!
hé, prend des cours prog objet : tu saurais ce que signifie polymorphisme en objet.
Enfin, c'est juste une astuce koi : tu mets cela niveau3!
Hé ben, j'imagine que niveau 1 chez toi c'est du genre : imprimer bonjour à l'écran!
et que le niveau 2 c'est imprimer x fois bonjour à l'écran!

signaler à un administrateur
Commentaire de willowman le 06/08/2003 12:04:06

salut kiminox !

- j'ai mis niveau 3 ? mea culpa c'est une erreur de ma part...car je n'attribut aucun niveau a ce script ..( CQFD trivial)

- nul mon truc ? : certes c'est ce que j'ai tenté de faire comprendre en expliquant que cela etait suite a une demande d'explication....encore une fois, mea culpa, car j'ai cru (a tort apparement) que le commun des mortels etait capable de comprendre mes explications !

- juste une astuce : le mot est juste !!

- imprimer bonjour a l'ecran : non quand meme pas, j'ai reussit a passer cette etape.. mais cela n'a pas ete evident a comprendre si simple soit-il ! Etait-ce un de tes tutoriels ?? (surement...;-))

- prendre des cours objet : je ne vais pas t'etaler ici le paradigme objet, ni te detailler mes connaissances...toujours est-il que j'en connais assez pour etre au poste que je suis aujourd'hui !
Dire que j'aurais pu t'avoir dans mon equipe......ouf....

Sur ce merci de tes remarques, si inconstructives fussent-elles !
Si tu en as d'autres....n'hesite surtout pas :-) J'adore les gars comme toi : moins j'en connais, plus j'en parle !
Quand on apporte une critique, il est bon de la replacer suivant un contexte, et ne pas faire de deductions trop hatives.


a+

PS : je ne fais que repondre a tes remarques, toutefois, je te rappelle que cet espace n'est pas fait pour deblaterer de nos differents !


signaler à un administrateur
Commentaire de Kirua le 07/08/2003 13:11:23

kiminox, les variables n'étant pas typées en PHP, contrairement au C++ par exemple, on ne peut pas surcharger des fonctions proprement. t'as peut-être parlé un peu vite non ?

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,25 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.