cs_damien781
Messages postés79Date d'inscriptionlundi 13 septembre 2004StatutMembreDernière intervention13 décembre 2004
-
28 oct. 2004 à 08:51
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 2006
-
2 nov. 2004 à 09:26
Hello,
J'ai des méthodes afin de créer l'arborescence de mon arbre... Donc en mémoire!! Comment je fais pour le sauver dans un fichier et le restituer ensuite à la place mémoire???
mémoire <---> fichier
Un méthode pour enregistrer dans un fichier c pas compliqué (par exemple XMLEncodre.... etc) mais comment on pointe mon arbre??? et comment on le remet dans la mémoire??
car la création de mon arbre se passe comme ceci :
arbreDroit = new ArbreBinaire(new Character('E'));
arbreDroit.accrocherGauche(new ArbreBinaire(new Character('I')));
arbre = new ArbreBinaire(new Character('A'));
arbre.accrocherGauche(arbreGauche);
arbre.accrocherDroit(arbreDroit);
// Avant modification de l'arbre original
System.out.println("Arbre initial: ");
// Parcours selon notation Lisp
System.out.print("Parcours Lisp: ");
arbre.parcoursLisp();
je sauve simplement "arbre" ?? puis pour le restituer en mémoire interne pour le modifier ou autre?? argh..
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 28 oct. 2004 à 11:10
:big) Neodante :big)
Aujourd'hui je n'aurais pas le temps d'être en ligne, donc envoi moi ton code je verrais ce que je peux faire :
webmaster[at]neogamedev[dot]com
Mais déjà pour répondre à ta question, lorsque tu sérialise un objet, à moins de le restituer dans un prog java, cela ne te sert pas des masses. Sauf qu'ici il est en XML, donc tu pourras le modifier avec un prog SAX/DOM ou avec XSLT ...
@+
cs_damien781
Messages postés79Date d'inscriptionlundi 13 septembre 2004StatutMembreDernière intervention13 décembre 2004 29 oct. 2004 à 11:43
Salut NeoDante... Ben ca marche pas! snif...
j'arrive pas avec XMLEncoder a reproduire mon l'arborescence de mon arbre avec la valeur de ses noeuds! argg...
Comme je suis bloqué j'essaie avec DOM...
mais avec XMLEncodeur c possible de sauver l'arborescence de mon arbre qui est crée sous cette forme:
/*
A
B C
1 2 3 4
arbre = new ArbreBinaire(new Character('A'));
arbre.accrocherGauche(arbreGauche);
arbre.accrocherDroit(arbreDroit);
// Avant modification de l'arbre original
System.out.println("Arbre initial: ");
// Parcours selon notation Lisp
System.out.print("Parcours Lisp: ");
arbre.parcoursLisp();
C'est possible???
Puis après depuis le fichier je dois pouvoir restituer ceci en mémoire.... bref c le pas suivant
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 29 oct. 2004 à 13:13
:big) Neodante :big)
Bah et cela doit se faire tout seul ... toutes les références d'un objet sont automatiquement enregistré lorsque tu enregistres cet objet ...
Je sais po pourquoi cela ne marcho po ...essaye simplement avec une classe tout bête, tu verras ça marche ...
As-tu lu la javadoc ???
@+
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 29 oct. 2004 à 13:20
:big) Neodante :big)
Attends je crois avoir trouvé ton erreur : une classe XML pour être sérialisable doit avoir un certain nombre de choses (obligatoires !):
- un constructeur par défaut :
public MaCLasse()
- Pour tous les champs que tu veux enregistrer tu dois avoir des accesseurs get/set:
int toto;
public void setToto(int);
public int getToto();
- Et implémenter l'interface Serializable (tu n'as pas besoin de surcharger de fonctions d'ailleurs !)
Avec ça pas de doute que ça marchera !!!!!
Oups j'avais oublié de le dire ...mais c'est dans la documentation Java ...
@+
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 30 oct. 2004 à 17:59
:big) Neodante :big)
Si tu fais tout ce que j'ai marqué au dessus ça marche forcément !!! Evidemment touts les classes que tu veux voir sérialiser (même les classes qui se trouvent en référence !!) doivent implémenter Serializable ...
Je m'en sert dans mes prog ... donc ça marche très bien ... jamais eu de prob !
@+
cs_damien781
Messages postés79Date d'inscriptionlundi 13 septembre 2004StatutMembreDernière intervention13 décembre 2004 31 oct. 2004 à 17:28
salut!
Pour tous les champs que tu veux enregistrer tu dois avoir des accesseurs get/set:
int toto;
public void setToto(int);
public int getToto();
Donc les champs de mon arbre (dont tu as vu le code dans un de mes autres post) sont des lettres A,B...
Donc il faut que je mette des get et des set pour ces paramètres c'est ca?
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 1 nov. 2004 à 00:51
:big) Neodante :big)
Tout compris sauf que les accesseurs sont des choses de cette façon (tu t'ais trompé dans ton post !):
PRIVATE INT valeur;
public VOID setValeur(INT);
public int GetValeur();
@+
cs_damien781
Messages postés79Date d'inscriptionlundi 13 septembre 2004StatutMembreDernière intervention13 décembre 2004 2 nov. 2004 à 08:55
Petit souci de clareté. ce qui en est du contructeur, des get et des set c'est ok.
Donc j'ai mon arbre et chacun des mes noeuds contient un objet qui provient d'une autre classe (cette objet a un certain nombre d'element a sauver) dans mon code ci-dessus, pour simplifier la chose, j'ai simplement mis un String par Noeud.
ces get, set, et contructeur j'ai du mal a savoir ou les mettres.... dans le/les objecs que je veux sérialiser? donc dans mon noeud ( donc get et set pour mon "etiquette" dans ce cas là) et pour mon arbre??
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 2 nov. 2004 à 09:26
:big) Neodante :big)
Regarde j'ai fait un tutorial spécialement pour toi ... et en plus c'est une liste chainée avec n'importe quel objet (bon j'ai également mis des string pour l'exemple) ... je pense que cela devrait t'aider !
@+