TERMINOS DE VISUAL BASIC Objetos en Visual Basic

Anuncio
TERMINOS DE VISUAL BASIC
Objetos en Visual Basic
Es un nuevo tipo sencillo de programación o se puede condice rara la descripción de algunos métodos... De
hecho, si nosotros corremos un programa que contiene solamente una forma vacía, a más de una clase rellena
con código, no ocurriría gran cosa, el código en el módulo de clase no se ejecutaría. Para obtener algo de
provecho, nosotros debemos crear una instancia de la clase, oficialmente conocida como objeto. La Creación
de una instancia de la clase se la conoce como instancia, o instancia de la clase. ( Por alguna razón, algunas
veces miramos la equivocada frase instancia del objeto. El objeto es la instancia.) Nosotros podríamos crear
algunas instancias de una clase si deseáramos. La instancia de una clase, es decir, la creación de un objeto, es
un proceso de 2 pasos en Visual Basic, puesto que primero es necesario la declaración de la variable para usar
como referencia para el supuesto objeto. Además, hay dos formas de crear objetos: creación explícita y
creación implícita.
A pesar de que han pasado más de dos años y medio desde que la versión 4 del Visual Basic hiciera su
aparición, hay un elemento que aún no está lo suficientemente extendido como debiera, quizás sea por
"incomprendido", me refiero a los módulos de clases, esa puerta al mundo de los objetos a la programación
orientada a objetos.
Por suerte la quinta versión de Visual Basic ha mejorado ese tipo de módulos, poniendo a nuestro alcance un
sistema mejorado para la programación orientada a objetos. Bueno, casi orientada a objetos,
Puede que muchos de los lectores digan: "yo hace tiempo que trabajo con las clases en Visual Basic", y me
parece estupendo, aunque algunos "abusamos" de las clases y en ocasiones las usamos por "snobismo": como
es nuevo hay que usarlo.
He visto alguna que otra aplicación que usa las clases (objetos) para situaciones en las que realmente no son
necesarias, también he visto código en los que el uso de un objeto (clase) solucionaría algunos conflictos; la
verdad es que no he tenido que buscar mucho para encontrar los listados a los que hago alusión... mirando mi
propio código tengo ejemplos de ambos casos.. Creo que el principal inconveniente con un uso más extendido
de los módulos de clases en las aplicaciones de Visual Basic, básicamente es su incomprensión... el no saber
cuándo usarlos y cuando nos puede beneficiar su uso en nuestros proyectos.
Es curioso, porque desde que empezamos a crear un proyecto, estamos trabajando, directa o indirectamente,
consciente o inconscientemente, con objetos: asignamos valores a sus propiedades y usamos los métodos
expuestos. Por tanto deberíamos "cambiar" nuestro enfoque a la hora de crear un nuevo proyecto y planearlo
como un puzzle en el que cada pieza pueda ser un objeto... y si estos objetos son lo más independiente
posible: mejor; Veamos un caso práctico en el que el uso de un objeto, (en forma de un módulo de clase),
puede solucionarnos algún que otro problema no deseado.
Este trozo de código nos permite mostrar en la caja de texto de un combobox, mientras vamos escribiendo, el
ítem que más se parece de los que están en la lista de items.
En un principio, la implementación la hice usando unos procedimientos públicos que estaban en un módulo
En caso de tener varios controles combo, llamaríamos a estos procedimientos de igual forma, sólo cambiando
el nombre del combo al que hacemos referencia Realmente no existe ningún problema... salvo si pudiésemos
escribir en cada uno de ellos al mismo tiempo...
1
De cualquier forma, usando una clase que se encargara del control de cada combo, nos libraría de cualquier
conflicto, por la sencilla razón de que cada uno de esos objetos creados para "tratar" cada combo mantiene de
forma independiente las variables que necesita, a esto es lo que se llama "encapsulamiento"... Pero veamos el
código de la clase y cómo usarlo:
'Código de la clase y cómo usarlo
Para usarlo, hay que crear una referencia a este tipo de objeto y después poder usarlo, veamos parte del código
para implementar esta clase:
Usándolo de esta forma, cada objeto se encarga de un combo y si quisiéramos ampliar su funcionalidad,
tendríamos la seguridad de que cualquier valor que deba conservar, (por ejemplo: una copia del contenido de
los items de la lista), permanecerían "dentro" de cada objeto. Pero al usarlo de esta forma, básicamente lo
estamos usando como se hacía al tener los procedimientos en el módulo BAS, salvo que cada combo se
guardaría en una nueva instancia de la clase, manteniendo su propia copia de las variables.
Aunque no es una buena forma de usarlo... cierto es que nos da "privacidad" en los datos, pero si tuviesemos
otro combo en el que aplicar esto mismo habría que crear una nueva clase con un nombre diferente, por
ejemplo:
'
Sería más práctico crear una colección de este tipo de objeto y simplemente indicándole el nombre del combo
que queremos usar, que sea la propia clase/colección la que se encargue de buscar el objeto apropiado, si es
que existe, en otro caso nos devolvería un error.
Veamos el código de la clase/colección y cómo quedaría el código en el form en el que se emplee.
Un detalle: El tipo de objeto "almacenado" en esta colección sería un objeto de la clase usada anteriormente,
por tanto, podríamos usarlo de cualquiera de las dos formas: con o sin colección...
'La clase / colección:
Como comprobamos resulta más fácil de usar de esta segunda forma, aunque si sólo tenemos un combo en el
que se quiere aplicar esta funcionalidad, no es necesario usar la clase/colección.
PROPIEDADES, METODOS
nosotros tenemos incluido el código de validación para prevenir el valor de un examen negativo y que no
exceda de 100. Por otra parte, el valor de una propiedad de un conjunto a través de una variable publica puede
asignarse desde cualquier parte del proyecto y no deberá estar sujeto a validación. Por ejemplo, él ID del
estudiante podría requerir ser un carácter de longitud 10, pero no es nada obligatorio, alguien puede codifica
otra parte de la aplicación, accidentalmente ingresa un Estudiante ID de longitud 9. Esto podría producir un
error al final, cuando la propiedad es usada. Al punto, que podría ser muy difícil localizar el código mal
escrito.
Con el objeto de prevenir esto, es recomendable utilizar bien el encapsulamiento al cual nosotros ocultemos el
acceso directo a las variables miembro, para declararlos Privados, en ese momento nosotros damos a conocer
por medio de 2 métodos especiales. La propiedad Let (o propiedad Set en el caso de propiedades de tipo
Objeto) o el conjunto que determina propiedades Get que retornan la propiedad. Esto nos permitiría incluir
2
código de validación para prevenir lo anteriormente dicho. Aquí esta como la propiedad Estudiante ID debería
ir su código, por ejemplo.
Note que la variable privada guarda la propiedad, la cual es expuesta a través de los métodos públicos. De esta
manera, la interface publica consiste enteramente de métodos, los cuales pueden tener código de validación.
Esto tiene además la ventaja que nosotros podamos fácilmente hacer que la propiedad EstudianteID sea de
lectura solamente por omisión la determina el método Let.
En este caso, la propiedad puede solamente ser determinada a través de un miembro de variable privada,
dentro del módulo de clase. Esto no sería posible usando determinadas variables solamente.
En la teoría de la programación orientada a objetos, la Propiedad Let (y Set) como métodos esta refiriéndose a
como se actualizan los métodos, entonces estos actualizan el valor de la propiedad, y determina a Get como
método que esta refiriéndose como método de asesoramiento, entonces estos accesa al valor de una propiedad.
(Algunas veces ambas procedimientos determinan estar refiriéndose como métodos de acceso). Estos 2
métodos son la llave para la encapsulación, entonces su presencia implica que la interface publica consiste
solamente de métodos, los cuales pueden realizar validaciones.
En los primeros ejemplos de este capitulo para simplicidad de los mismo y por ahorrar espacio, nosotros
estabamos violando los principios de encapsulamiento, por cuanto a menudo declarábamos propiedades
usando variables publicas.
LA INFORMACION DE ESTA INVESTIGACION FUE SACADA DE WWW.GET−A−PLUS.COM
Y DE ALGUNOS BUSACDORES COMO WWW.ALTAVISTA.COM , WWW.METASEARCH.COM ,
WWW.CHUBA.COM Y OTROS...
3
Descargar