C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Serialisation

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Eric
Guest





PostPosted: Mon Jun 07, 2004 10:23 pm    Post subject: Serialisation Reply with quote



Bonjour

J'aimerai enrgistrer un objet dans un fichier !
Or j'aimerai savoir si dans la classe de cet objet, j'ai defini un autre
objet (genre String), est ce que cet objet sera aussi copier dans le fichier
ou est ce qu'il n'enrgistrera que le pointeur ?

Cordialement,

Eric


Back to top
Fabien LE LEZ
Guest





PostPosted: Mon Jun 07, 2004 10:55 pm    Post subject: Re: Serialisation Reply with quote



On Tue, 8 Jun 2004 00:23:20 +0200, "Eric"
<i.am.newic (AT) spamsux (DOT) wanadoo.fr> wrote:

Quote:
J'aimerai enrgistrer un objet dans un fichier !

Fort bien. Cf
<http://www.google.com/groups?as_q=s%C3%A9rialisation&safe=images&ie=UTF-8&as_ugroup=fr.comp.lang.c%2b%2b&lr=&hl=en>.

Quote:
Or j'aimerai savoir si dans la classe de cet objet, j'ai defini un autre
objet (genre String), est ce que cet objet sera aussi copier dans le fichier
ou est ce qu'il n'enrgistrera que le pointeur ?

Ça dépend de la méthode de sérialisation.

Si jamais tu emploies la "méthode C", i.e. enregistrer les octets tels
qu'ils sont dans la RAM, ça ne marchera pas[*].

[*] Si l'objet en question est un POD[**], et que tu utilises un seul
compilateur sur un seul OS, ça peut marcher, mais même ça n'est pas
garanti -- sauf peut-être par le compilateur en question, mais en tout
cas pas par la norme.

[**] Si tu ne sais pas ce qu'est un POD :
<http://www.google.com/groups?as_q=pod&safe=images&ie=UTF-8&as_ugroup=fr.comp.lang.c%2b%2b&lr=&hl=en>

--
Wink
FLL, Epagneul Breton

Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Tue Jun 08, 2004 8:44 am    Post subject: Re: Serialisation Reply with quote



Fabien LE LEZ <gramster (AT) gramster (DOT) com> wrote


[...]
Quote:
Si jamais tu emploies la "méthode C", i.e. enregistrer les octets tels
qu'ils sont dans la RAM, ça ne marchera pas.

Ce n'est pas le méthode C. En fait, en C, on faisait exactement comme on
fait en C++. À l'exception près que c'était dans une fonction globale,
et non une fonction membre.

La méthode, quelque soit le langage en question, est toujours de définir
la sérialisation sur un nombre de types élémentaire (char, long,
unsigned long, double, std::string, par exemple), puis de définir la
sérialisation des types plus compliqués par une application récursives
jusqu'à ce qu'on arrive à un des types primitifs ou un type qui peut se
convertir en un des types primitifs.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

Back to top
Loïc Joly
Guest





PostPosted: Tue Jun 08, 2004 8:30 pm    Post subject: Re: Serialisation Reply with quote

[email]kanze (AT) gabi-soft (DOT) fr[/email] wrote:

Quote:
La méthode, quelque soit le langage en question, est toujours de définir
la sérialisation sur un nombre de types élémentaire (char, long,
unsigned long, double, std::string, par exemple), puis de définir la
sérialisation des types plus compliqués par une application récursives
jusqu'à ce qu'on arrive à un des types primitifs ou un type qui peut se
convertir en un des types primitifs.

On peut voir en particulier boost::serialization, qui pour les cas
complexes permet de définir tout ça assez simplement.

Il existe aussi des langages proposant une sérialisation par défaut d'un
type, grace en général à un mécanisme d'introspection. Ce n'est pas le
cas du C++.

--
Loïc

Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Wed Jun 09, 2004 6:47 am    Post subject: Re: Serialisation Reply with quote

Loïc Joly <loic.actarus.joly (AT) wanadoo (DOT) fr> wrote

Quote:
kanze (AT) gabi-soft (DOT) fr wrote:

La méthode, quelque soit le langage en question, est toujours de
définir la sérialisation sur un nombre de types élémentaire (char,
long, unsigned long, double, std::string, par exemple), puis de
définir la sérialisation des types plus compliqués par une
application récursives jusqu'à ce qu'on arrive à un des types
primitifs ou un type qui peut se convertir en un des types
primitifs.

On peut voir en particulier boost::serialization, qui pour les cas
complexes permet de définir tout ça assez simplement.

Il existe aussi des langages proposant une sérialisation par défaut
d'un type, grace en général à un mécanisme d'introspection. Ce n'est
pas le cas du C++.

Dans la pratique, faire une sérialisation convénable sans l'intervention
du programmeur me semble pas trop faisable. L'introspecition peut y
aider, mais il y a toujours des questions dont le programmeur est le
seul à avoir la réponse. Par exemple, si mon objet contient (au niveau
fondamental du C++) un T*, est que l'objet qu'il désigne fait partie de
mon objet ou non ? Voire même, dans le cas de std::string ou de
std::vector, est-ce que la capacité fait partie de ce qu'on sérialise ou
non ?

Note aussi qu'on pourrait avoir des réponses différentes selon que la
sérialisation sert à la persistence ou pour transmettre l'objet à un
autre processus ou machine. La solution Java, où on marque certains
éléments comme « transient » a donc ses limites, et n'est pas une
solution adéquate non plus.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.