question sur conception objet

question sur conception objet - Java - Programmation

Marsh Posté le 06-03-2003 à 15:07:08    

salut tout le monde!
comme certain l'auront remarqué, je débute un tit peu en java et forcément, j'ai plein de questions (merci à tous ceux qui m'ont déjà répondu!  :jap: )
 
mon problème est le suivant : à queele classe intégrer un serializer et un deserializer??
je m'explique : j'ai une classe toto, composée d'un objet de type titi et un autre de type tata (oh les noms pas bâteau!  :whistle: ). Je voudrais implémenter des fonctions de (dé)serialisation pour transformer mon objet toto (et donc les deux objets qui le compose, si j'ai bien compris le principe) en chaine de type String.
 
j'ai déjà écrit lmes deux fonctions qui vont bien pour faire ça, mais je ne sais pas où les placer! pas dans la classe toto je suppose, car le serialiseur prend un objet toto en argument, et ailleurs??? aucune idée!  :??:  
 
c peut être une question stupide et évidente, mais comme ma formation en programation objet, ben je la fait "sur le tas", j'aurais besoin de vos lumières!!
 
merci d'avance aux âme charitables!
 
--edit--
c marrant, ce nouveau topic avait au début le sujet de mon dernier topic ici! quelle merde ces cookies!


Message édité par arghbis le 06-03-2003 à 15:12:27
Reply

Marsh Posté le 06-03-2003 à 15:07:08   

Reply

Marsh Posté le 06-03-2003 à 15:27:45    

ben alors?? pas d'idée ??
 
ma question en plus court c :est-ce qu'une méthode qui à trait à un type d'objet (type sérialiseur ici) est implémentée dans la classe qui définit cet objet, ou dans une autre (laquelle??)
 
help, please!  :jap:

Reply

Marsh Posté le 06-03-2003 à 15:36:02    

ben, je connait pas trop la serialisation (de nom, mais jamais pratiquee), mais intuitivement, je dirai qu'il vaudrait mieux mettre ta fonction dans la classe toto.
 
Si tu as une fonction qui utilise ton objet toto, il peut etre interressant de la mettre comme méthode de cet objet ... comme ca, quand tu l'appelle, tu l'appeles directement sur ton objet ...
 
toto.MaFonction()
 
Je sais pas si j'ai repondu a ta question ...
et puis je suis pas non plus super sur de ce que j'infirme, mais bon c'est ce qui me vient a l'esprit :D


---------------
get amaroK plugin
Reply

Marsh Posté le 06-03-2003 à 15:40:59    

ben si tu veux, c ce que je pensais aussi, mais là m'est apparu un problème. La fonction sérialisation fait appel à la méthode writeObject (TonObjet unObjet).
 
donc, si tu fais tonObjet.serialise(), comment la fonction writeObject sait qu'il faut "écrire" l'objet tonObjet (puisque tu ne le passe pas en paramètre??  
 
encore une fois, patapé si je dis une hérésie hein??  :hello:

Reply

Marsh Posté le 06-03-2003 à 15:46:29    

arghbis a écrit :

ben si tu veux, c ce que je pensais aussi, mais là m'est apparu un problème. La fonction sérialisation fait appel à la méthode writeObject (TonObjet unObjet).
 
donc, si tu fais tonObjet.serialise(), comment la fonction writeObject sait qu'il faut "écrire" l'objet tonObjet (puisque tu ne le passe pas en paramètre??  
 
encore une fois, patapé si je dis une hérésie hein??  :hello:  


ben c'est a ca que ca sert le mot-cle this  ;)  
 
P.S. : on tape pas les gens polis  ;)


---------------
get amaroK plugin
Reply

Marsh Posté le 06-03-2003 à 15:49:18    

attends, tu veux dire qu'on peut faire ça :
 

Code :
  1. public class Toto {
  2. mes contructeurs, getters, setters;
  3. public String serializeToto (Toto unTotal) {
  4. unstream in = writeObject(this);
  5. }
  6. }]


 
c possible ça???
 
--edit--
 
j'ai essayé le code, ça compile, mais est-ce que ça fait bien ce que je veux???
 
déjà, merci bobuse!!  [:spikler]


Message édité par arghbis le 06-03-2003 à 16:16:43
Reply

Marsh Posté le 06-03-2003 à 16:38:16    

ben pkoi pas ...
writeObject(), ca vient d'ou ?
(je connais pas trop la serialisation)


---------------
get amaroK plugin
Reply

Marsh Posté le 06-03-2003 à 16:40:26    

ben ça donne ça ma fonction :

Code :
  1. public class RenderingConfiguration {
  2. .......
  3. public String serializeRenderingConfiguration () throws IOException, ClassNotFoundException
  4.     {
  5. ByteArrayOutputStream bout =      new ByteArrayOutputStream();
  6. ObjectOutputStream out = new ObjectOutputStream(bout);
  7. out.writeObject(this);
  8. out.flush();
  9. ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bout.toByteArray()));
  10. String s = (String) in.readObject();
  11. return (s);
  12.     }
  13. }

Reply

Marsh Posté le 06-03-2003 à 17:31:34    

Tout est clairement expliqué ici : http://java.sun.com/docs/books/tut [...] iding.html
 
Ta classe Toto doit implémenter l'interface Serializable, et tu dois coder dans cette classe les méthodes suivantes :

Code :
  1. private void writeObject(ObjectOutputStream s) throws IOException;
  2. private void readObject(ObjectInputStream s) throws IOException;


 
Et c'est tout.

Reply

Marsh Posté le 07-03-2003 à 08:47:49    

ben ma classe implémente Serializable (je l'ai pas marqué, oups!!)
 
mais pour ce qui est de redéfinir le write et le readObject, ce n'est pas nécessaire si?? ils disent que ça peut être utile en termes d'optimisation, mais pas nécessaire.
 
donc, en nous plaçant dans le contexte "je veux que ça marche bourdel, le reste je m'en tape (pour l'instant, paske chuis pas un goret qd même!  :whistle: )", est-ce que mon code (proposé ci-dessus est valide) et que je peu appeler dans un main un truc du genre :
 
String monString = renderingConfiguration.serializeRenderingConfiguration();
 
 
???
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed