Programacin Orientada A Objetos I Gua Prctica N 09 COMPETENCIAS:
- El alumno crear aplicaciones para serializar y deserializar informacin contenida en una cadena, una coleccin o almacenada en un archivo secuencial, almacenndola en un archivo binario o XML. - Propone una solucin alterna a la solucin presentada por el docente
CASO 1: Serializacin de Cadena
Implemente una aplicacin que permita ingresar una cadena de texto y permita almacenarlo en un archivo binario, para luego aplicarle la deserializacin del mismo.
Tener en cuenta:
- Deber almacenar en un archivo binario un determinado texto que se ingrese en un Cuadro de texto usando un botn de comando llamado Serializar. - Deber implementar un botn de limpieza para poder limpiar el cuadro de texto. - Deber seleccionar un archivo binario previamente registrado y devolver el contenido en un cuadro de texto.
GUI Propuesta:
Script de los botones: Imports System.IO Imports System.Runtime.Serialization.Formatters.Binary Public Class frmSerializar Programacin Orientada a Objetos I
Elaborado por: Equipo de Docentes
Private Sub btnSerializar_Click() Handles btnSerializar.Click Dim sv As New SaveFileDialog sv.Filter = "Archivo binario|*.bin"
If sv.ShowDialog = Windows.Forms.DialogResult.OK Then Dim f As New FileStream(sv.FileName, FileMode.Create)
Dim bf As New BinaryFormatter bf.Serialize(f, txtCadena.Text)
f.Close() End If End Sub
Private Sub btnDeserializar_Click() Handles btnDeserializar.Click Dim op As New OpenFileDialog op.Filter = "Archivo Binario|*.bin"
If op.ShowDialog = Windows.Forms.DialogResult.OK Then Dim f As New FileStream(op.FileName, FileMode.Open)
Dim bf As New BinaryFormatter Me.txtCadena.Text = CType(bf.Deserialize(f), String)
f.Close() End If End Sub
Private Sub btnLimpiar_Click() Handles btnLimpiar.Click txtCadena.Clear() End Sub End Class
Programacin Orientada a Objetos I
Elaborado por: Equipo de Docentes
CASO 2: Serializacion XML
Implemente una aplicacin que permita registrar un empleado en un archivo XML.
Tener en cuenta:
- Defina una clase para registrar los datos del empleado. - Disee un formulario para ingresar los datos del empleado. - Programe el evento serializar el registro del alumno en un archivo XML y programe el evento para deserializar el archivo XML visualizando los datos del empleado.
GUI Propuesta
Script de la clase Empleado:
Public Class Empleado Private _nombres As String Private _direccion As String Private _telefono As String Private _correo As String Private _fecha As Date
Public Property nombres As String Get Return _nombres End Get Set(value As String) _nombres = value End Set End Property
Public Property direccion As String Get Programacin Orientada a Objetos I
Elaborado por: Equipo de Docentes
Return _direccion End Get Set(value As String) _direccion = value End Set End Property
Public Property telefono As String Get Return _telefono End Get Set(value As String) _telefono = value End Set End Property
Public Property correo As String Get Return _correo End Get Set(value As String) _correo = value End Set End Property
Public Property fecha As Date Get Return _fecha End Get Set(value As Date) _fecha = value End Set End Property End Class
Script del Formulario:
Imports System.IO Imports System.Xml.Serialization Public Class frmEmpleado
Private Sub btnRegistrar_Click() Handles btnRegistrar.Click Dim sv As New SaveFileDialog sv.Filter = "Archivo XML(*.xml)|*.xml" If sv.ShowDialog = Windows.Forms.DialogResult.OK Then Dim unEmp As New Empleado unEmp.empleado = txtEmpleado.Text unEmp.direccion = txtDireccion.Text unEmp.fono = txtFono.Text unEmp.correo = txtCorreo.Text unEmp.fecha = CDate(txtFecha.Text)
Dim xml As New FileStream(sv.FileName, FileMode.Create) Programacin Orientada a Objetos I
Elaborado por: Equipo de Docentes
Dim serializa As New XmlSerializer(GetType(Empleado)) serializa.Serialize(xml, unEmp)
xml.Close() End If End Sub
Private Sub btnLeer_Click() Handles btnLeer.Click Dim op As New OpenFileDialog op.Filter = "Archivo XML(*.xml)|*.xml"
If op.ShowDialog = Windows.Forms.DialogResult.OK Then Dim xml As New FileStream(op.FileName, FileMode.Open) Dim serializa As New XmlSerializer(GetType(Empleado))
Private Sub btnLimpiar_Click() Handles btnLimpiar.Click For Each c As Control In Me.Controls If (TypeOf c Is TextBox) Then c.Text = "" txtEmpleado.Focus() End If Next End Sub End Class
Programacin Orientada a Objetos I
Elaborado por: Equipo de Docentes
CASO 3: Serializacion XML con Arraylist
Crear una aplicacin que permita serializar los registros de los Empleados que estarn almacenados en una coleccin dentro de un archivo XML.
Tener en cuenta:
- Defina una clase para registrar los datos del Empleado - Defina una coleccin de tipo ArrayList - Disea un Formulario para ingresar los datos del Empleado - Programar los siguientes procesos: o Agregar un Empleado a la coleccin o Quitar un empleado desde la coleccin al seleccionarlo desde el ListView. o Serializar la coleccin de los registros del empleado en un archivo XML.
GUI Propuesta
Script de la clase Empleado:
Public Class Empleado Private _nombres As String Private _direccion As String Private _telefono As String Private _correo As String Private _fecha As Date
Public Property nombres As String Programacin Orientada a Objetos I
Elaborado por: Equipo de Docentes
Get Return _nombres End Get Set(value As String) _nombres = value End Set End Property
Public Property direccion As String Get Return _direccion End Get Set(value As String) _direccion = value End Set End Property
Public Property telefono As String Get Return _telefono End Get Set(value As String) _telefono = value End Set End Property
Public Property correo As String Get Return _correo End Get Set(value As String) _correo = value End Set End Property
Public Property fecha As Date Get Return _fecha End Get Set(value As Date) _fecha = value End Set End Property End Class
Script de la clase Listado:
Imports System.Xml.Serialization Public Class Listado <XmlArrayItem(GetType(Empleado))> Public aEmpleados As New ArrayList End Class
Programacin Orientada a Objetos I
Elaborado por: Equipo de Docentes
Script del formulario:
Imports System.IO Imports System.Xml.Serialization Public Class frmRegistroEmpleados
Private listaEmpleado As New Listado
Private Sub frmRegistroEmpleados_Load() Handles MyBase.Load Call formatoLista() End Sub
Sub Listar() lvEmpleados.Items.Clear()
For Each unEmp As Empleado In listaEmpleado.lista Dim item As New ListViewItem(unEmp.nombres) item.SubItems.Add(unEmp.direccion) item.SubItems.Add(unEmp.telefono) item.SubItems.Add(unEmp.correo) item.SubItems.Add(unEmp.fecha) lvEmpleados.Items.Add(item) Next End Sub
Private Sub btnAgregar_Click() Handles btnAgregar.Click Dim unEmp As New Empleado unEmp.empleado = txtEmpleado.Text unEmp.direccion = txtDireccion.Text unEmp.fono = txtFono.Text unEmp.correo = txtCorreo.Text unEmp.fecha = CDate(txtFecha.Text)
listaEmpleado.lista.Add(unEmp) Listar() End Sub
Private Sub btnEliminar_Click() Handles btnEliminar.Click If lvEmpleados.SelectedIndices.Count = 0 Then MsgBox("Debe seleccionar una Empleado") Else listaEmpleado.lista.RemoveAt(lvEmpleados.SelectedIndices(0)) Listar() End If End Sub
Private Sub btnGrabar_Click() Handles btnGrabar.Click Dim sv As New SaveFileDialog sv.Filter = "Archivo XML(*.xml)|*.xml"
If sv.ShowDialog = Windows.Forms.DialogResult.OK Then Programacin Orientada a Objetos I
Elaborado por: Equipo de Docentes
Dim xml As New FileStream(sv.FileName, FileMode.Create)
Dim serializa As New XmlSerializer(GetType(Listado))
serializa.Serialize(xml, listaEmpleado)
xml.Close() End If End Sub
Sub FormatoLista() lvEmpleados.GridLines = True lvEmpleados.View = View.Details lvEmpleados.Columns.Add("Empleado") lvEmpleados.Columns.Add("Direccin") lvEmpleados.Columns.Add("Telfono") lvEmpleados.Columns.Add("Correo Electrnico") lvEmpleados.Columns.Add("Fecha de Registro") End Sub End Class
CASO 4: XML a ListView
Implemente una aplicacin que permita mostrar el contenido del archivo misContactos.xml, los datos obtenidos debern ser mostrados en una lista.
Tener en cuenta:
- Se deber contar con un archivo XML con mas de dos registros. - Cargar los registros del XML al cuadro de lista mediante el botn CARGAR XML.
GUI Propuesta
Script solucionado:
Imports System.IO Imports System.Xml.Serialization Imports System.Xml Public Class frmListado Programacin Orientada a Objetos I
Elaborado por: Equipo de Docentes
Sub configuraLista() lvContactos.GridLines = True lvContactos.View = View.Details lvContactos.Columns.Add("NOMBRES", 100) lvContactos.Columns.Add("APELLIDOS", 100) lvContactos.Columns.Add("TELEFONO", 90) lvContactos.Columns.Add("CORREO", 100) lvContactos.Columns.Add("FECHA NAC.", 90) End Sub
Private Sub frmListado_Load() Handles MyBase.Load Call configuraLista() End Sub
Private Sub btnCargar_Click() Handles btnCargar.Click Try lvContactos.Items.Clear() Dim opcionA As New OpenFileDialog opcionA.Filter = "Archivoc XML|*.xml"
If opcionA.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim XMLDoc As New Xml.XmlDocument XMLDoc.Load(opcionA.FileName) For Each node As Xml.XmlNode In XMLDoc.SelectNodes("misContactos/lista/Contacto") Dim lvItem As ListViewItem lvItem = lvContactos.Items. Add(node.Item("nombres").InnerText) lvItem.SubItems.Add(node.Item("apellidos").InnerText) lvItem.SubItems.Add(node.Item("telefono").InnerText) lvItem.SubItems.Add(node.Item("correo").InnerText) lvItem.SubItems.Add(node.Item("fecnac").InnerText) Next End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub End Class