Comment faire....

mau007 Messages postés 20 Date d'inscription lundi 2 janvier 2006 Statut Membre Dernière intervention 20 mai 2011 - 5 mai 2011 à 23:06
mau007 Messages postés 20 Date d'inscription lundi 2 janvier 2006 Statut Membre Dernière intervention 20 mai 2011 - 8 mai 2011 à 00:18
Bonjour à tous,

j'ai besoin d'avoir de l'aide sur le point suivant:

j'ai trois classes:

ClasseUne
public abstract class ClassUne {
  private String champUn;
  private List <ClassDeux> champDeux;

  public ClassUne(){
    super();  // <--- je l'ai mis mais je ne sais pas pourquoi.
    champDeux =  new ArrayList <ClassDeux>();
  }

  public String getChampUn(){
    return champUn;
  }

  public void setChampUn(String champUn){
    this.champUn =  champUn;
  }

  public List getChampDeux(){
    return champDeux;
  }
}


ClasseDeux
public ClassDeux{
  private String champUn;
  private String champDeux;
  private String champTrois;
  private String champQuatre;

  public ClassDeux(){
    this.champUn   = null;
    this.champDeux =  null;
    this.champTrois = null;
    this.champQuatre = null;
  }

  // champ veut dire:
  //    soit champUn, soit champDeux, ...
  public String getChamp(){
    return champ;
  }

  public void setChamp(String value){
    champ = valeur;
  }

  public void setTr(List <ClassDeux> listTr, Element current){
    ClassDeux myCurrentTr =  new ClassDeux();
    myCurrentTr.setChamp(...);
    lisTr.add(myCurrentTr);
  }
}


ClasseTrois
public ClassTrois extends ClassUne{
  private String champUn;
  private String champDeux;
  private boolean champTrois;
  private boolean champQuatre;

  public ClassTrois(){
    this.champUn   = false;
    this.champDeux = false;
    this.champTrois = null;
    this.champQuatre = null;
  }
  
  public boolean getChamp(){
    return champ;
  }

  public void setChamp(){
    this.champ = true;
  }

  public String getChamp<Trois,Quatre>(){
    return champ<Trois|Quatre>;
  }

  public void setChamp<Trois|Quatre>(String valeur){
    champ<Trois|Quatre> = valeur
  }
}


Voici ce que je souhaite obtenir:

je dois construire une ArrayList qui doit contenir plusieurs éléments de type ClasseTrois. Chacun de ces éléments peuvent contenir plusieurs éléments de type ClasseDeux.

Ex.: fichier de type xml

<champ de type ClassTrois>
  <champ de type ClassDeux>
  <champ de type ClassDeux>
<champ de type ClassTrois>
<champ de type ClassTrois>
  <champ de type ClassDeux>


L'idée, avec mes classes est de charger le contenu de ce fichier en mémoire.
Je sais qu'il existe des trucs tout faire (cfr JDOM pour lire les fichiers XML) mais je dois effectuer ce travail dans le cadre de mes études.

Mes questions sont les suivantes:

1. est-ce qu'avec cette définition de classe, je pourrais obtenir le résultat attendu?
2. ai-je de bonnes définitions de méthodes où y'a-t-il moyen d'améliorer?
3. Tout le fichier doit être "placé" dans une variable ArrayList (c'est mon choix). Mais cette ArrayList va contenir des elements qui sont aussi des ArrayList. Alors comment remplir ces champs?

Votre aide me serait d'un grand secours. D'avance je vous remercie.

M.

2 réponses

Utilisateur anonyme
7 mai 2011 à 23:48
  public ClassUne(){
    super();  // <--- je l'ai mis mais je ne sais pas pourquoi.
    champDeux =  new ArrayList <ClassDeux>();
  }

Où est l'intérêt de mettre quelque chose que tu ne comprends pas ? L'appel à super ne te sert ici absoluement à rien. super() fait appel au constructeur de la super classe. Ici, tu n'as pas d'héritage de déclaré donc cela ne te sert pas.


  public void setChamp(String value){
    champ  = valeur;
  }

Si tu a un paramètre nommé value, utilises le sans faute dans le code. Tu as mis valeur ici.

1. est-ce qu'avec cette définition de classe, je pourrais obtenir le résultat attendu?

Je pense que oui.

2. ai-je de bonnes définitions de méthodes où y'a-t-il moyen d'améliorer?

A part la syntaxe de tes getters et setters je pense que c'est bon. Par contre tu utilises des this qui ne servent à rien dans le constructeur de ClassDeux. this fait référence à l'objet courant et est utilisé quand tu as des ambiguïtés entre des noms de variables ce qui n'est pas le cas ici.


3. Tout le fichier doit être "placé" dans une variable ArrayList (c'est mon choix). Mais cette ArrayList va contenir des éléments qui sont aussi des ArrayList. Alors comment remplir ces champs?

Tu entends quoi par placer tout ton fichier dans une ArrayList ? C'est tes balises de ton fichier XML qui feront tes objets à stocker dans la liste ? Pour remplir ces champs, tout dépend de ce que tu veux mettre dedans.

--
Pylouq (actuellement jongleur de clavier AZERTY et de clavier QWERTZ)
0
mau007 Messages postés 20 Date d'inscription lundi 2 janvier 2006 Statut Membre Dernière intervention 20 mai 2011
8 mai 2011 à 00:18
Bonsoir Pylouq,


heureusement que tu es très actif sur ce forum, sinon, je serais un peu dans le pétrin.


Où est l'intérêt de mettre quelque chose que tu ne comprends pas ? L'appel à super ne te sert ici absoluement à rien. super() fait appel au constructeur de la super classe. Ici, tu n'as pas d'héritage de déclaré donc cela ne te sert pas.

simplement parce que j'ai bêtement recopié un exemple où les variables étaient initialisées dans le constructeur. J'ai fait le gros "noob" sur ce coup là (la fatigue, la dead line, le stress y sont pour quelque chose aussi )

Si tu a un paramètre nommé value, utilises le sans faute dans le code. Tu as mis valeur ici.


C'était juste une erreur de retranscription.

Tu entends quoi par placer tout ton fichier dans une ArrayList ? C'est tes balises de ton fichier XML qui feront tes objets à stocker dans la liste ? Pour remplir ces champs, tout dépend de ce que tu veux mettre dedans.


Tu as tout compris. Ce sont les balises du fichier XML qui servent à définir les objets.

Mais je viens de tout remettre à plat depuis cet après-midi. En gros, j'ai tout recommencé et je suis arrivé au résultat que je voulais (avec quelques bugs ceci-dit mais je devrais m'en sortir).

Ma première "philisophie" n'était pas la meilleure approche. Avec un peu plus de réflexion et de précieux conseils comme les tiens, je suis assez proche de la cloture de mon projet même si j'en suis qu'à la moitié :-)

Je vous tiendrais au courant de l'évolution de mon schmilibilik :)
0
Rejoignez-nous