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] Interfaces : Késako ?


Sujet :

Langage PHP

  1. #21
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Salut,
    je ne pense pas que l'on puisse parler d'extension de classe, c'est plutôt dans l'autre sens qu'il faut voir le truc. Ca permet justement de définir/spécifier un modèle détaché de l'implémentation. Comme expliqué lorsque on implémente une interface, toutes les méthodes de la classe doivent respecter les signatures des méthodes de l'interface. Ainsi on peut être sûr que telle fonction devra prendre tel type d'arguments et retourner tel type de données. Un des gros avantages c'est que le "main" code ne changera pas quelque soit l'implémentation.
    Par exemple en Java, si tu utilises l'interface XMLReader et ses méthodes dans un projet, derrière tu pourras choisir n'importe quelle implémentation (XERCES ou autre) sans modifier quoique ce soit au code principal.
    bye ^^

    [edit]
    (explication inutile, j'avais pas vu que y avait une 2e page à ce sujet )
    [/edit]
    Vive les roues en pierre

  2. #22
    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
    Oula oula, ca part en live..... Ba dit donc, je ne pensais pas que ca pouvait préter tant à polémiques, les interfaces !!!! Quoi que si, vu la maigreur des descriptions dans les docs.......

    Ba du coup, je suis..... Continuez !!!! C'est très intéressant tout ca, ca me permet d'avoir une vision plus large sur le sujet.....

    Un jour, j'en aurait sûrement besoin (rappelons que au départ, ca m'intrigait, je n'en ai pas encore besoin..... )

    Bref, alors d'après Mr N et Genova, j'ai les idées un peu confuse..... On parle d'abstraction, et effectivement c'est quand même vachement abstrait tout ca !!!!
    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
    -------------------------

  3. #23
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par viviboss
    Un jour, j'en aurait sûrement besoin (rappelons que au départ, ca m'intrigait, je n'en ai pas encore besoin..... )
    C'est pas la bonne démarche. Il aurait été plus pédagogique que tu te retrouves confronté à un problème et qu'on te dise : "la solution, c'est les interfaces."


    On parle d'abstraction, et effectivement c'est quand même vachement abstrait tout ca !!!!
    Meuh non. Tu verras toi aussi un jour tu seras grand et tu utiliseras des interfaces

  4. #24
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    Citation Envoyé par viviboss
    Oula oula, ca part en live..... Ba dit donc, je ne pensais pas que ca pouvait préter tant à polémiques, les interfaces !!!! Quoi que si, vu la maigreur des descriptions dans les docs.......

    Ba du coup, je suis..... Continuez !!!! C'est très intéressant tout ca, ca me permet d'avoir une vision plus large sur le sujet.....

    Un jour, j'en aurait sûrement besoin (rappelons que au départ, ca m'intrigait, je n'en ai pas encore besoin..... )

    Bref, alors d'après Mr N et Genova, j'ai les idées un peu confuse..... On parle d'abstraction, et effectivement c'est quand même vachement abstrait tout ca !!!!
    En faite, si tu developpes seul ça ne sert pas forcement mais lorsque le projet atteind un certain niveau et/ou un nombre plus élevé d'intervenant à ce ça peut aider.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  5. #25
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Par contre je n'ai pas très bien compris pourquoi on dit que les interfaces remplacent l'héritage multiple, pour moi l'héritage multiple c'est :

    pepe {
    chasse()
    }

    mamy {
    tricote()
    }

    gugu extends pepe, mamy {
    }

    et gugu sait tricoter et chasser, alors qu'avec les interfaces vu que t'es obliger de redéfinir les méthodes, je ne vois pas le lien avec l'héritage multiple. (hériter de signatures de fonctions :/)
    Vive les roues en pierre

  6. #26
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Comme le langage n'autorise pas encore l'héritage multiple la seule solution de faire est d'utiliser les interfaces :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    class gugu extends meme implements pepe
    class gugu extends pepe implements meme
    class gugu implements meme, pepe

  7. #27
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Ok, donc l'intérêt est d'avoir une erreur si tu ne redéfinis pas les méthodes ?
    Vive les roues en pierre

  8. #28
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Oui, mais encore une fois, il ne faut pas s'arreter au langage et à sa syntaxe.
    Perso j'utilise des interfaces virtuelles en php4 et du coup je n'ai pas d'erreurs de php puisque ca n'existe pas en php4.
    J'utilises des interfaces parce que c'est la conception qui me le dicte, pas parce que ca produit éventuellement des erreurs...

  9. #29
    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
    De toute les facons, c'est comme ca qu'il faut prendre les choses : utilisez ce dont on a besoin, et surtout faire en sorte que le langage choisi pour le projet ne limite pas les "réflexions" de développement prévu.

    Bref, il ne faut pas ce borner aux limites de synthaxe : on trouve toujours des solutions !!!!!

    PS : MR N, je sais que ca aurait été mieux en terme de démarche d'avoir un exemple concret à vous soumettre (plus pédagogique, effectivement....) Mais ma démarche de départ était de la pure curiosité !!!!

    Je ne pensais pas que ce serait si..... "abstrait". (j'aurais du m'en douter.... )
    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
    -------------------------

  10. #30
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    En fait je parlais de l'intérêt d'utiliser des interfaces pour "remplacer" l'héritage multiple et j'ai l'impression que le seul intérêt c'est d'avoir des erreurs lors de l'oubli de redéfinition des méthodes.

    Si quelqu'un en voit un autre...
    Vive les roues en pierre

  11. #31
    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
    On utilise pas les interfaces pour "remplacer" quelque chose qui existe, mais pour palier une carrance de PHP..... Donc c'est la seule manière de procéder en PHP SI tu veux faire un "semblant d'héritage multiple"..... (en sachant que ce n'en est pas tout à fait....)
    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
    -------------------------

  12. #32
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    Citation Envoyé par viviboss
    On utilise pas les interfaces pour "remplacer" quelque chose qui existe, mais pour palier une carrance de PHP..... Donc c'est la seule manière de procéder en PHP SI tu veux faire un "semblant d'héritage multiple"..... (en sachant que ce n'en est pas tout à fait....)
    Dire que la nom présence d'héritage multiple est une carrance je dis non . Il me semble que c'est qu'en C que cela est possible. Java, C# et toute la smala ce n'est pas intégré je pense que c'est lié à un choix. Pourtant dans la vie courante il y a plusieurs chose qui peuvent avoir un héritage multiple. Caravane hérite de voiture et de maison. Cas plus étrange ornithorynque lui il hérite de canard , de poule, de poisson, de castor, de chevre, ...
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  13. #33
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    En fait je crois que c'est plutôt en rapport avec la difficulté qu'avec un choix, car si je me souviens bien en C++ ca bug pas mal

    Et apparemment c'est pas très viable pour un langage non compilé, niveau du temps de parcours du graph, dixit wikipedia .
    Vive les roues en pierre

  14. #34
    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 berceker united
    Dire que la nom présence d'héritage multiple est une carrance je dis non . Il me semble que c'est qu'en C que cela est possible. Java, C# et toute la smala ce n'est pas intégré je pense que c'est lié à un choix.
    Autant pour moi, c'est vrai que c'est un choix stratégique des langages eux même (c'est bien ce que j'avais vu en JAVA....)
    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. [PHP 5.3] [POO] Interface pour une variable
    Par max-mag dans le forum Langage
    Réponses: 3
    Dernier message: 01/02/2012, 11h45
  2. Réponses: 15
    Dernier message: 13/11/2010, 15h13
  3. [POO] Interface en php
    Par lepotier dans le forum Langage
    Réponses: 4
    Dernier message: 29/06/2008, 13h25
  4. [POO] Interface ou héritage ?
    Par s.n.a.f.u dans le forum VB.NET
    Réponses: 3
    Dernier message: 17/03/2007, 01h02
  5. [POO] Interface et méthode abstraite en PHP5
    Par Invité dans le forum Langage
    Réponses: 9
    Dernier message: 24/04/2006, 00h54

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