PROPERTY [ READ ] Identifier [ , Synonymous1 [ , Synonymous2 ... ] ] AS Datatype
Nota:
Read: añadiendo esta palabra, hará que la propiedad sea de solo lectura
Para manejar esta propiedad, se debe de crear una variable privada y dos procedimientos privados que nos van a permitir la lectura (_get) y la asignación de valores (_read).
Veamos un ejemplo creando una propiedad llamada "Edad":
PROPERTY
Edad AS
integer
'Propiedad
creada
PRIVATE
$Edad AS
integer
'variable
privada
PRIVATE
FUNCTION
Edad_read() AS
integer
'Devuelve
el valor de Edad
RETURN
$Edad
END
PRIVATE
SUB
Edad_write(Valor AS
integer)
' Escribe
el valor en la propiedad
$Edad
=
Valor
END
Nota:
Tener
estos métodos (_write y _read) puede parecer equivalente a haber declarado el
atributo como público (Public); sin embargo hay una pequeña diferencia que
es muy importante:
- Si hacemos el atributo público cualquiera funcion o subrutina puede modificar su valor sin verificar que el nuevo valor que se le asigne sea un valor apropiado;
- Por otro lado, un método para establecer el valor de la variable puede realizar la validación del dato que va a asignar al atributo y si no es un dato válido puede rechazarlo.
Por ejemplo, podemos añadir un comprobación cuando se vaya a asignar un valor a la propiedad Edad
Private
Sub
Edad_write(Valor As
Integer)
'comprobamos
si el "valor" es mayor que 0
If
valor > 0
Then
'si
el valor es mayor que 0, se le puede asignar
$Edad
=
Valor
Else
Message.Info("No
se puede asignar un valor de edad inferior o igual que 0")
Endif
End
Para más información : http://gambaswiki.org/wiki/lang/propdecl?l=es
Programa que facilita la creación de propiedades de clases: Enlace de Descarga
Consulta... ¿qué significa el signo $ al inicio de la variable? Gracias.
ResponderEliminarComo no puedes usar el mismo nombre "edad" (el de la propiedad) en la variable privada, se usa el signo $ o también puedes usar otro nombre "hedad", por ejemplo.
ResponderEliminarLo importante es saber en la clase vamos a usar la variable privada "$edad" o "hedad" y externamente a la clase solo se usa (y se tiene acceso) a la propiedad "Edad".
Muchas gracias por su aclaración. Saludos.
Eliminar