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 :

Héritage multiple obligatoire ou mauvaise conception ? [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2007
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 59
    Points : 95
    Points
    95
    Par défaut Héritage multiple obligatoire ou mauvaise conception ?
    Bonjour a tous, j'ai un petit probleme de conception avec un programme PHP orienté objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    abstract class classemere
    {
      public function doSomething()
      {
       ...
      }
     
      abstract public function test();
    }
     
    abstract class classe1 extends classemere
    {
      private $property1;
     
      public function doSomething1()
      {
       ...
      }
    }
     
    abstract class classe2 extends classemere
    {
      private $property2;
     
      public function doSomething2()
      {
       ...
      }
    }
     
    // PUIS des classes dérivées de classe1 et de classe2
    Le probleme est que j'ai une classe qui est aussi bien du type classe1 que classe2 (elle a besoin d'implementer doSomething1 et doSomething2).

    En PHP, il n'est pas possible de faire de l'héritage multiple pour les classes, seulement pour les interfaces.

    Mais les interfaces ne me permettent que d'avoir les signatures des methodes, pas d'avoir des propriétés ni le code des méthodes.

    Donc pour l'instant j'ai ma classe qui dérive de classe1 et un copié collé du code de la classe2 pour implémenter les 2 classes.

    J'imagine que ce n'est vraiment pas la meilleure solution (de copier coller du code), et j'ai lu que l'héritage multiple (j'ai vu quelques techniques pour le simuler sur PHP) est vraiment une mauvaise solution qui ne dois s'appliquer que dans de très rares cas (en plus je pense que j'aurai un probleme avec la methode abstraite test() qui serait dans les 2 classes parentes).

    Je ne sais pas si je suis dans un de ces rare cas ou bien si ma conception est mauvaise.

    Si quelqu'un peut m'aider, Merci

  2. #2
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Bonsoir,

    L'héritage multiple est effectivement assez rarement nécessaire.
    Cela dit, te répondre va être assez compliqué sans connaître le fonctionnel.

    En premier jet, je verrais trois possibilités de refactoring si tu ne veux pas utiliser les interfaces:
    - soit tu combines class1 et class2 dans une seule et même classe
    - si cela a du sens, tu dérives class2 de class1
    - tu utilises la composition au lieu de l'héritage : class3 aura un attribut class1 et un attribut class2

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2007
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 59
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par s.n.a.f.u Voir le message
    Bonsoir,

    L'héritage multiple est effectivement assez rarement nécessaire.
    Cela dit, te répondre va être assez compliqué sans connaître le fonctionnel.

    En premier jet, je verrais trois possibilités de refactoring si tu ne veux pas utiliser les interfaces:
    - soit tu combines class1 et class2 dans une seule et même classe
    - si cela a du sens, tu dérives class2 de class1
    - tu utilises la composition au lieu de l'héritage : class3 aura un attribut class1 et un attribut class2
    Merci, en effet j'ai utilisé la composition pour éviter ce problème

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/03/2014, 23h39
  2. Quels motifs de conception en remplacement de l'héritage multiple ?
    Par Neuromancien2 dans le forum Débats sur le développement - Le Best Of
    Réponses: 26
    Dernier message: 16/06/2011, 01h50
  3. [Conception] Simuler un héritage multiple
    Par dev01 dans le forum Général Dotnet
    Réponses: 32
    Dernier message: 13/08/2008, 16h21
  4. [heritage][conception]héritage multiple en java!
    Par soulhouf dans le forum Langage
    Réponses: 9
    Dernier message: 25/08/2005, 20h03
  5. [XML Schemas]héritage multiple
    Par nicolas_jf dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 10/06/2003, 12h55

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