Bonjour,
J'ai un problème dans le choix d'implémentation d'un arbre. Si je veux juste définir un arbre d'un type unique, pas de soucis a priori j'utilise la définition suivante:
Je n'ai pas mis les méthodes. La liste d'enfants sera éventuellement une référence égale à null dans le cas où il s'agit d'une feuille de l'arbre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public class ArbreDeType{ private Type valeur; private List<ArbreDeType> enfants; ... }
Là où j'ai un soucis c'est que je souhaite avoir deux objets différents dans le cas où mon nœud est ou n'est pas une feuille. Plus précisément je veux implémenter des catégories et des produits sous forme d'arbre. Une catégorie n'aura que son nom tandis qu'un produit aura l'attribut prix, une quantité, et des méthodes supplémentaires par rapport à la catégorie. Du coup j'ai défini la classe catégorie ainsi:
(Pareil, je n'ai pas précisé les méthodes ici)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public class Category { String name; List<Category> children; ... }
et j'ai fait hériter la classe produit de la classe Category. Du coup si je veux afficher la liste des prix des produits d'une catégorie je fais:
Seulement on m'a dit que sémantiquement le fait de faire cet héritage n'était pas terrible. Auriez-vous une idée d'implémentation plus propre qui ne me fasse pas perdre en efficacité?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public void afficherPrix(Category c){ if(c.getChildren().size()==0){ Product p = (Product)c; System.out.println(p.getPrice()); } else{ for(Category cat:c.getChildren()){ afficherPrix(cat); } } }
Merci d'avance pour votre aide!
Arthur
Partager