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

Java Discussion :

[Débutant(e)][Conception] prob de programmation objet


Sujet :

Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 66
    Points : 78
    Points
    78
    Par défaut [Débutant(e)][Conception] prob de programmation objet
    Bonjour,

    je suis entrain de me pencher sur quelque chose et la horreur, il me semble qu'il y a quelque chose que j'ai pas bien compris, posons le problème:
    J'ai une classe A qui contient un vecteur d'objet B,
    j'ai une classe B qui contient un vecteur d'objet A,

    Dans ma classe A j'ai une fonction qui ajoute un élément au vecteur:
    du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void ajoutElem()
    {
       monVector.addElement(objB);
     
    }
    Mais pour être complet, il faut aussi que j'ajoute mon elem A dans le Vector de ma classe B Donc, je modifie mon code comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void ajoutElem()
    {
       monVector.addElement(objB);
       objB.ajoutElem(this);
     
    }
    et la mon problème arrive car dans ma classe B, comme j'ai tenu le même raisonnement, ma fonction ajout est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void ajoutElem()
    {
       monVector.addElement(objA);
       objA.ajoutElem(this);
     
    }
    Comment faire pour ne pas tourner en rond. Cette situation porte un nom mais je ne me rappelle plus lequel. Comment faire pour que cela n'arrive pas .

    Merci de votre aide

  2. #2
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut
    Je ne vois pas très bien l'utilité que cela peut avoir, et tu risque de rencontrer d'autres problèmes de ce genre, mais je pense que ceci fait ce que tu veux :
    Classe A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void ajoutElem()
    {
       monVector.addElement(objB);
       objB.monVector.addElement(this);
    }
    Classe B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void ajoutElem()
    {
       monVector.addElement(objA);
       obAB.monVector.addElement(this);
    }
    Je ne garantis rien car c'est un peu embrouillant ton histoire...

    Strab

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 109
    Points : 122
    Points
    122
    Par défaut
    Bonjour,
    Je crois qu'il te faut une classe d'associativité C qui gère les relations entre A et B :
    Dans A :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void ajouteElement(B b) {
    monC.ajouteRelation(this, b);
    }
    Dans B :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void ajouteElement(A a) {
    monC.ajouteRelation(a, this);
    }
    Dans C :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void ajouteRelation(A a, B b) {
    monMap.put(a, b); //ce n'est qu'un exemple d'implémentation
    }

  4. #4
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut
    Hello,

    Dans le principe, Je serai plutot d'accord avec MangeurVasqué.

    Je pense que le code sera plus clair.

    Le terme que tu cherchais , n'est pas référence circulaire?
    @+

    Fabszn
    Twitter : @fsznajderman

    N'oubliez pas le bouton
    Comment bien poser ses questions sur le forum


Discussions similaires

  1. Conception d'un programme extensible
    Par Nasire dans le forum ALM
    Réponses: 6
    Dernier message: 05/09/2011, 15h04
  2. Réponses: 1
    Dernier message: 13/04/2009, 12h14
  3. conception uml mais programmation procédurale
    Par sarah_insat dans le forum UML
    Réponses: 6
    Dernier message: 09/07/2008, 14h49
  4. [Conception] Conceptualisation grille programmes
    Par mathieu3392 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/12/2007, 11h29

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