PDF de programación - 09b.-Serialización - Programación Orientada a Objetos en C#

Imágen de pdf 09b.-Serialización - Programación Orientada a Objetos en C#

09b.-Serialización - Programación Orientada a Objetos en C#gráfica de visualizaciones

Publicado el 17 de Febrero del 2019
594 visualizaciones desde el 17 de Febrero del 2019
536,3 KB
18 paginas
Creado hace 1a (15/08/2018)
Programación Orientada a Objetos en C# .NET

CAPÍTULO 9

SERIALIZACIÓN

(ALMACENAMIENTO DE OBJETOS EN ARCHIVOS)

2

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

1

Programación Orientada a Objetos en C# .NET

Preguntas detonadoras

¿Qué es y para qué sirve la serialización?
¿Se pueden almacenar objetos en un archivo?

¿Cómo?

Serialización

Es el proceso para almacenar un
de

objeto
almacenamiento secundario.

dispositivo

en

un

Almacenar un objeto en un archivo
en el disco duro, memoria USB, CD,
etc.

3

4

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

2

Programación Orientada a Objetos en C# .NET

¿Para qué sirve la serialización?

Para transformar los datos y poder
de
archivo,

(internet,

canal

por

un

transferirlos
comunicación
memoria, etc.)

Para compartir información de un

sistema en otra aplicación.

Tipos de serialización en el
Framework .NET

Tipos de

serialización

• Binario

• SOAP

• XML

5

6

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

3

Programación Orientada a Objetos en C# .NET

¿Cómo preparar una clase para
serializar sus objetos?

Durante la serialización,

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]

Ejemplo en UML

7

8

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

4

Programación Orientada a Objetos en C# .NET

Ejemplo codificado en C#

[Serializable]

class Empleado
{

// Atributos privados


// Propiedades públicas


}

9

Espacios de nombres requeridos

using System.IO; // Para el uso
de archivos

using
System.Runtime.Serialization.For
matters.Binary; // Para el uso
de la serialización

10

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

5

Programación Orientada a Objetos en C# .NET

Crear un archivo
Para grabar datos en un archivo, primero debe

crearse mediante:

Declaración

//
archivo
private System.IO.FileStream flujo;

del

flujo

del

// Creación del archivo
flujo = new FileStream(NombreArchivo,
FileMode.Create);

11

Serializar el archivo creado

Declaración

del
serializar el archivo

formateador

para

System.Runtime.Serialization.Formatters.Binary.Bina
ryFormatter seriador;

seriador = new BinaryFormatter();

12

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

6

Programación Orientada a Objetos en C# .NET

¿Cómo grabar un objeto en el
archivo serializado?

Almacena miObjeto en el

archivo

controlado por flujo

seriador.Serialize(flujo, miObjeto);

13

Cerrar el archivo

Una vez usado el archivo, entonces debe

cerrarse mediante:

if (flujo != null)

flujo.Close();

14

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

7

Programación Orientada a Objetos en C# .NET

Abrir un archivo en modo lectura
Para leer datos de un archivo, primero debe

abrirse mediante:

Declaración

//
archivo
private System.IO.FileStream flujo;

del

flujo

del

// Apertura del archivo
flujo = new FileStream(NombreArchivo,
FileMode.Open);

15

Serializar el archivo abierto en modo
lectura

Declaración

del
serializar el archivo

formateador

para

System.Runtime.Serialization.Formatters.Binary.Bina
ryFormatter seriador;

seriador = new BinaryFormatter();

16

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

8

Programación Orientada a Objetos en C# .NET

¿Cómo leer un objeto del archivo
serializado?

A este proceso se le conoce como

deserialización.

Lee miObjeto del archivo controlado por

flujo

miObjeto =
seriador.Deserialize(flujo);

17

Prototipar al leer un objeto

Al leer datos del archivo, debe indicarse el

tipo de dato

A este proceso se le conoce como

prototipar

miEmpleado = (Empleado)
seriador.Deserialize(flujo);

18

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

9

Programación Orientada a Objetos en C# .NET

Modos de apertura de archivos
(FileMode)

FileMode

Uso

CreateNew

Truncate

Create

Open

Crea un nuevo archivo. Si el archivo existe dispara una
IOException

Abrir un archivo existente. Una vez abierto, el archivo
será truncado a cero bytes de longitud.

Crea un nuevo archivo. Si el archivo existe será
sobreescrito.

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.

Modos de acceso de archivos
(FileAccess)

FileAccess

Uso

Read
ReadWrite Acceso al archivo en modo de lectura y

Acceso al archivo en modo de solo lectura

Write

escritura
Acceso al archivo en modo de solo escritura

19

20

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

10

Programación Orientada a Objetos en C# .NET

¿Cómo detectar si existe un
archivo?

if (File.Exists(NombreArchivo))

{

……

}

21

Diseño de una clase para el
manejo de un archivo serializable

22

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

11

Programación Orientada a Objetos en C# .NET

