Вы находитесь на странице: 1из 10

Programacin Orientada a Objetos I

Elaborado por: Equipo de Docentes




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))

'Deserializar
Dim unEmp As Empleado = serializa.Deserialize(xml)
txtEmpleado.Text = unEmp.empleado
txtDireccion.Text = unEmp.direccion
txtFono.Text = unEmp.fono
txtCorreo.Text = unEmp.correo
txtFecha.Text = unEmp.fecha

xml.Close()
End If
End Sub

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

Вам также может понравиться