Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3047 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  classe et interface

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

classe et interface

n°1144484
jokari34
Posté le 08-07-2005 à 15:56:59  profilanswer
 

j'ai une classe avec ses methodes
et une interface qui liste ces methodes
 
comment je fais pour acceder a ces methodes car je crois qu'une interface ne peut etre instanciée:
ex : $objet= new mon_interface; c impossible
 
faut il instancier la classe pour acceder a ses methodes ?
si oui, quel est l'interet de faire une interface ?

mood
Publicité
Posté le 08-07-2005 à 15:56:59  profilanswer
 

n°1144492
plainsofpa​in
Pingouino's lover
Posté le 08-07-2005 à 16:02:49  profilanswer
 
n°1144531
jokari34
Posté le 08-07-2005 à 16:42:08  profilanswer
 


j'ai devant moi une classe abstraite et une interface.
 
sachant que l'interface, je suppose, est censée lister toutes les methodes de la classe d'abstraction, où dois je créer les fonctions listées ?
 
je me perd un peu dans PHP5


Message édité par jokari34 le 08-07-2005 à 16:44:30
n°1144535
denzz
huhuuuuu ! (désolé )
Posté le 08-07-2005 à 16:47:31  profilanswer
 

L'intérêt de faire une interface (si je puis me permettre plainsofpain) c'est de 'cacher' la vraie classe qui est derrière.
Le but est de donner une interface, autrement dit un ensemble de méthodes et de propriétés, communes à des classes qui auront un comportement différent.  
C'est une des bases de la programmation objet !
 
Ensuite, à l'utilisation, si tu as une interface A et des classes B,C,D,E,..... qui implémentent cette interface, lorsque tu manipules tes objets de classes B,C,D,E, tu n'as pas besoin de savoir de quelle classe ils sont réellement pour appeler leurs méthodes : il te suffit de faire ce travail à l'instanciation de ton objet (instancier la bonne classe) et ensuite tu le manipules comme un objet de 'classe' A.
 
Un exemple : (je suis en verve aujourd'hui)  
 
Imaginons que tu aies besoin de travailler avec différents SGBD.
Tu crées une interface BD qui va te proposer toutes les méthodes qui vont bien (connexion, execution de requête, ainsi qu'éventuellement des petits utilitaires comme récupérer la date courante, obtenir la commande SQL pour formater une date, etc...)
 
Ensuite, tu crées une classe pour chacun de tes SGBD implémentant ton interface.  
Finalement, à l'utilisation, c'est complètement transparent : tu détermines au départ le SGBD utilisé, tu instancies la bonne classe, et tous tes appels de méthodes via l'interface BD te donnent le résultat attendu, même si le comportement (i.e. le code te permettant de l'obtenir) est radicalement différent.
 


Message édité par denzz le 08-07-2005 à 16:48:47
n°1144536
zapan666
Tout est relatif
Posté le 08-07-2005 à 16:47:58  profilanswer
 

Une interface, c'est juste pour dire que les fonctions existeront dans l'objet qui implémente l'interface.
 
Donc dans l'objet qui implémente l'interface tu aura, au minimum, les fonctions déclaré dans l'interface à écrire.
 
 
- grilled -


Message édité par zapan666 le 08-07-2005 à 16:48:37

---------------
my flick r - Just Tab it !
n°1144537
plainsofpa​in
Pingouino's lover
Posté le 08-07-2005 à 16:48:04  profilanswer
 

ce n'est pas seulement php5, mais aussi java et c++.
 
C'est de l'objet la ton problème, pas du php5.
 
Une interface est une classe totalement abstraite. Pour créer les fonctions listées, il faut faire dériver une classe de cette interface, et redéfinir TOUTES les méthodes.
 
Edit : Archi grilled


Message édité par plainsofpain le 08-07-2005 à 16:48:44

---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
n°1144540
denzz
huhuuuuu ! (désolé )
Posté le 08-07-2005 à 16:49:22  profilanswer
 

:)

n°1144560
jokari34
Posté le 08-07-2005 à 17:01:23  profilanswer
 

toutes les classes dérivées de l'interface doivent donc etre abstraites.
 
en fait l'interface se presente comme une grosse classe.
alors que cette 'grosse classe' est constituée de classes dérivées, dans lesquelles on définit les méthodes et objet.
 
si c ca, je met quand meme la methode constructeur dans chaque classe dérivée  ?


Message édité par jokari34 le 08-07-2005 à 17:01:52
n°1144566
jokari34
Posté le 08-07-2005 à 17:04:40  profilanswer
 

une interface ca reprend donc la notion de polymorphisme, qui consiste , pour une même fonction, a avoir un rôle different dans chaque classe
c ca ?

n°1144567
plainsofpa​in
Pingouino's lover
Posté le 08-07-2005 à 17:04:54  profilanswer
 