Constructor

ArchivoSecuencialSerializadoBinario.ArchivoSecuencialSerializadoBinario(string strNombreArchivo)

NombreArchivo = strNombreArchivo

return

23

Destructor

ArchivoSecuencialSerializadoBinario. ~ArchivoSecuencialSerializadoBinario()

this.Cerrar()

return

24

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

12

Programación Orientada a Objetos en C# .NET

Método para crear el archivo

ArchivoSecuencialSerializadoBinario.Crear() : void

flujo = new FileStream(NombreArchivo, FileMode.Create)

seriador = new BinaryFormatter()

return

25

Método para abrir el archivo en
modo escritura

ArchivoSecuencialSerializadoBinario.AbrirEnModoEscritura() : void

FILE.Exists(NombreArchivo)

yes

flujo = new FileStream(NombreArchivo, FileMode.Append)

no

this.Crear()

return

seriador = new BinaryFormatter()

26

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

13

Programación Orientada a Objetos en C# .NET

Método para abrir el archivo en
modo lectura

ArchivoSecuencialSerializadoBinario.AbrirEnModoLectura() : void

FILE.Exists(NombreArchivo)

yes

flujo = new FileStream(NombreArchivo, FileMode.Open)

no

throw new Exception("No existe el archivo "+NombreArchivo)

seriador = new BinaryFormatter()

return

27

Método para abrir el archivo en
modo lectura y escritura

ArchivoSecuencialSerializadoBinario.AbrirEnModoLecturaYEscritura() : void

FILE.Exists(NombreArchivo)

yes

flujo = new FileStream(NombreArchivo, FileMode.Open, FileAccess.ReadWrite)

no

this.Crear()

seriador = new BinaryFormatter()

return

28

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

14

Programación Orientada a Objetos en C# .NET

Método para grabar un objeto en
el archivo

ArchivoSecuencialSerializadoBinario.GrabarObjeto(Tipo miObjeto) : void

seriador.Serialize(flujo, miObjeto)

return

Método para leer un objeto del
archivo

ArchivoSecuencialSerializadoBinario.LeerObjeto() : Tipo

Declarar miObjeto como Tipo

miObjeto = (Tipo) seriador.Deserialize(flujo)

return( miObjeto )

29

30

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

15

Programación Orientada a Objetos en C# .NET

Método para cerrar el archivo

ArchivoSecuencialSerializadoBinario.Cerrar() : void

flujo != null

yes

flujo.Close()

no

return

31

Declaración y creación del objeto
global para controlar el archivo

// Declaración y creación global de un objeto para el archivo

ArchivoSecuencialSerializadoBinario<Empleado> miArchivo

= new ArchivoSecuencialSerializadoBinario<Empleado>

("c:\\Datos\\Empleados.dat");

32

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

16

Programación Orientada a Objetos en C# .NET

private void btnAgregar_Click(object sender, EventArgs e)
{

¿Cómo grabar el objeto
miEmpleado en miArchivo?

// Declaración y creación de un objeto local para almacenar los datos del empleado
Empleado miEmpleado = new Empleado();

try
{

miEmpleado.Numero=int.Parse(txtNumero.Text);
miEmpleado.Nombre = txtNombre.Text;
miEmpleado.Sueldo = double.Parse(txtSueldo.Text);

}
catch(Exception ex)
{

MessageBox.Show(ex.Message);
return;

}

try
{

// Abrir el archivo para escribir en él
miArchivo.AbrirEnModoEscritura();

// Grabar el objeto
miArchivo.GrabarObjeto(miEmpleado);

MessageBox.Show("Datos almacenados correctamente !!!");

}
catch(Exception ex)
{

MessageBox.Show(ex.Message);

}
finally
{

miArchivo.Cerrar();

}

// Mostrar los datos de los autos en el dataGridView
MostrarDatos();

}

void MostrarDatos()
{

¿Cómo grabar el objeto
miEmpleado en miArchivo?

// Declaración y creación de un objeto local
Empleado miEmpleado = new Empleado();

// Limpia el dataGridView
dgEmpleados.Rows.Clear();

try
{

// Abrir el archivo para leer
miArchivo.AbrirEnModoLectura();

while(true)
{

// Lee un objeto del archivo
miEmpleado = miArchivo.LeerObjeto();

// Muestra los datos del objeto leído en el dataGridView
dgEmpleados.Rows.Add(miEmpleado.Numero.ToString(), miEmpleado.Nombre,

miEmpleado.Sueldo.ToString(“C”));

}

}
catch (Exception ex)
{
}
finally
{

miArchivo.Cerrar();

}

}

33

34

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

17

Programación Orientada a Objetos en C# .NET

Otros títulos del autor

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

bruno.lt@nlaredo.tecnm.mx

Bruno López Takeyas

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

18
  • Links de descarga
http://lwp-l.com/pdf15257

Comentarios de: 09b.-Serialización - Programación Orientada a Objetos en C# (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad