|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Date d'inscription: août 2006
Localisation: Région parisienne, france
Messages: 95
|
Bonsoir
Je comprend pas l'utilité de l'interface. A ce que je comprend une interface est une sorte de liste de methode abstraite, que de toute facon il audra redefinir dans les classes. Donc a part peut etre au niveau conceptualisation je vois pas l'interet de la chose. Mais j'ai sans doute mal compris , quelqu'un pourrait il m'eclairer ? ( avec un exemple si possible?). Edit : Voir Ici pour la reponse : http://www.developpez.net/forums/d47...es-interfaces/ Dernière modification par eilijah ; 25/08/2008 à 01h04. |
|
|
|
|
|
#2 |
|
Membre éprouvé
![]() Date d'inscription: mai 2008
Localisation: Tokyo
Messages: 404
|
tu as raison sur le fait que les interfaces fonctionnellement parlant font rien. Mais elles ont leur importances d'un point de vu conceptuel mais aussi d'un point de vue structurel.
prenons un exemple simple mais efficace : les musiciens Chez les musiciens tu as de tout: des batteurs, des guitaristes, des violonnistes etc... Cependant leur seul point commun c'est de faire du son avec un instrument de musique, tout le reste est different (la facon de jouer, l'instrument lui-meme etc...) Mais voila tu est chef d'orchestre et tu veux composer dynamiquement le tiens. Tu sais que les ordres que tu vas donner sont les memes pour tous : - Dis-moi le nom de ton instruement - Joue de la musique Dans ce cas de figure tu vas donc utilise le factory patern pour appeller tes musiciens. classe usineAOrchestre Code :
class usineAOrchestre { private $nombreDeMusicien = 0; public function appelleUnMusicien(string $nomDuMusicien) { $this->$nombreDeMusicien++; $this->musicien.$nombreDeMusicien = new $nomDuMusicien; } public function nombreDeMembre() { return this->nombreDeMusicien; } } Code :
interface abilitesDesMusiciens { public function nomInstrument(); public function joueUnChanson($nomDeLaChanson); } Code :
class batteur implement abilitesDesMusiciens { public function nomInstrument(){ echo 'batterie'; } public function joueUnChanson($nomDeLaChanson){ echo 'tambourine sur '.$nomDeLaChanson;} } class guitariste implement abilitesDesMusiciens { public function nomInstrument(){ echo "guitare"; } public function joueUnChanson($nomDeLaChanson){ echo "gratouille ".$nomDeLaChanson;} } Code :
<?php $orchestre = new usineAOrchestre(); $orchestre->appelleUnMusicien('batteur'); $orchestre->appelleUnMusicien('guitariste'); $nb = $orchestre->nombreDeMembre(); for($i = 1; $i <= $nb; $i++) { echo $orchestre->musicien.$i->nomInstrument(); echo $orchestre->musicien.$i->joueUnChanson('paint it black'); } // mais tu peus aussi faire echo $orchestre->musicien1->nomInstrument(); echo $orchestre->musicien2->joueUnChanson('paint it black'); echo $orchestre->musicien1->joueUnChanson('hightway to hell'); ?> Dernière modification par mon_nom_est_personne ; 09/09/2008 à 02h56. |
|
|
|
|
#3 |
|
Membre habitué
![]() Date d'inscription: octobre 2006
Localisation: lille
Âge: 33
Messages: 164
|
mon_nom_est_personne excellente explication
|
|
|
|
|
|
#4 |
|
Membre éprouvé
![]() Date d'inscription: mai 2008
Localisation: Tokyo
Messages: 404
|
merci beaucoup, je retransmet juste ce que l'on m'a appris.
|
|
|
|
|
![]() |
||
[POO] A quoi servent les interfaces en php ?
|
||
| Outils de la discussion | |
|
|