IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[POO] Différence entre Interface et classe Abstraite


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut [POO] Différence entre Interface et classe Abstraite
    Bonjours,

    Je reviens vous voir pour discuter, maintenant, des classes Abstraites.

    En effet, "PHP5 Avancé" traite bien des 2, mais pour finalement obtenir quasiment aucune différenciation entre : Abstraite et Interface.

    J'ai enfin trouvé mon cas pratique pour les interface : j'ai 5 classes composés chacune de entre 5 et 7 méthodes.

    Sur ces méthodes, il y'en a 3 qui sont communes aux 5 classes, tout en cultivant quelques différences liés à leurs identités (en bref, ces 3 méthodes portent le même nom dans mes 5 classes, font les mêmes traitements, mais comportent des spécifications légèrement différente d'une classe à l'autre....).

    Pour l'instant, afin d'éviter des fautes et autre tracasseries (en effet, mes objets subissent des traitements dans d'autres objet : donc les méthodes doivent strictement être formés correctement...), j'utilise une interface avec mes 3 méthodes utilisés dans mes classes.....

    Mais je me demande s'il ne serait pas mieux de prendre une classe abstraite.

    Quels sont les différences ?

    Merci à vous !!!
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Google est ton ami.

    Exemple : http://www.clever-age.com/veille/blo...interface.html
    Une interface est un peu comme une classe abstraite dans laquelle aucune méthode ne serait implémentée : les méthodes y sont seulement déclarées.
    Les classes abstraites servent à factoriser du code, tandis que les interfaces servent à définir des contrats de service.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  3. #3
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    Merci pour la réponse, je sais que google est mon ami, mais vous aussi !!!!

    Et en plus, les recherches que j'avais fait avant ne me satisfaisaient pas....

    Bref, donc dans mon cas il serait préférable de faire une classe abstraite.... Mais comment utiliser la "factorisation" de ces classes ?

    En effet, en PHP5 une classe abstraite est implémenté, comme une interface... Par conséquent, il n'y pas d'héritage au sens "extension" de la classe....

    Alors si je déclare mes méthodes dans la classe abstraite, comment les utiliser dans mes classes qui l'implémente ?

    L'interface ne m'apporte que des "obligation" d'utilisation strict de mes méthodes, mais si je peu simplifier mon code par une "factrorisation" de mes méthodes, ce serait sans doute le mieux....
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  4. #4
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2003
    Messages : 217
    Points : 242
    Points
    242
    Par défaut
    Si tu as des méthodes à factoriser, le mieux est d'utiliser des classes abstraites, dont hériteraient chacune des autres classes.
    Les interfaces sont réservées à la définition d'un schéma de classe, un cahier des charges pour la réalistation d'une classe de tel ou tel type...

  5. #5
    Membre confirmé Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Points : 465
    Points
    465
    Par défaut
    je savais pas l'apparition des classes abstraites et des interfaces en php5... si c'est le cas alors ça doit être comme en java la classe abstraite ne serait jamais instanciée et toujours étendue dans sa totalité en sous-classes.

  6. #6
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    Citation Envoyé par broumbroum
    je savais pas l'apparition des classes abstraites et des interfaces en php5... si c'est le cas alors ça doit être comme en java la classe abstraite ne serait jamais instanciée et toujours étendue dans sa totalité en sous-classes.
    ....Et bien c'est effectivement le cas. Il est dis (c'est pas moi, hein...) que le PHP5 n'a plus rien à envier à JAVA......Bon , ca vaut ce que ca vaut.

    Mais pour les classes abstraites, on les implémentes, on ne peut donc pas faire appel à une méthode d'une classe abstraite comme un "simple" héritage ? (parent::methodedelaclasseparente....)
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  7. #7
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2003
    Messages : 217
    Points : 242
    Points
    242
    Par défaut
    Non, les classes abstraites sont héritée, comme toute autre classe, les interfaces sont implémentées... Et dans le cas d'un héritage d'une classe abstraite ou non, on accède à l'élément surchargé par parent::element.
    Au niveau des objets, oui, le php n'a absolument rien à envier au java, et c'est vrai aussi pour pas mal de choses, mis à part que le php est interprété donc plus lent, et que son usage n'est pas le même que pour java...

  8. #8
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    Autant pour moi, je me suis emmelé les pinceaux..... il faut que j'étudie en core !!!! lol
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/05/2010, 10h46
  2. différence entre interface et classe abstraite
    Par yacin87 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 29/03/2010, 11h36
  3. Différence entre inteface et classe abstraite
    Par dtavan dans le forum Diagrammes de Classes
    Réponses: 7
    Dernier message: 07/08/2009, 00h35
  4. Interface ou classe abstraite ?
    Par cobolfingaz dans le forum C#
    Réponses: 6
    Dernier message: 15/07/2008, 17h21
  5. Interface ou classe abstraite ?
    Par Premium dans le forum Langage
    Réponses: 8
    Dernier message: 21/02/2006, 10h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo