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 :

Instancier une classe à partir d'un objet d'une classe mère : solution pratique ?


Sujet :

Langage Java

  1. #1
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 1 374
    Points
    1 374
    Par défaut Instancier une classe à partir d'un objet d'une classe mère : solution pratique ?
    Bonjour

    J'ai un problème suivant :
    B hérite de la classe A et ajoute quelques attributs.

    Je peux récupérer un objet de la classe A (via quelque chose du genre context.getA()) mais j'ai besoin que mon objet soit de la classe B pour, plus tard, lui instancer les autres attributs.

    Pour l'instant, je ne vois que la solution suivante: faire un constructeur dans ma classe B qui accepte en paramètre un objet de la classe A puis faire tous les set et les get manuellement.

    Je me demande en fait s'il n'y pas une meilleure méthode. Genre faire dans mon constructeur de B quelque chose comme mais ce n'est pas possible :
    public B(A a){
    super = a ;
    }

    Je pourrai également passer par clone() mais je n'ai pas forcément besoin d'une nouvelle instance, un passage par référence (et non valeur) m'allant aussi très bien dans le cas présent.

    Etant donné que je vais faire souvent ce genre de choses, j'aimerai savoir s'il existe une solution plus pratique que celle des getters et setters ou du clone (qui fait une nouvelle instance dont je n'ai pas besoin in fine)...

    Merci d'avance
    Merci d'utiliser le bouton [Résolu] pour les sujets qui le sont.
    [pub]mon blog franco anglais, article du moment: Wicket: fournir des données JSON via Ajax[/pub]

  2. #2
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Et ne pourrais-tu pas faire :
    ?
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  3. #3
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 1 374
    Points
    1 374
    Par défaut
    Merci pour ta réponse mais... non

    En fait je récupère un objet de type A que j'aimerai "encapsuler" dans mon objet de type B (qui hérite du type A) avec un minimum de code histoire de pouvoir réutiliser aisément ce genre de construction.
    Merci d'utiliser le bouton [Résolu] pour les sujets qui le sont.
    [pub]mon blog franco anglais, article du moment: Wicket: fournir des données JSON via Ajax[/pub]

  4. #4
    Membre actif Avatar de austin P.
    Inscrit en
    Juin 2004
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Juin 2004
    Messages : 182
    Points : 239
    Points
    239
    Par défaut
    l'heritage doit respecter le principe de substitution de liskov cad

    "pour prétendre à l'héritage, une sous-classe doit être conçue de sorte que ses instances puissent se substituer à des instances de la classe de base partout où cette classe de base est utilisée."

    ici j'ai l'impression que ton heritage est plus un heritage de confort (factorisation de code par ex.)


    il me semble difficile de faire un getA() en esperant obtenir une instance B pour utiliser ses methodes spécialisées.

    est tu sur que B extend A à un sens ?
    En essayant continuellement on finit par réussir. Donc : plus ça rate, plus on a de chance que ça marche. (Jacques Rouxel : "Les shadoks")

  5. #5
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 1 374
    Points
    1 374
    Par défaut
    Il est certain qu'il y a un certain aspect de confort dans ma démarche, le but est en effet d'étendre des classes métiers pour en faire des "beans" utilisables dans ma couche présentation avec le moins de "refactoring/retouches" possibles.

    Plus concrètement, si on prend par exemple le bête cas de la classe "user", j'ai besoin de lui ajouter un attribut "newPassword" qui sera utilisé lors de l'édition de son profil. Or je n'ai pas envie de réécrire tous mes attributs juste pour ce rajout.

    De même, faire une composition (un objet B avec un attribut de classe A) me dérange quelque peu car du coup je devrai je devrai faire a.b.attributMetier, ce qui introduit une couche qui me dérange dans la partie présentation (où le modèle métier ne m'intéresse que peu au demeurant).

    Qu'en dis tu ?
    Merci d'utiliser le bouton [Résolu] pour les sujets qui le sont.
    [pub]mon blog franco anglais, article du moment: Wicket: fournir des données JSON via Ajax[/pub]

  6. #6
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    Par défaut
    Citation Envoyé par ZedroS
    faire une composition me dérange quelque peu
    [...]
    le modèle métier ne m'intéresse que peu au demeurant
    Ce n'est pas cohérent (d'ailleurs la "propreté" du modèle est un FONDEMENT des langages objets) !...

    " Jag blev dömd för fildelning och allt jag fick var en sketen t-shirt. " (tankafritt.nu)
    PAS DE REPONSE PAR MESSAGE PRIVE ! Penser au bouton Résolu en bas de la discussion...

  7. #7
    Membre actif Avatar de austin P.
    Inscrit en
    Juin 2004
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Juin 2004
    Messages : 182
    Points : 239
    Points
    239
    Par défaut
    Citation Envoyé par ZedroS
    De même, faire une composition (un objet B avec un attribut de classe A) me dérange quelque peu car du coup je devrai je devrai faire a.b.attributMetier, ce qui introduit une couche qui me dérange dans la partie présentation (où le modèle métier ne m'intéresse que peu au demeurant).

    Qu'en dis tu ?
    ce probleme peut etre contourné par la délégation (ca fait un peu de tuyauterie pour cabler les méthodes)

    si c'est pour factoriser l'utilisation sur la couche présentation, implémente simplement une interface. Cependant dans la couche business, utilise le type d'implémentation sinon tu vas pas t'en sortir et faire des casts à longueur de temps.
    En essayant continuellement on finit par réussir. Donc : plus ça rate, plus on a de chance que ça marche. (Jacques Rouxel : "Les shadoks")

  8. #8
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 1 374
    Points
    1 374
    Par défaut
    Citation Envoyé par g_rare
    Ce n'est pas cohérent (d'ailleurs la "propreté" du modèle est un FONDEMENT des langages objets) !...

    Euh, oui, c'est bien le comment du pourquoi de mes questions... Tu peux expliciter ta remarque stp ?

    Quand je dis que la couche de présentation ne devrait pas s'intéresser aux détails de la couche métier, cela me semble assez naturel et sain non ?

    Sinon, encore merci austin P., je vais regarder pour la délégation (que je ne connais pas trop :$) pour voir si ça peut répondre à mes besoins.
    Merci d'utiliser le bouton [Résolu] pour les sujets qui le sont.
    [pub]mon blog franco anglais, article du moment: Wicket: fournir des données JSON via Ajax[/pub]

Discussions similaires

  1. obtenir une texture2d à partir d'un objet Image ou Bitmap
    Par estacado dans le forum XNA/Monogame
    Réponses: 23
    Dernier message: 17/10/2009, 18h43
  2. modifier l'objet d'une page à partir de son iframe
    Par jamy1664 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/07/2007, 16h29
  3. Accèder les objets d'une form à partir d'une classe
    Par xyron_x dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/04/2007, 14h49
  4. [MySQL] Affichage de champs a partir d'un objet d'une liste déroulante
    Par Sofute dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/01/2007, 22h48
  5. Accéder à des objets d'une Form à partir d'une classe
    Par kinouseb dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/01/2007, 18h07

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