Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Ejemplo De Clase Publica Y Clase Privada
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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

LaCasaDePaja.tar.gz
Descripción:  
Descargar
Nombre del archivo: LaCasaDePaja.tar.gz
Tamaño: 7 KB
Descargado: 54 veces
LaCasaDePaja.tar.gz
Descripción:  
Descargar
Nombre del archivo: LaCasaDePaja.tar.gz
Tamaño: 7 KB
Descargado: 54 veces
LaCasaDePaja.tar.gz
Descripción:  
Descargar
Nombre del archivo: LaCasaDePaja.tar.gz
Tamaño: 7 KB
Descargado: 54 veces

 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ejemplo De Clase Publica Y Clase Privada 
 
Y el ejemplo que faltaba.

La casa de madera:

Saludos

LaCasaDeMadera.tar.gz
Descripción:  
Descargar
Nombre del archivo: LaCasaDeMadera.tar.gz
Tamaño: 7.68 KB
Descargado: 42 veces
LaCasaDeMadera.tar.gz
Descripción:  
Descargar
Nombre del archivo: LaCasaDeMadera.tar.gz
Tamaño: 7.68 KB
Descargado: 42 veces
LaCasaDeMadera.tar.gz
Descripción:  
Descargar
Nombre del archivo: LaCasaDeMadera.tar.gz
Tamaño: 7.68 KB
Descargado: 42 veces

 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ejemplo De Clase Publica Y Clase Privada 
 
Shell +1
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron