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

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
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