miércoles, julio 26, 2006

 

Implementaciones III

Con esta humedad lo único que dan ganas es de escribir sobre programación.
Jajajajajaja.
La verdad es que anduve un poco ocupado y estaba atrasado con darle al teclado.
Pero buen, veamos si puedo ir poniendome al día.
Ya habiamos visto como hacer para que una clase tenga una propiedad, creando una variable y declarandola del tipo Public dentro del código de la clase.
Esa es la forma más sencilla de hacer esta tarea pero, en este caso, lo más sencillo no es lo mejor.
¿Por qué?. Porque cuando un objeto cliente le asigna un valor a la variable no tenemos forma de controlar, validar ni manipular dicho valor.
Pensemos como ejemplo la clase Persona con una variable pública llamada Apellido. Ni bien se le asigna un valor a esa variable no hay manera de operar sobre él. Supongamos por ejemplo que, independientemente de lo que el usuario escriba, deseamos que el apellido esté siempre en mayúscula. En este caso no hay forma de hacerlo.
Veamos entonces una manera más versátil y profesional de escribir el código correspondiente a una propiedad de una clase.
Propiedades de las clases, la forma correcta.
Lo primero que debemos recordar es que lo definido como privado dentro del código de la clase, pertenece exclusivamene a ella y no hay manera que de acceder a ello desde afuera de la misma.
Entonces, para cada propiedad definimos en la sección de declaraciones, para que tenga una visibilidad de módulo, una variable privada.
En el ejemplo planteado anteriormente nos quedaría algo así:
Private m_strApellido As String
Al ser privada no está disponible para el exterior de la clase.
¿Cómo usamos esa variable entonces?.
Tenemos que tener en cuenta que pueden existir dos posibilidades, que necesitemos asignarle un valor a ella o sea, guardar algo en ella o bien, que necesitemos recuperar, leer, el valor que ella contiene.
Entonces debemos definir dos procedimientos especiales para estas dos posibilidades. Estos procedimientos son los Property. Je!! el nombre los vende de que se trata de procedimientos de propiedad no?.
La sintaxis sería algo como lo siguiente:
Public Property Get Apellido() As String
Apellido = m_strApellido
End Property
Public Property Let Apellido(ByVal vNewValue As String)
m_strApellido = vNewValue
End Property
Cosa rara che. Naa.
Primero hay dos porque uno sirve para recuperar el valor y otro para asignarle un valor.
El Get, recupera un valor y usa el mismo nombre de la propiedad como contenedor, si nos fijamos en el código pone en Apellido el contenido de m_strApellido.
El Let, asigna el valor. ¿Cuál?. El que recibe en vNewValue.
Un cliente que use la clase persona, para asignarle un valor al apellido, escribir un código como el siguiente:
Dim objPers As Persona
Set objPers = New Persona
objPers.Apellido = "Perez"
Muy sencillo.
Para usar tal valor, en un cuadro de mensajes por ejemplo deberá escribir un código mas sencillo todavía.
MsgBox objPers.Apellido
Una ganga.
¿Si quisieramos que el apellido esté siempre en mayúscula?.
Solamente debemos modificar el procedimiento Property Let de la siguiente manera:
Public Property Let Apellido(ByVal vNewValue As String)
m_strApellido = UCase(vNewValue)
End Property
Nada y además el cliente ni se entera.
Como pueden ver el tema de las propiedades se pone bueno así que la seguimos en la próxima.
Nos vemos.

Comments: Publicar un comentario



<< Home

This page is powered by Blogger. Isn't yours?