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 Java Discussion :

Invocation de constructeur


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Par défaut Invocation de constructeur
    Bonjour à tous,

    Débutant en java, j'aurai besoin d'un petit coup de main sur un point théorique.

    Je cherche à construire un algorithme génétique. J'ai une classe de base Individu. Dans le constructeur, elle fait appel aux constructeurs de deux sous-classes : Genotype et Phenotype. Or dans ces deux sous-classes qui héritent donc d'"Individu" (via le mot clef "extends") il me faut invoquer le constructeur de la classe de base via le mot clef "super" d'apres ce que j'ai compris. Et c'est là où je bloque. Si je fais cet héritage, c'est parceque "Genotype" et "Phenotype" ont besoin de variables situées dans "Individus". Ce serait donc inutile de devoir envoyer en parametre à mes deux sous-classes les valeurs qui viennent d'être initialisées par ma classe de base uniquemement pour rappeller le même constructeur. De plus, ça risquerai de tourner en rond tout ça...

    Bref je m'embrouille... Et je commence à me demander si l'héritage était une bonne solution. Et si oui, je me dis qu'en fin de compte, ça doit peut-être fonctionner dans l'autre sens. C'est à dire que de l'extérieur je devrai peut être créer un génotype qui lui même appellera le constructeur de la classe Individu... Mais j'aurai l'impression de "marcher à l'envers"

    Bref, j'espère que j'ai été le plus clair possible (mais c'est pas facile, étant donné que ça ne l'est pas non plus dans ma tête ).

    Merci d'avance pour toutes vos suggestions !

  2. #2
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Par défaut
    En fait, ici, le probleme n'est pas en java, mais dans la maniere de voir les héritages.

    D'apres moi, génotype et phénotype n'ont rien a voir avec l'individu, ce sont des caractéristiques, pas des extensions.

    Plus précisément, une classe qui hérite d'une autre peut se traduire par "est un".

    Exemple : un triangle est une forme, donc la classe triange héritera de la classe forme.

    Un génotype est un ensemble des caractéristiques d'un individu, mais pas un individu. Et un individu n'est pas non plus un génotype.

    En gros, tes classes génotype et phénotype seront indépendantes et tu les placera en paramètre de ton individu.

    J'espere que ça t'aide un peu

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Par défaut
    En effet tu as raison.

    Depuis que j'ai posté, j'ai tourné et retourné le problème dans ce qui me sert de matière grise, et je commençais à sousponner ceci. Tu me le confirme. L'héritage n'est pas approprié...

    Merci bien

  4. #4
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut
    Oui l'héritage n'est pas adapté du tout là. Tu devrais plutôt utiliser l'agrégation.

    Exemple, classe Individu :

    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
     
    public class Individu {
     
       private String name ;
       private Genotype genotype ;
       private Phenotype phenotype ;
     
       public Individu ( String name ) {
          this.name = name ;
          this.genotype = new Genotype(this) ;
          this.phenotype = new Phenotype(this) ;
       }
     
       public String getName() {
          return name;
       }
     
       public Genotype getGenotype() {
          return genotype ;
       }
     
       public Phenotype getPhenotype() {
          return phenotype ;
       }
    }
    Classe Genotype (la classe Phenotype est identique) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class Genotype {
     
       private Individu individu ;
     
       public Genotype( Individu individu ) {
          this.individu = individu ;
          System.out.println( this.individu.getName() ) ;
       }
     
    }
    Passer l'instance de Individu à la création du génotype et du phénotype permet à ces 2 classes de savoir "à qui elles appartiennent".

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

Discussions similaires

  1. [Débutant] Invocation du constructeur sur le type
    Par tornade69 dans le forum C#
    Réponses: 1
    Dernier message: 03/09/2013, 10h42
  2. Erreur invocation d'un constructeur RTTI
    Par Moez.B dans le forum Langage
    Réponses: 4
    Dernier message: 22/04/2013, 22h49
  3. [VB6]Déclaration d'un Constructeur Spécialisé
    Par TagadaTsoin dans le forum VB 6 et antérieur
    Réponses: 21
    Dernier message: 26/05/2004, 14h09
  4. Capture d'exception dans un constructeur
    Par declencher dans le forum Composants VCL
    Réponses: 8
    Dernier message: 03/02/2004, 12h52
  5. pb constructeurs classes dérivant classe abstraite
    Par Cornell dans le forum Langage
    Réponses: 2
    Dernier message: 10/02/2003, 19h02

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