SLAM4 TP TD Dev.pmd

Download Report

Transcript SLAM4 TP TD Dev.pmd

SLAM4 - Environnements de Développement
Visual Basic.Net / TP Sérialisation
Sérialisation en VISUAL BASIC . NET
Quand un objet est détruit (fin de programme), les valeurs de ses propriétés sont perdues. Si les valeurs de
l’objet changent et doivent être retrouvées lors d’une utilisation ultérieure du programme, il faut les
enregistrer, pour cela on peut aussi utiliser la sérialisation.
Définitions :
La sérialisation est le processus de conversion d’un objet ou d’un groupe d’objets en séquence linéaire
d’octets pour stockage ou transmission à un autre emplacement. Elle consiste donc à stocker les valeurs des
attributs d’une instance d’un objet dans un fichier qui peut être au format binaire, xml ou Soap.
La désérialisation est le processus consistant à accepter des informations stockées et à recréer des objets
à partir de celles-ci.
EXERCICE N°1 : La sérialisation binaire.
1- Utiliser la classe Compte
2- Pour que la classe soit sérialisable , il faut ajouter
<Serializable()> Public ...
L’attribut Serializable indique donc au compilateur que
tout ce que contient la classe peut être conservé dans
un fichier.
L’attribut NonSerialized peut être utilisé pour marquer les
membres de la classe qui ne doivent pas être conservés.
<NonSerialized()> Public ...
3- Dans les références, ajouter les espaces de noms :
4 - Créer dans un modules un test permettant de vérifier cette sérialisation.
'déclaration d'un fichier
Dim monFichierSerialisation As Stream = File.Create(...
'déclaration du "sérialiseur"
Dim serialiser As New BinaryFormatter()
'sérialisation
serialiser.Serialize(...
'fermeture du ficher
monFichierSerialisation....
S. T. S. - SIO SLAM Deuxième année
TP VB.NET : Sérialisation en VB.NET
page 10
SLAM4 - Environnements de Développement
Visual Basic.Net / TP Sérialisation
5- Vérifier que le fichier "Compte.bin" a bien été crée
6 - Si on clique sur "Désérialiser" on récupère dans le fichier les informations.
'déclaration d'un fichier
Dim monFichier As Stream = File.OpenRead(...
'déclaration du désérialisateur
Dim deserialiser As New BinaryFormatter(...
'désérialisation
Dim result As Compte
result = deserializer.Deserialize(...
Me.numeroCompte = result....
Me.soldeActuel = result....
'fermeture du fichier
monFichierSerialisation....
EXERCICE N°2 : La sérialisation d'une collection.
1- Dans les références, ajouter les espaces de noms :
2 -Utiliser la classe Compte
3 - En faire une collection
Dim unCompte As Compte
Dim mesComptes As New Collection
4 - Ajouter quelques objets dans la collection
5 -Créer une méthode pour sérialiser la collection :
Dim fs As New FileStream(...
Dim formatter As New BinaryFormatter
formatter.Serialize(...
fs.Close()
S. T. S. - SIO SLAM Deuxième année
page 11
SLAM4 - Environnements de Développement
Visual Basic.Net / TP Sérialisation
7 - Créer une méthode pour désérialiser la collection :
Dim fs As New FileStream(...
Dim formatter As New BinaryFormatter
mesComptes = CType(formatter.Deserialize(fs), Collection)
fs.Close()
8 -Créer une méthode pour afficher la collection :
For Each ...
...
Next unSalarie
EXERCICE N°3 : La sérialisation XML.
La sérialisation XML ne sérialise que les champs publics et les valeurs des propriétés d’un objet (si elles ne
sont pas en lecture seule) dans un flux XML. La sérialisation n’inclut pas d’informations de type.
1- Dans les références, ajouter les espaces de noms :
2- Sérialisation XML :
- Ajouter dans votre classe Compte deux méthodes permétant de sérialiser et désérialiser en XML
un objet de la classe compte.
- Vérifier votre fichier XML ainsi crée.
'ouverture d'un fichier en écriture
Dim objStreamWriter As New StreamWriter(...
'création d'un sérialiseur XML
Dim x As New XmlSerializer(unSalarie.GetType)
'on sérialise l'objet
x.Serialize(...
'on ferme le fichier
objStreamWriter....
'ouverture d'un fichier en lecture
Dim objStreamReader As New StreamReader(...
'création d'un sérialiseur XML
Dim x As New XmlSerializer(unSalarie.GetType)
'on désérialise l'objet
unCompte = x.Deserialize(objStreamReader)
'on ferme le fichier
objStreamReader....
S. T. S. - SIO SLAM Deuxième année
page 12
SLAM4 - Environnements de Développement
Visual Basic.Net / TP Sérialisation
EXERCICE N°4 : La sérialisation d'un collection en XML.
1 - Faire une collection générique :
Dim mesComptes As New Collections.Generic.List(Of Compte)
EXERCICE N°5 : La sérialisation d'un collection heterogène en XML.
1 - Faire une collection fortement typée :
Dim mesComptes As New List(Of Compte)
2 - Faire un tableau de type
Dim extraTypes(1) As Type
3 - Qui contient les types compteEpargne et compteCheque
extraTypes(0) = GetType(CompteCheque)
extraTypes(1) = GetType(CompteEpargne)
4 - Utilisation du deuxième constructeur de XmlSerializer a l’aide d’un objet qui etablit une
correspondance entre les types
Dim xs = New XmlSerializer(mesComptes.GetType, extraTypes)
S. T. S. - SIO SLAM Deuxième année
page 13
SLAM4 - Environnements de Développement
Visual Basic.Net / TP Sérialisation
5 - Ajouter des objets (Compte - CompteCheque - CompteEpargne) dans la collection
6 - Sérialiser la collection :
Dim objStreamWriter As New StreamWriter(nomFichier)
xs.Serialize(objStreamWriter, mesComptes)
objStreamWriter.Close()
7 - Désérialiser la collection :
Dim objStreamReader As New StreamReader(nomFichier)
If File.Exists(nomFichier) Then
mesComptes = xs.Deserialize(objStreamReader)
objStreamReader.Close()
End If
S. T. S. - SIO SLAM Deuxième année
page 14