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 :

pb de conception java


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Par défaut pb de conception java
    J’ai ce code que je souhaite améliorer, merci de bien vouloir m’aider

    Application 1
    L’application 1 contient deux package pacInterface1 et pacObject1. Le premier est composé d’interface et le deuxième de classes qui implémentent ces interfaces. Ainsi on y trouvera une classe par interface.

    Exemple ObjectPack1 implements InterfacePack1.

    Application 2 (celle qui m’intéresse) contient pareil deux packages pacInterface2 et pacObject2.
    Voici ce que j’ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InterfacePack2 extends InterfacePack1 (De l’application 1).
    Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ObjectPack2 implements InterfacePack2 {
    	public ObjectPack1 objectPack1  ;
     
    	public objectPack2 (objectPack1  objectPack1 ) {
           		 super(objectPack1 );
          		  this. objectPack1  = objectPack1 ;
     	   }
     
    }
    Ici, ce n’est pas logique qu’il y est une agrégation et un héritage au même temps, il faudra virer l’un ou l’autre.
    Que pensez vous, je vire l’agrégation ou l’héritage ???

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    salut,
    Exemple ObjectPack1 implements InterfacePack1.

    Application 2 (celle qui m’intéresse) contient pareil deux packages pacInterface2 et pacObject2.
    Voici ce que j’ai :
    InterfacePack2 extends InterfacePack1 (De l’application 1).
    Et
    ObjectPack2 implements InterfacePack2 {
    public ObjectPack1 objectPack1 ;

    public objectPack2 (objectPack1 objectPack1 ) {
    super(objectPack1 );
    this. objectPack1 = objectPack1 ;
    }

    }
    bon il existe plusieurs solutions.
    ici si ObjectPack2 et ObjectPack1 implimentent les fonctions de l'interface InterfacePack1 de la même façon il serais logique de supprimer l'héritage car il y aura une redondonce et tu crée une instance de ObjectPack1 dans ObjectPack2 ou bien tu peut fusionner les 2 interfaces InterfacePack1 et InterfacePack2et les 2 classes ObjectPack2 et ObjectPack1.
    sinon s'ils implimentent les fonctions de InterfacePack1 de manière différentes alors là tu peut faire ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ObjectPack2 implements InterfacePack2, InterfacePack1
    en tout cas ça reste difficile de répondre car ça dépend de ta conception.

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Par défaut
    le truc c'est que ici, en faisant cet héritage dans mon application2, je suis obligé de ré implémenter des méthodes de interfacePack1 dont je n'est pas besoin et du coup je fais par exemple ce ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public void setX(int x0){
    }
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public int getX(){
      return 0;
    }
    je me dis que si j'utilise l'agrégation et si j'enleve l'héritage alors de cette façon j'implémente uniquement les méthodes dont j'ai besoin sauf que je ne sais pas côté conception si c'est mieux ou non.

  4. #4
    Membre chevronné Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Par défaut
    Pour éviter de ré-implémenter les méthodes de l'interface 1 il faut de toutes façons supprimer l'héritage. L'idéal pour moi serait de faire comme ceci :
    - Créer une classe abstraite contenant les méthodes communes à ObjectPack1 et ObjectPack2,
    - Faire hériter ces deux classes de la classe abstraite (en surchargeant éventuellement les méthodes de la classe maman),
    - Implémenter les classes concrètes par leur interface correspondante.

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Par défaut
    cette classe abstraite je la crée dans l'application 1 ??
    en fait l'application 1 est une application qui commune à plusieurs applications dont la 2, c'est comme une sorte d'interface netre les differentes applications du SI et donc je ne pourrais pas y toucher car ceci impactera les autres applications qui sont gérés par les autres personnes.

  6. #6
    Membre chevronné Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Par défaut
    La classe abstraite est propre à ton application, donc crée là plutôt dans la 2. Mais le fait de la créer dans la 1 n'influera pas sur l'application 1, au pire elle ne lui servira à rien. Mais on ne sait jamais, peut-être que d'autres personnes en auront besoin. A toi de voir.

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

Discussions similaires

  1. [Conception] Java et manipulation grandes quantités de données
    Par maccormick dans le forum Général Java
    Réponses: 12
    Dernier message: 19/07/2011, 12h39
  2. conception java appeler méthode sur un objet de type Object
    Par molesqualeux dans le forum Langage
    Réponses: 5
    Dernier message: 04/02/2011, 12h05
  3. Problème conception Java ("classe unique")
    Par bruno_nono dans le forum Général Java
    Réponses: 5
    Dernier message: 09/04/2010, 11h40

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