Ejemplo De Clase Publica Y Clase Privada


Objetivo: Ejemplo De Clase Publica Y Clase Privada
Hola de nuevo!.

En estos dos ejemplos que hacen lo mismo, tenemos un formulario como este:

colecciones

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.

Public Nombre As String
Public Salario As Float
Private id As String

Property muestraid As String


Private Function muestraid_Read() As String
Return id
End

Private Sub muestraid_Write(Value As String)
id = Value
End


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


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


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


Para verlo mejor, aquí tenéis el código de los dos ejemplos:

Saludos

Objetivo: Re: Ejemplo De Clase Publica Y Clase Privada
Y el ejemplo que faltaba.

La casa de madera:

Saludos

Objetivo: Re: Ejemplo De Clase Publica Y Clase Privada
Shell +1

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
No puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.1674s (PHP: 63% SQL: 37%)
Consultas SQL: 19 - Debug off - GZIP Activado