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 :

[Conception]Problèmes avec un constructeur dérivé


Sujet :

Langage Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Points : 230
    Points
    230
    Par défaut [Conception]Problèmes avec un constructeur dérivé
    J'ai besoin qu'on m'éclaire sur une histoire de dérivation. Si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Papa {
     int monEntier ;
     public Papa(int i) {
      this.monEntier = i ;
     }
    }
    que je dérive ensuite en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public class Fiston extends Papa {
    ....
    Est-ce que je peux instancier d'office un objet Fiston à l'aide du constructeur de Papa, genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fiston toto = new Fiston(150) ;
    ?

    Ou dois-je redéfinir public Fiston(int i) ? (ce qui me paraît bête)

    Ou puis-je écrire Fiston toto = new Papa(50) et me servir par la suite de toto comme d'un Fiston (avec ses champs et ses méthodes) ?

  2. #2
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Tu dois bel et bien redéfinir le constructeur, ce que je ne trouve pas bete, puisque ce sont des classes différentes

    ensuite, dans ton cas, bien que je sache pas vraiment comme ca ce passe, il est mieux de faire une classe personne dont hériteront Papa et Fiston

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Points : 230
    Points
    230
    Par défaut
    En fait, Papa et Fiston, c'est pour faire joli.

    L'histoire, c'est que j'ai une tonne de classe TableA, TableB, TableC, etc... qui ont toutes un constructeur de la forme TableA(Entry entry) (où Entry est une classe à part), et je voulais "factoriser" le constructeur dans une classe abstraite pour éviter d'avoir à me taper 1000 fois le code du constructeur (à chaque fois identique). Y'a forcément plus intelligent ?

  4. #4
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Ce n'est plus un problème de code mais plus un problème d'analyse et de conception.
    Si tu as 1000 classes différentes avec un "même constructeur" que tu dois te taper 1000 fois, c'ets peut-être que ces 1000 classes ne devraient pas être différentes !
    Si pour toi, le constructeur est le même, c'est donc que l'objet aussi est le même, et donc une seule classe suffit !
    non ?
    ...je ne sais pas si je suis clair là, d'un coup, en me relisant...

    En gros, si tu as 1000 Tables, c'est donc 1000 objets de type Table, mais pas 1 objet Table1, 1 objet Table2, 1 objet Table3, etc.
    L'interêt du doute est que cela fait avancer.
    (parenthèses)Je suis à la recherche d'un emploi sur Valence(26) et ses environs.
    mon cv:
    http://charegis.netcv.org/

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Points : 230
    Points
    230
    Par défaut
    Hélas non car chaque table a une structure différente, à part un champ. J'avais pensé stocker chaque attribut de la classe non pas par un champ "codé en dur", mais par des paires clé/valeur. Mais je suis embêté car certaines tables contiennent des tableaux. Mais effectivement, j'ai un problème de représentation des données. Soit c'est embêtant à coder, soit c'est embêtant à utiliser...

  6. #6
    Membre confirmé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Points : 645
    Points
    645
    Par défaut Re: Problèmes avec un constructeur dérivé
    Citation Envoyé par Le Furet
    Ou puis-je écrire Fiston toto = new Papa(50) et me servir par la suite de toto comme d'un Fiston (avec ses champs et ses méthodes) ?
    Tu ne peux pas faire ça car un Papa n'est pas un fiston.

    Pour faire A a = new B(); il faut que B soit un A. Autrement dit que B hérite de A (à n'importe quel niveau) ou que, si A est une interface, B implémente A.
    Je sais que désormais vivre est un calembour,
    La mort est devenue un état permanent,
    Le monde est aux fantômes, aux hyènes et aux vautours.
    Moi je vous dis bravo et vive la mort.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Points : 568
    Points
    568
    Par défaut
    Tu n'as pas a dupliqué le code un simple appel a super(...) dans tes constructeur appelleras le constructeur de "Papa" et ensuite tu initialise les attribut propre a "Fiston"
    UML avec VIOLET

Discussions similaires

  1. [Conception] Problème avec input type="text"
    Par adrix26 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 02/03/2007, 10h52
  2. [Conception] problème avec la contrainte d'integrité foreign key
    Par zana74 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/08/2006, 20h42
  3. [Conception] Problème avec INSERT dans une TABLE
    Par dunbar dans le forum PHP & Base de données
    Réponses: 26
    Dernier message: 20/07/2006, 12h56
  4. [Conception] Problème avec l'écriture dans une BDD [Script de news]
    Par NeuroGen dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 02/07/2006, 19h08
  5. [Conception] Problème avec formulaire
    Par snakejl dans le forum PHP & Base de données
    Réponses: 34
    Dernier message: 27/06/2006, 11h25

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