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]
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();
}
}
[/code]
- 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