Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 25/08/2008, 00h21   #1
Nouveau Membre du Club
 
Inscription : août 2006
Messages : 99
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 99
Points : 28
Points : 28
Par défaut [POO] A quoi servent les interfaces en php ?

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.
eilijah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2008, 03h47   #2
Membre éprouvé
 
Avatar de mon_nom_est_personne
 
Inscription : mai 2008
Messages : 449
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 449
Points : 450
Points : 450
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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
class usineAOrchestre
{
private $nombreDeMusicien = 0;
 
public function appelleUnMusicien(string $nomDuMusicien)
{
  $this->$nombreDeMusicien++;
  $this->musicien.$nombreDeMusicien = new $nomDuMusicien;
}
public function nombreDeMembre()
{
  return this->nombreDeMusicien;
}
}
listes de action que doivent savoir faire les musiciens
Code :
1
2
3
4
5
6
 
interface abilitesDesMusiciens
{
public function nomInstrument();
public function joueUnChanson($nomDeLaChanson);
}
exemple d'implementation de musicien

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
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;}
 
}
tu peux maintenant diriger ton orchestre
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
<?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');
 
?>
grace a ton interface tu es sur que quelque soit la classe que tu instancie tu auras un comportement homogene. Dans cette exemple, si par le suite tu veux garder le meme code mais changer de musicien tu n'auras que tes appelles a changer et ton code marchera tout de meme.

Dernière modification par mon_nom_est_personne ; 09/09/2008 à 02h56.
mon_nom_est_personne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2008, 10h50   #3
Membre habitué
 
Inscription : octobre 2006
Messages : 165
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : octobre 2006
Messages : 165
Points : 103
Points : 103
mon_nom_est_personne excellente explication
malkie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2008, 11h00   #4
Membre éprouvé
 
Avatar de mon_nom_est_personne
 
Inscription : mai 2008
Messages : 449
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 449
Points : 450
Points : 450
merci beaucoup, je retransmet juste ce que l'on m'a appris.
mon_nom_est_personne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2010, 16h43   #5
Futur Membre du Club
 
Inscription : octobre 2008
Messages : 93
Détails du profil
Informations personnelles :
Âge : 22

Informations forums :
Inscription : octobre 2008
Messages : 93
Points : 19
Points : 19
Ds ce cas là (où les classes filles définissent, toutes, les 2 mêmes méthodes car elles leurs sont communes) ne peut-on pas mettre les méthodes ds la classe mère juste en écrivant leur en-tête (prototype) sans leur coder de traitement puis redéfinir ces méthodes ds les classes filles où là on leur coderai un traitement qui serait spécifique a chaque classe fille ?
Tibimac est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 06h36.


 
 
 
 
Partenaires

Hébergement Web