Las Clases.


Una clase es un objeto. En los ejemplos de aplicaciones que se han visto se utilizaron clases, por ejemplo el formulario es un tipo especial de clase, las cajas de texto, los cuadros de lista, etc.
El usuario puede crear sus propias clases u objetos, con métodos, propiedades y funciones utilizando los Módulos de Clase.
Un módulo de clase tiene una ventana donde se escribe el código de la clase, no tiene una interfaz gráfica. En él se definen los métodos, propiedades y funciones de la clase.
Si bien se puede escribir el código directamente, en el menú Herramientas, Procedimiento se encuentra un cuadro de diálogo donde se define el nombre del procedimiento y si será una función, propiedad, método o evento y si será de carácter público o privado. Una vez elegido el nombre, tipo y alcance del procedimiento se hace clic en Aceptar y aparcerá en la ventana de código del módulo de clase el inicio y final del procedimiento; solo hay que agregarle el código y cambiar algunos parámetros (si fuese necesario).
Cuando se define un procedimiento como público o privado se indica si se podrá acceder a él desde fuera de la clase o si será un procedimiento interno, al cual no se accederá desde fuera.

Propiedades.

Las propiedades pueden ser de lectura, escritura o ambas. Una propiedad podrá ser de cualquier tipo (String, Long, Currency, etc.) pero siempre la propiedad de lectura y escritura deberán ser del mismo tipo.
Una propiedad de lectura se define de la siguiente forma:

Public/Private Property Get nombre () as tDato
nombre=sentencias
End Property


Una propiedad de escritura tiene la siguiente forma general:

Public/Private Property Get nombre (ByVal vNewValue as tDato)
sentencias=vNewValue
End Property


Donde vNewValue es el valor que se le dará a la propiedad.

Métodos.

Los métodos son similares a los procedimientos vistos hasta ahora. Se definen como públicos o privados y pueden o no llevar argumentos. La sintaxis de un método es la siguiente:

Public/Private Sub nombre (argumentos)
sentencias
End Sub


Funciones.

Las funciones se crean de la misma forma que las ya vistas y pueden, también, ser públicas o privadas.
Recuérdese que las funciones siempre tienen un valor de retorno a diferencia de los métodos.
Ejemplo

Crea un nuevo proyecto estándar y coloca en él un módulo de clase, cambie su nombre a cPrueba y escriba el siguiente código:

Option Explicit
Dim
valor as Long, x as Byte, y as Byte, t as Byte


Public Property Get numero () as Long
numero=valor
End Property

Public Property Let numero (ByVal vNewValue as Long)
valor=vNewValue
End Property

Private Function reducir(a as String) as Byte
For
x=1 To Len(a)
y=y+Mid(a,x,1)
Next x
If y>9 Then
t=y
reducir=reducir(y)
Else:reducir(y)
End If
End Function


Public Property Get reduccion () as Byte
reduccion=reducir(valor)
End Property


El nombre de la clase que se creó es cPrueba, pero para poder utilizarla se debe crear el objeto de esa clase en la aplicación. Esto se realiza declarando una variable de ese tipo y luego creándola con la instrucción Set . La forma general para declarar un objeto será la siguiente:

Dim var as nClase
Set var=New nClase


Donde var es la variable que identificará al objeto y nClase es el nombre de la clase a la cual pertenece el objeto.
También se podrá utilizar la siguiente sentencia para la creación de un objeto:

Dim var as New nClase

Cada objeto creado e identificado con una variable se dice que es una instancia de la clase a la que pertenece.
Una vez que se creó el objeto se puede acceder a sus propiedades, métodos y funciones declarados como públicos en la clase, de la misma forma como se accede en cualquier objeto.
Luego de que su utilidad terminó puede destruirse el objeto con el fin de liberar memoria mediante la siguiente sentencia:

Set var=Nothing

En el caso de la clase cPrueba hay dos propiedades: la propiedad numero es de lectura y escritura y la propiedad reducción es de solo lectura. La función reducir es privada, por lo tanto es interna de la clase y no será accesible.
Ahora coloca en el formulario los siguientes controles:

Control Propiedad Valor
Label Name lblReduc
TextBox Name txtNum

Escribe el siguiente código en la ventana de código del formulario:

Private Sub Form_Load()
Dim obj as New cPrueba
End Sub


Private Sub Form_Unload()
Set obj=Nothing
End Sub


Private Sub txtNum_KeyPress(Keyascii as Integer)
If Keyascii=13 Then
obj.numero=txtNum.Text:lblReduc.Caption=obj.reduccion
End If
End Sub


Presione F5 para probar la aplicación.

Las clases tienen dos eventos propios: el evento Initialize y el evento Terminate. Estos eventos tienen lugar cuando se crea y se elimina un objeto, respectivamente.
Pueden emplearse estos eventos, por ejemplo, para una clase que trabaje con ficheros. En el evento Initialize se puede abrir un archivo con la instrucción Open y en el evento Terminate se puede cerrar el archivo abierto con la instrucción Close. Por ejemplo:

Private Sub Class_Initialize()
Open App.Path &"\Prueba.txt" For Input As #1
End Sub


Private Sub Class_Terminate()
Close #1
End Sub

No hay comentarios:

Publicar un comentario