Anda di halaman 1dari 13

Programacin orientada a objetos en C# .

NET

CAPTULO 9
SERIALIZACIN
(ALMACENAMIENTO DE OBJETOS EN ARCHIVOS)

Ing. Bruno Lpez Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas

Programacin orientada a objetos en C# .NET

Serializacin
Es el proceso para almacenar un
objeto en un dispositivo de
almacenamiento secundario.
Almacenar un objeto en un archivo
en el disco duro, memoria USB, CD,
etc.
3

Para qu sirve la serializacin?


Para transformar los datos y poder
transferirlos por un canal de
comunicacin (internet, archivo,
memoria, etc.)
Para compartir informacin de un
sistema en otra aplicacin.
4

Ing. Bruno Lpez Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas

Programacin orientada a objetos en C# .NET

Tipos de serializacin en el
Framework .NET
Binario

Tipos de
serializacin

SOAP
XML

Cmo preparar una clase para


serializar sus objetos?
Durante la serializacin, los atributos,
nombre de la clase y su ensamblado se
convierten en una secuencia de bytes.
Para serializar un objeto, su clase debe
declararse como [Serializable]

Ing. Bruno Lpez Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas

Programacin orientada a objetos en C# .NET

Ejemplo en UML

Ejemplo codificado en C#
[Serializable]
class Empleado
{
// Atributos privados

// Propiedades pblicas

}
8

Ing. Bruno Lpez Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas

Programacin orientada a objetos en C# .NET

Espacios de nombres requeridos


using System.IO; // Para el uso
de archivos
using
System.Runtime.Serialization.For
matters.Binary; // Para el uso
de la serializacin
9

Crear un archivo
Para grabar datos en un archivo, primero debe
crearse mediante:
// Declaracin del flujo del
archivo
private System.IO.FileStream flujo;
// Creacin del archivo
flujo = new FileStream(NombreArchivo,
FileMode.Create);
10

Ing. Bruno Lpez Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas

Programacin orientada a objetos en C# .NET

Serializar el archivo creado


Declaracin
del
serializar el archivo

formateador

para

System.Runtime.Serialization.Formatters.Binary.Bina
ryFormatter seriador;
seriador = new BinaryFormatter();

11

Cmo grabar un objeto en el


archivo serializado?
Almacena miObjeto
controlado por flujo

en

el

archivo

seriador.Serialize(flujo, miObjeto);

12

Ing. Bruno Lpez Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas

Programacin orientada a objetos en C# .NET

Cerrar el archivo
Una vez usado el archivo, entonces debe
cerrarse mediante:
if (flujo != null)
flujo.Close();

13

Abrir un archivo en modo lectura


Para leer datos de un archivo, primero debe
abrirse mediante:
// Declaracin del flujo del
archivo
private System.IO.FileStream flujo;
// Apertura del archivo
flujo = new FileStream(NombreArchivo,
FileMode.Open);
14

Ing. Bruno Lpez Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas

Programacin orientada a objetos en C# .NET

Serializar el archivo abierto en modo


lectura
Declaracin
del
serializar el archivo

formateador

para

System.Runtime.Serialization.Formatters.Binary.Bina
ryFormatter seriador;
seriador = new BinaryFormatter();

15

Cmo leer un objeto del archivo


serializado?
A este proceso se le conoce como
deserializacin.
Lee miObjeto del archivo controlado por
flujo
miObjeto =
seriador.Deserialize(flujo);
16

Ing. Bruno Lpez Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas

Programacin orientada a objetos en C# .NET

Modos de apertura de archivos


(FileMode)
FileMode

Uso

CreateNew

Crea un nuevo archivo. Si el archivo existe dispara una


IOException

Truncate

Abrir un archivo existente. Una vez abierto, el archivo


ser truncado a cero bytes de longitud.

Create

Crea un nuevo archivo. Si el archivo existe ser


sobreescrito.

Open

Abrir un archivo existente. Si no existe dispara una


FileNotFoundException.

OpenOrCreate Abrir un archivo existente, si no existe, lo crea.


Append

Abrir un archivo para agregar datos al final en caso de


existir; de lo contrario crea un archivo nuevo.
17

Modos de acceso de archivos


(FileAccess)
FileAccess
Read
ReadWrite
Write

Uso
Acceso al archivo en modo de solo lectura
Acceso al archivo en modo de lectura y
escritura
Acceso al archivo en modo de solo escritura

18

Ing. Bruno Lpez Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas

Programacin orientada a objetos en C# .NET

Cmo detectar si existe un


archivo?
if (File.Exists(NombreArchivo))
{

19

Diseo de una clase para el


manejo de un archivo serializable

20

Ing. Bruno Lpez Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas

10

Programacin orientada a objetos en C# .NET

Desplazamiento del apuntador


interno en un archivo secuencial
Cuando se lee un registro completo, el
apuntador interno del archivo se
posiciona al inicio del siguiente registro.
Por lo tanto, debe ponerse especial
atencin a la posicin del apuntador
interno antes de realizar una operacin
en el archivo.
21

Ejemplo: Modificar el primer


registro
Al leer el primer
registro,
automticamente
se posiciona en el
segundo registro
Modificar los datos
de Pepe por los
de Pancho
22

Ing. Bruno Lpez Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas

11

Programacin orientada a objetos en C# .NET

Error comn al modificar un


registro
Si no se reposiciona
el
apuntador
interno,
entonces
ocurre un error
Permanecen
los
datos de Pepe
Se empalman los
datos de Pancho
en el registro de
Bruno
23

NOTA IMPORTANTE
Se debe reposicionar el apuntador
interno del archivo antes de escribir
un registro modificado

24

Ing. Bruno Lpez Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas

12

Programacin orientada a objetos en C# .NET

Cmo reposicionar el apuntador


interno del archivo?
public void ModificarObjeto(Tipo miObjeto)
{
// Reposiciona el apuntador del archivo al
// inicio del registro
flujo.Seek(PosicionAnterior, SeekOrigin.Begin);
// Graba el objeto
this.GrabarObjeto(miObjeto);
}

25

Otros ttulos del autor


http://www.itnuevolaredo.edu.mx/Takeyas/Libro

takeyas@itnuevolaredo.edu.mx

Ing. Bruno Lpez Takeyas, M.C.


http://www.itnuevolaredo.edu.mx/Takeyas

Bruno Lpez Takeyas

13

Anda mungkin juga menyukai