Conception java

Signaler
Messages postés
34
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
17 juillet 2008
-
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010
-
J'ai plusieur problèmes de conceptions surtout pour l'héritage.
Imaginons que je construises un arbre tel que celui-ci. J'aimerais savoir quelle est la meilleure implémentations

class Tree {
    protected String value = null;
    private Tree racine = null;
    private static String expression;

    public Tree() {}
    public Tree(String exp) {
        racine = createChildren();
    }
    protected Tree createChildren() {
          String tabExp[] = expression.split(" ");
          String commande = tabExp[0];

           for(int i = 1; i < tabExp.length(); ++i)
                    expression += tabExp[i]

         if(commande.equals('...'))
                return new A(expression);
         else if(commande.equals('...'))
                return new B(expression);
            else
                return new C();

         return null;
    }
   ...
}

// les objets de la classe A n'ont qu'un fils de gauche!

class A extends Tree {

    public A(String exp) {

        super();

        left = createChildren(exp);

    }

}

// les objets de la classe B ont 2 fils!

class B extends Tree {

    public B() {

        super();

        left = createChildren();


       right = createChildren();

    }

}

// les objets de la classe C n'ont pas de fils !

class C extends Tree {

    public C() {

        super();
    }

}



- Les objets de la classe C sont des feuilles de l'abre. Est-il grave que j'hérite des pointeurs null tel que left et right si je ne les utilisent pas. Est-il mieux de ne pas mettre left et right dans Tree mais ajouter
    - left dans la classe A
    - left et right dans la classe A et B

- J'ai implémenté C de manière conceptuelle mais C correspond  à Tree. Faut-il l'implémenter pour garder le concept ou non?

J'ai également ajouter la donnée membre racine pour le concept alors que si mon arbre a un fils il est automatiquement de gauche(left). Est-ce correcte de rajouter racine ou c'est mieux de travailler à partir de left?

MERCI de m'éclairer

1 réponse

Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010

Salut,
je penses qu'il est assez dur de ce prononcer sur un problème de modélisation sans savoir ce que l'on modélise, toutes sorte de solutions sont possibles, après cela dépend de ce qu'on veut en faire.
Par exemple on pourrait imaginer un héritage C<-A<-B, ou left et createChildren() serait défini dans A et right défini dans B, ou des classes Feuille et Noeud plus générale.
En fait le plus gros problème est je penses au niveau de ta string "expression;".
Soit tu en fait un attribut protected que tu passe en paramètre (le plus propre sans doute), soit tu le laisse static mais alors ça ne sert à rien de le passer en paramètre de A et B (dans le constructeur Tree tu ne l'utilise d'ailleurs pas).