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

avec Java Discussion :

Héritage Multiple en Java


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études et développement JAVA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Par défaut Héritage Multiple en Java
    Bonjour tout le monde,

    J'aimerai savoir comment détourner l’interdiction de l'héritage multiple en Java, sans passer par une interface?
    Voila un exemple ou ana besoin de cette solution, je dois par exemple modéliser ce problème en utilisant uniquement des classes:
    Personne, Enseignant, Salarie, Etudiant, Etudiant-Salarie.
    Ici étudiant-Salarié est à la fois étudiant et salarié, or c'est interdit de faire l'héritage multiple en Java.
    Merci de me présenter quelque moyens pour résoudre ce problème.

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par naou18 Voir le message
    J'aimerai savoir comment détourner l’interdiction de l'héritage multiple en Java, sans passer par une interface?
    Pourquoi sans passer par une interface ?
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    Membre éclairé
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études et développement JAVA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Par défaut
    Merci pour ta question.
    En effet c'est simple, mes classes ont des méthodes à implémenter chose que je ne peux faire avec la classe Etudiant et Salarié s'ils était des interfaces.

  4. #4
    Membre chevronné Avatar de Drakiss
    Homme Profil pro
    Consultant MOE
    Inscrit en
    Octobre 2010
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant MOE
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2010
    Messages : 185
    Par défaut
    Effectivement l'héritage multiple n’existe pas en JAVA.
    Pour moi, si on hésite entre une interface et un héritage on doit se poser la question :
    Est-ce que mon objet "est composé de" ou "est un" ?

    Je m'explique une berline est une voiture, et est composé de roues, la classe berline héritera de voiture et ses méthodes démarrer, arrêter, etc, et implémentera les méthodes des roues (en général rouler, éventuellement crever ).

    Dans ton cas, un étudiant est une personne (il est pas composé de bouts de gens ), par contre un étudiant-salarié est une personne et peut ne plus être salarié...
    Mais il est vrai que c'est subjectif...

    Après je te conseille ce tuto, pour approfondir.

  5. #5
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Tu dois tout de même utiliser les interfaces en faisant quelquechose comme ceci par exemple :

    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
    public interface IA {
      void methodA();
    }
     
    public A implements IA {
      void methodA() {  //code  }
    }
     
    public interface IB {
      void methodB();
    }
     
    public abstract B implements IB {
      void methodB() {  //code  }
    }
     
    public C implements IA, IB {
      private IB b = new B();
      private IA a = new A();
     
      public void methodB() {
        b.methodB();
      }
     
      public void methodA() {
        a.methodA();
      }
    }
    Edit : Et je viens de trouver un ancien topic sur la question ici.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    +1 Robin, mais je préfère avoir des interfaces nommées A et B, et des impléméntations nommées par exemple SimpleA et SimpleB.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre éclairé
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études et développement JAVA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Par défaut
    @Robin , ce n'est pas du tous ce que je veux faire.
    je pense que l'agrégation est à préfère dans ce genre ce situation, je veux dire EtudiantSalarie. En plus la plupart du temps lorsqu'on fait le design on évite d’utilisé l'héritage même si les Interface résout le problème du diamant , car java ne permet que l'héritage simple.

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    public class Personne{
    private String nom ;
    private String prenom ;
    private String sportPratique ;
    public Personne(String nom , String prenom , String sportPratique){
    this.nom = nom ;
    this.prenom = prenom ;
    this.sportPratique = sportPratique ;
    }
    }
    public class Enseignant extends Salarie{
    private String matiereEnseignee ;
    public Enseignant(String nom , String prenom , String sportPratique , int salaire , String matiereEnseignee){
    super(nom , prenom , sportPratique , salaire) ;
    this.matiereEnseignee = matiereEnseignee ;
    }
    }
    public class Salarie extends Personne{
    private int salaire ;
    public Salarie(String nom , String prenom , String sportPratique , int salaire){
    super(nom , prenom , sportPratique) ;
    this.salaire = salaire ;
    }
    }
    public class Etudiant extends Personne{
    private String matiereEnseignee ;
    private int salaire;
    public Enseignant(String nom , String prenom , String sportPratique , int salaire , String matiereEnseignee){
    super(nom , prenom , sportPratique ) ;
    this.salaire=salaire;
    this.matiereEnseignee = matiereEnseignee ;
    	}
    }
    public class EtudiantSalarie{
    private Etudiant e ;
    private Salarie s ;
    public EtudiantSalarie(String nom , String prenom , String sportPratique , int salaire ,
    String anneeEtude){
    e = new Etudiant(anneeEtude , nom , prenom , sportPratique) ;
    s = new Salarie(nom , prenom , sportPratique , salaire) ;
    }
    }

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

Discussions similaires

  1. Héritage multiple en Java
    Par nsanabi dans le forum Général Java
    Réponses: 3
    Dernier message: 26/01/2011, 18h58
  2. Héritage multiple en JAVA
    Par y.medium dans le forum Langage
    Réponses: 5
    Dernier message: 07/11/2008, 23h59
  3. Héritage multiple en Java
    Par bim92i dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 28/08/2008, 09h17
  4. [DC] Héritage multiple (en java)
    Par c0rt0 dans le forum Diagrammes de Classes
    Réponses: 6
    Dernier message: 20/02/2008, 10h52
  5. [heritage][conception]héritage multiple en java!
    Par soulhouf dans le forum Langage
    Réponses: 9
    Dernier message: 25/08/2005, 20h03

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