Visual Basic

POO (Programación Orientada a Objetos). Abstracción. Encapsulamiento. Modularidad. Jerarquía. Herencia. Clases. Polimorfismo. Recordset. Eventos

  • Enviado por: Bart
  • Idioma: castellano
  • País: Colombia Colombia
  • 4 páginas
publicidad

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...


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 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...