jokari, tu ne comprends rien ...
 
Tes classes dérivées ne seront pas abstraites, vu que tu dois redéfinir toutes les fonctions.
 
Et ton interface ne sera pas "composée" de quoi que ce soit.


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
mood
Publicité
Posté le 08-07-2005 à 17:04:54  profilanswer
 

n°1144569
jokari34
Posté le 08-07-2005 à 17:05:51  profilanswer
 

comment j'y accede a une interface ?
je peux faire : $mon_objet= new mon_interface ??

n°1144570
jokari34
Posté le 08-07-2005 à 17:07:03  profilanswer
 

jokari, tu ne comprends rien ...  <--- excuse moi MAIS ca fait que 3 jours que je travaille en objet.
Un peu d'indulgence
 
j'essaie de comprendre qui te a etre lourdingue.
c plutot une bonne demarche d'essayer de comprendre


Message édité par jokari34 le 08-07-2005 à 17:07:42
n°1144571
denzz
huhuuuuu ! (désolé )
Posté le 08-07-2005 à 17:07:37  profilanswer
 

une classe abstraite, c'est différent d'une interface :
 
*une interface définit un squelette VIDE
 
*une classe abstraite définit un comportement mais ne peut PAS être INSTANCIEE, ce qui veut dire que pour utiliser ce comportement il FAUT créer une classe héritant de ta classe abstraite.  
 
En tout cas, si tu as du mal avec ces notions, commence par te trouver un bon cours de programmation objet sur le net, quel que soit le langage, suis-le bien, et tout s'éclairera !!

n°1144575
denzz
huhuuuuu ! (désolé )
Posté le 08-07-2005 à 17:10:09  profilanswer
 

jokari34 a écrit :

jokari, tu ne comprends rien ...  <--- excuse moi MAIS ca fait que 3 jours que je travaille en objet.
Un peu d'indulgence
 
j'essaie de comprendre qui te a etre lourdingue.
c plutot une bonne demarche d'essayer de comprendre


 
si ca ne fait que 3 jours que tu travailles en objet, je ne suis pas certain que tu aies ta place ici ... même si je suis indulgent ^^, on est pas là pour donner des cours !

n°1144576
jokari34
Posté le 08-07-2005 à 17:11:28  profilanswer
 

Dans la structure a laquelle g affaire (pas moi ki lé codé) ,  
g une classe abstraite qui implemente une interface.
donc vu ce schema, l'interet de cette classe abstraite doit etre de definir un squelette vide, dont le "remplissage" se fait dans une classe non abstraire qui est derivée de cette classe abstraite ?

n°1144578
jokari34
Posté le 08-07-2005 à 17:12:42  profilanswer
 

ben fo bien commencer un jour !
je developpe sans probleme en procedural...mais fo se mettre a jour pour coder propre.

n°1144581
denzz
huhuuuuu ! (désolé )
Posté le 08-07-2005 à 17:14:18  profilanswer
 

jokari34 a écrit :

Dans la structure a laquelle g affaire (pas moi ki lé codé) ,  
g une classe abstraite qui implemente une interface.
donc vu ce schema, l'interet de cette classe abstraite doit etre de definir un squelette vide, dont le "remplissage" se fait dans une classe non abstraire qui est derivée de cette classe abstraite ?


non !  
une classe abstraite ne définit pas de squelette vide :x c'est le boulot de l'interface !  
prends (ou lis) des cours de prog objet !

n°1144586
jokari34
Posté le 08-07-2005 à 17:21:56  profilanswer
 

je me suis mal exprimé, desolé
 
donc comme g une interface + une classe abstraite :
 
- l'interface doit lister toutes les méthodes  des classes qui l'héritent.
 
- la classe abstraire doit heriter de l'interface (puisque sinon ya pas de lien entre le nom de la methode indiquée dans l'interface et la méthode elle meme ). Elle liste ses propore méthodes mais que leur nom (pas le contenu).
 
- une classe non abstraite (que je dois créer) doit contenir les méthodes avec leur contenu pour la classe abstraire dont elle hérite.
 
si c pas ca j'insiste pas.
 
vé aller lire un cours sur la POO.
vous avez des URL de cours de POO pour PHP ? quite a apprendre la POO, autant le faire avec un langage avec lequel je bosse.
merci


Message édité par jokari34 le 08-07-2005 à 17:37:06

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  classe et interface

 

Sujets relatifs
Code interface boutonProbleme attacheMovie & Classe externe
Interface non-figéeGarder la main mise sur l'interface principale
Faire des membres d'une classe en "lecture seule"acquisition d'image d'interface GTK pendant l'exécution d'un programme
Créer une interface utilisateur en mode texte...interface graphique
interface DHTML de cropping d'imagela classe ne gère pas Automation ou l'interface attendue
Plus de sujets relatifs à : classe et interface


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR