Précédent   Forum des professionnels en informatique > Java > Général Java
Général Java Java SE, Java ME, APIs, Persistance, JDBC, Spring, XML. Avant de poster -> FAQ Java, Sources Java
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/01/2012, 20h55   #1
Invité de passage
 
Homme
Étudiant
Inscription : avril 2011
Messages : 31
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 31
Points : 0
Points : 0
Par défaut Comment organiser de façon hiérarchique?

Bonsoir,

j'ai créé une classe "Dépense" avec une variable catégorie, comment svp je peux organiser de façon hiérarchique sans limite de profondeur? par exemple santé, santé/dentiste, santé/médecin/généraliste, santé/médecin/spécialiste, alimentation, alimentation/supermarché et ainsi de suite.
je me demande si je ne dois pas créer seulement:

Code :
List<Depense> ds =new ArrayList<Depense>();
Merci bcp pr votre aide.
jaki199 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 22h42   #2
Modérateur
 
Avatar de tchize_
 
Homme
Responsable de service informatique
Inscription : avril 2007
Messages : 16 199
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Service public

Informations forums :
Inscription : avril 2007
Messages : 16 199
Points : 25 348
Points : 25 348
Envoyer un message via MSN à tchize_ Envoyer un message via Skype™ à tchize_
Code :
1
2
3
4
public class Categorie{
   private List<Categorie> sousCategories;
   // etc...
}
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et
"Votre génitrice tute des pédoncules au pandémonium" (le conjurateur, 1973)
tchize_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 00h06   #3
Invité de passage
 
Homme
Étudiant
Inscription : avril 2011
Messages : 31
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 31
Points : 0
Points : 0
Merci pr votre réponse, je dois alors créer une nouvelle classe pr chaq sous catégorie supplémentaire?
jaki199 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 09h14   #4
Membre Expert
 
Homme
Ingénieur développement logiciels
Inscription : septembre 2008
Messages : 733
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2008
Messages : 733
Points : 1 397
Points : 1 397
C'est le but oui. Cela va te permettre de leur donner un comportement personnalisé à chacune.
deathness est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 10h34   #5
Expert Confirmé Sénior
 
Inscription : septembre 2004
Messages : 5 099
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 099
Points : 7 026
Points : 7 026
Citation:
Envoyé par deathness Voir le message
C'est le but oui. Cela va te permettre de leur donner un comportement personnalisé à chacune.
Euh, non, je ne crois pas que c'était l'idée.
Il me semble plutôt que chaque catégorie devrait être une instance de la classe Categorie. Ce qui permet d'ajouter à chaque catégorie un nombre quelconque de sous-catégories.
Il reste à ajouter à cette classe, un nom pour la catégorie, et un moyen d'y stocker les dépenses de cette catégorie. Par exemple List<Depense>.
thelvin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 10h59   #6
Membre émérite
 
Inscription : mai 2006
Messages : 787
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 787
Points : 837
Points : 837
Bonjour,

Il y a aussi la possibilité d'utiliser les structures liées aux arbres : treenodes et compagnie. Parce que la, ce qui est recherché ressemble furieusement à un arbre...

a+
hwoarang est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 11h20   #7
Expert Confirmé Sénior
 
Inscription : septembre 2004
Messages : 5 099
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 099
Points : 7 026
Points : 7 026
Citation:
Envoyé par hwoarang Voir le message
Bonjour,

Il y a aussi la possibilité d'utiliser les structures liées aux arbres : treenodes et compagnie. Parce que la, ce qui est recherché ressemble furieusement à un arbre...

a+
Certes, mais... C'est un truc Java, ça, treenodes ?

Personnellement, pour faire ce truc-là, je créerais ma propre structure de donnée, basée sur des HashMap imbriquées je suppose. Ou plutôt des Multimap imbriquées.
thelvin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 14h17   #8
Membre émérite
 
Inscription : mai 2006
Messages : 787
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 787
Points : 837
Points : 837
Citation:
Envoyé par thelvin Voir le message
Certes, mais... C'est un truc Java, ça, treenodes ?
Bah c'est du swing. Et s'il ne faut pas les utiliser, on peut comme tu le suggeres refaire la structure. Mais je me baserais plutot sur une structure type treenode que sur une liste contenant les categories pere (quoi que, ca dependrait peut etre de l'utilisation). Mais dans tous les cas, c'est toujours utile de connaitre une classe qui fait a peu pres ce qu'on veut pour s'inspirer
Mais bon, si j'avais à le faire, je ferais surement un truc avec des noeuds...
hwoarang est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 16h31   #9
Expert Confirmé Sénior
 
Inscription : septembre 2004
Messages : 5 099
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 099
Points : 7 026
Points : 7 026
Citation:
Envoyé par hwoarang Voir le message
Bah c'est du swing.
Ah, ok. Ce n'est pas mal du tout, mais il reste à gérer la différence entre les nœuds Catégorie, qui sont parents et enfants, et les nœuds Dépense, qui sont des feuilles.

Enfin d'une manière ou d'une autre, c'est pas évident évident.
thelvin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 16h23   #10
Membre du Club
 
Homme Claude RICHARD
Chef de projet NTIC
Inscription : novembre 2011
Messages : 50
Détails du profil
Informations personnelles :
Nom : Homme Claude RICHARD
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet NTIC
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2011
Messages : 50
Points : 40
Points : 40
Citation:
Envoyé par jaki199 Voir le message
Bonsoir,

j'ai créé une classe "Dépense" avec une variable catégorie, comment svp je peux organiser de façon hiérarchique sans limite de profondeur? par exemple santé, santé/dentiste, santé/médecin/généraliste, santé/médecin/spécialiste, alimentation, alimentation/supermarché et ainsi de suite.
je me demande si je ne dois pas créer seulement:

Code :
List<Depense> ds =new ArrayList<Depense>();
Le plus simple est de créer une classe final Categorie:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
final public class Categorie{
   ...
   String nomCategorie;
   int dp; // les montants sont enregistrés en centimes
 
   Catégorie(final String nomCategorie1, final int montantEnCentimes1){
      nomCategorie=nomCategorie1;
      dp = montantEnCentimes1;
   }
   ...
}
Ainsi on garde toute la souplesse du faiblement couplé.

Le mieux est alors de remplacer la ListArray par un int : 'une Depense = une sortie d'argent' et une seule
... et ajouter dans Depense un champ typeDépense pour connaître leur nature : CB/espèce/chèques/..
Et un autre etatDepense : réglée/bloquée/enAttente/.. .

On obtien les listes à partir de la base de données (objet ou relationnelle) par indexation des champs pour regrouper les dépenses selon les besoins de la requête.

Gérer une liste est très difficile à réaliser avec risque d'incohérence entre les instances des classes déjà enregistrées.

Claude
cylere est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h18.


 
 
 
 
Partenaires

Hébergement Web