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

Design Patterns Discussion :

Comment resoudre un probleme de multi-heritage? [Polymorphisme]


Sujet :

Design Patterns

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 36
    Points : 21
    Points
    21
    Par défaut Comment resoudre un probleme de multi-heritage?
    BOnjour,

    J'ai un probleme dans mon application en C# ou le multi heritage est interdit.

    Pour l'expliquer simplement, je vais utiliser un exemple de type Vehicule.

    J'ai 4 types de Vehicules:
    - le vehicule à pedale
    - le vehicule à moteur
    - la voiture
    - le vélo

    Ces 4 vehicules possedent une methode "Demarrer" qui utilise des donnée de Vehicule et des donnée propres.

    MAintenant, je voudrais ecrire une methode "Demarrer" pour une "Voiture à pedale", qui utilise donc des données de "Vehicule à Pedale" et des données de "voiture"

    SI je pouvais faire deriver "Voture à Pedale" de "Vehicule à pedale" et de "voiture", je pourrais y arriver...

    mais voilà c'est impossible je n'ai pas droit au multi-heritage....

    Commet faire ?


    merci de votre aide !

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 30
    Points : 36
    Points
    36
    Par défaut
    Bonjour,

    Tu peux procèder par agrégation d'objet plutot que de passer par l'héritage.

    Ton objet voiture à pédale pour hériter de voiture et contenir une instance de véhicule à pédale. (si y'a un système d'interface en C# tu peux hérité de voiture et implémenter l'interface de véhicule à pédale en te servant de l'instance contenu pour implémenter les méthodes de l'interface).

    Par ce biais, ton objet sera bien vu par Polymorphisme comme une voiture et un véhicule a pédale, mais n'héritera que de voiture.

    J'espère avoir était clair et que cela va t'aider.

    A+

  3. #3
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    Il est effectivement préférable de passer par la notion d'interface et de multi-héritage d'interfaces.
    Pour le problème de l'implémentation, tu peux passer ensuite par l'utilisation des aspects !!!

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 36
    Points : 21
    Points
    21
    Par défaut
    Pour reprendre la solution de rhadamanthe, j'ai ecrit le code suivant:

    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
    public Interface IDemarable
    {
    Demarrer();
    }
    public class Voiture:IDemarrable
    {
        public void demarrer()
     {
        Console.WriteLn("je suis une Voiture et je demarre");
    }
    }
    
    
    public class VoitureAPedale: Vehicule
    {  
     VehiculeaPedale vehiculepedale;
        public void override demarrer()
     {
        Console.WriteLn("je suis une VoitureAPedale, mon nom est :"+ vehiculepedale.Name +" et je demarre");
    }
     
    }
    Effectivement ,ca resout le multi-heritage.. mais dansce cas là, puis je quand meme garder l'heritage entre Vehicule et VehiculelaPedale ? ou c'est stupide ?

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

Discussions similaires

  1. comment je px resoudre ce probleme
    Par minou104 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/07/2008, 10h40
  2. [C++.NET] Comment résoudre un problème d'arrondi avec Single ?
    Par KaeRZed dans le forum Framework .NET
    Réponses: 7
    Dernier message: 18/09/2007, 09h08
  3. [ADO] probleme de multi requête
    Par Grey dans le forum MFC
    Réponses: 3
    Dernier message: 01/12/2005, 16h40
  4. Réponses: 3
    Dernier message: 29/09/2005, 16h43
  5. [Debutant] Probleme de (simple) heritage
    Par Invité dans le forum Langage
    Réponses: 7
    Dernier message: 08/12/2004, 10h53

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