En estos dos ejemplos que hacen lo mismo, tenemos un formulario como este:
En estos ejemplo, añadimos un nombre al trabajador y su salario.Estos datos
son pasados a la lista en la que se la asigna un código para que podamos trabajar
con la colección.
Tendremos:
- La clase empleado
- La clase miniEmpresa
- El formulario
Básicamente como programadores vemos como nuestra aplicación va mejorando.
Estos ejemplos vuelven a ser convertidos y cambiados de VB en el cual trata un poco la POO para que
podamos verlos en gambas, los he cambiado y traídos a la comunidad.
Como los nombres de los ejemplos dicen tenemos:
- La casa de paja
- La casa de madera.
Falta la casa de ladrillos en que la se supone que usa propiedades (property)
En estas dos aplicaciones observamos como va cambiando el uso de propiedades publicas a privadas.
Lo que significa un mejor código, mas seguro, menos propenso a errores, los cambios que nos origina
hacerlo, como va cambiando la distribución del código en el que la casa de paja, usa casi todo el manejo
de la aplicación en el formulario y en la casa de madera vamos viendo como desaparece gran parte
de este código y queda en las clases.
Con ciertas clases no necesitamos modificarlas para trabajar con ellas y solo dependemos de algunos
cambios en otras.
La Casa de Paja:
La clase Empleado es común a los dos ejemplos. No se ha modificado.
La clase MiniEmpresa apenas es nada en "La casa de Paja".
Public Empleados As New Collection
Y depende de todo lo que hace el formulario:
'En este ejemplo vamos a crear una coleccion Publica
Public empresa As New MiniEmpresa
Static Public iNumEmpleado As Integer
Public Sub _new()
End
Public Sub Form_Open()
Me.Caption = "Coleccion de Empleados"
End
Public Sub btnAnadeEmpleado_Click()
Dim nuevoEmpleado As New Empleado
'El uso de with hace que el código sea mas rápido
'y conciso (.muestraid en vez de poner nuevoEmpleado.muestraid)
With nuevoEmpleado
iNumEmpleado += 1
.muestraid = "E" & Format(iNumEmpleado, "00000")
.Nombre = txtNombre.Text
.Salario = CFloat(txtSalario.Text)
empresa.Empleados.Add(nuevoEmpleado, .muestraid)
End With
txtNombre.Text = ""
txtSalario.Text = ""
btnListaEmpleados.Value = True
End
Public Sub btnListaEmpleados_Click()
Dim emp As New Empleado
lstEmpleados.Clear
For Each emp In empresa.Empleados
lstEmpleados.Add(emp.muestraid & ", " & emp.Nombre & ", " & emp.Salario)
Next
End
Public Sub btnQuitar_Click()
Me.Close
End
Public Sub btnBorraEmpleado_Click()
'Comprueba que hay un empleado seleccionado
If lstEmpleados.Index > -1 Then
'Los seis primeros caracteres son el id.
empresa.Empleados.Remove(Left(lstEmpleados.Text, 6))
Endif
'Hace click en el boton de actualizar lista
btnListaEmpleados.Value = True
End
Public empresa As New MiniEmpresa
Static Public iNumEmpleado As Integer
Public Sub _new()
End
Public Sub Form_Open()
Me.Caption = "Coleccion de Empleados"
End
Public Sub btnAnadeEmpleado_Click()
Dim nuevoEmpleado As New Empleado
'El uso de with hace que el código sea mas rápido
'y conciso (.muestraid en vez de poner nuevoEmpleado.muestraid)
With nuevoEmpleado
iNumEmpleado += 1
.muestraid = "E" & Format(iNumEmpleado, "00000")
.Nombre = txtNombre.Text
.Salario = CFloat(txtSalario.Text)
empresa.Empleados.Add(nuevoEmpleado, .muestraid)
End With
txtNombre.Text = ""
txtSalario.Text = ""
btnListaEmpleados.Value = True
End
Public Sub btnListaEmpleados_Click()
Dim emp As New Empleado
lstEmpleados.Clear
For Each emp In empresa.Empleados
lstEmpleados.Add(emp.muestraid & ", " & emp.Nombre & ", " & emp.Salario)
Next
End
Public Sub btnQuitar_Click()
Me.Close
End
Public Sub btnBorraEmpleado_Click()
'Comprueba que hay un empleado seleccionado
If lstEmpleados.Index > -1 Then
'Los seis primeros caracteres son el id.
empresa.Empleados.Remove(Left(lstEmpleados.Text, 6))
Endif
'Hace click en el boton de actualizar lista
btnListaEmpleados.Value = True
End
Ahora vayamos al ejemplo de la casa de madera.
Vemos la clase MiniEmpresa que ha cambiado.
'Propiedades
Private Empleados As New Collection
Static Private inumEmpleado As Integer
'Metodos
Public Function AgregarEmpleado(Nombre As String, Salario As Float) As Empleado
Dim nuevoEmpleado As New Empleado
With nuevoEmpleado
inumEmpleado += 1
.muestraid = "E" & Format$(inumEmpleado, "00000")
.Nombre = Nombre
.Salario = Salario
'Agrega la referencia del objeto Empleado a la
'coleccion, con la propiedad muestraid como clave
Empleados.Add(nuevoEmpleado, .muestraid)
End With
'Devuelve una referencia al nuevo objeto Empleado
Return nuevoEmpleado
End
Public Function ContarEmpleados() As Integer
Return Empleados.Count
End
Public Sub EliminarEmpleados(Indice As String)
Empleados.Remove(Indice)
End
Public Function Trabajador(Indice As String) As Empleado
Return Empleados[Indice]
End
Public Sub Problema()
Dim x As New Empleado
Empleados.Add(x)
End
Public Function MostrarEmpleados() As Collection
Return Empleados
End
Private Empleados As New Collection
Static Private inumEmpleado As Integer
'Metodos
Public Function AgregarEmpleado(Nombre As String, Salario As Float) As Empleado
Dim nuevoEmpleado As New Empleado
With nuevoEmpleado
inumEmpleado += 1
.muestraid = "E" & Format$(inumEmpleado, "00000")
.Nombre = Nombre
.Salario = Salario
'Agrega la referencia del objeto Empleado a la
'coleccion, con la propiedad muestraid como clave
Empleados.Add(nuevoEmpleado, .muestraid)
End With
'Devuelve una referencia al nuevo objeto Empleado
Return nuevoEmpleado
End
Public Function ContarEmpleados() As Integer
Return Empleados.Count
End
Public Sub EliminarEmpleados(Indice As String)
Empleados.Remove(Indice)
End
Public Function Trabajador(Indice As String) As Empleado
Return Empleados[Indice]
End
Public Sub Problema()
Dim x As New Empleado
Empleados.Add(x)
End
Public Function MostrarEmpleados() As Collection
Return Empleados
End
Y su formulario, observamos que hemos quitado bastante código de este para
que quede en la clase MiniEmpresa.
'Ejemplo de coleccion privada
Private empresa As New MiniEmpresa
Public Sub _new()
End
Public Sub Form_Open()
Me.Caption = "Coleccion de Empleados"
End
Public Sub btnAnadeEmpleado_Click()
Dim nuevoempleado As Empleado
nuevoempleado = empresa.AgregarEmpleado(txtNombre.Text, txtSalario.Text)
txtNombre.Text = ""
txtSalario.Text = ""
With nuevoempleado
lstEmpleados.Add(.muestraid & ", " & .Nombre & ", " & .Salario)
End With
End
Public Sub btnListaEmpleados_Click()
Dim unempleado As Empleado
lstEmpleados.Clear
For Each unempleado In empresa.MostrarEmpleados()
With unempleado
lstEmpleados.Add(.muestraid & ", " & .Nombre & ", " & .Salario)
End With
Next
End
Public Sub btnQuitar_Click()
Me.Close
End
Public Sub btnBorraEmpleado_Click()
'Verifica si hay un empleado seleccionado
If lstEmpleados.Index > -1 Then
'Los seis primeros caracteres son el id
empresa.EliminarEmpleados(Left(lstEmpleados.Current.Text, 6))
lstEmpleados.Remove(lstEmpleados.Index)
Endif
btnListaEmpleados.Value = True
End
Private empresa As New MiniEmpresa
Public Sub _new()
End
Public Sub Form_Open()
Me.Caption = "Coleccion de Empleados"
End
Public Sub btnAnadeEmpleado_Click()
Dim nuevoempleado As Empleado
nuevoempleado = empresa.AgregarEmpleado(txtNombre.Text, txtSalario.Text)
txtNombre.Text = ""
txtSalario.Text = ""
With nuevoempleado
lstEmpleados.Add(.muestraid & ", " & .Nombre & ", " & .Salario)
End With
End
Public Sub btnListaEmpleados_Click()
Dim unempleado As Empleado
lstEmpleados.Clear
For Each unempleado In empresa.MostrarEmpleados()
With unempleado
lstEmpleados.Add(.muestraid & ", " & .Nombre & ", " & .Salario)
End With
Next
End
Public Sub btnQuitar_Click()
Me.Close
End
Public Sub btnBorraEmpleado_Click()
'Verifica si hay un empleado seleccionado
If lstEmpleados.Index > -1 Then
'Los seis primeros caracteres son el id
empresa.EliminarEmpleados(Left(lstEmpleados.Current.Text, 6))
lstEmpleados.Remove(lstEmpleados.Index)
Endif
btnListaEmpleados.Value = True
End
Para verlo mejor, aquí tenéis el código de los dos ejemplos:
Saludos
LaCasaDePaja.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | LaCasaDePaja.tar.gz | |
Tamaño: | 7 KB | |
Descargado: | 57 veces |
LaCasaDePaja.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | LaCasaDePaja.tar.gz | |
Tamaño: | 7 KB | |
Descargado: | 57 veces |
LaCasaDePaja.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | LaCasaDePaja.tar.gz | |
Tamaño: | 7 KB | |
Descargado: | 57 veces |