Un objeto es una estructura que contiene los datos y métodos que manipulan los datos. Casi todas las tareas realizadas en Visual Basic están asociadas con el uso de objetos. Si no tiene experiencia en programación orientada a objetos, los siguientes términos y conceptos le ayudarán a comenzar.
Clases y objetos
Las palabras "clase" y "objeto" se utilizan con tanta frecuencia en la programación orientada a objetos que es fácil confundir los términos. En general, una class es una representación abstracta de algo, mientras que un objeto es un ejemplo utilizable de lo que representa la clase. La única excepción a esta regla la constituyen los miembros de clases compartidas, que pueden utilizarse en instancias de una clase y en variables de objeto declaradas como tipo de la clase.
Campos, propiedades, métodos y eventos
Las clases se componen de campos, propiedades, métodos y eventos. Los campos y propiedades representan información que contiene un objeto. Los campos se parecen a las variables en que se pueden leer y establecer directamente. Por ejemplo, si tiene un objeto denominado "Car", podría almacenar su color en un campo denominado "Color".
Las propiedades se recuperan y establecen como los campos, pero se implementan mediante los procedimientos Get propiedad y Set propiedad, que proporcionan más control sobre la forma en que los valores se establecen o se devuelven. El nivel de direccionamiento indirecto entre el valor que se va a almacenar y los procedimientos que lo utilizan ayuda a aislar los datos y permite validar valores antes de ser asignados o recuperados.
Los métodos representan acciones que un objeto puede realizar. Por ejemplo, un objeto "Car" podría tener los métodos "StartEngine", "Drive" y "Stop". Los métodos se definen agregando procedimientos, ya sean rutinas o funciones Sub, a la clase.
Los eventos son notificaciones que un objeto recibe de, o transmite a, otros objetos o aplicaciones. Los eventos permiten a los objetos realizar acciones siempre que se produce un acontecimiento específico. Un ejemplo de evento para la clase "Car" sería un evento "Check_Engine". Puesto que Microsoft Windows es un sistema controlado por eventos, éstos pueden proceder de otros objetos, aplicaciones o entradas de usuario realizadas al hacer clic con el mouse (ratón) o al presionar teclas.
Encapsulación, herencia y polimorfismo
Los campos, propiedades, métodos y eventos son solamente la mitad de la ecuación de la programación orientada a objetos. Para que la programación orientada a objetos sea auténtica los objetos deben admitir tres cualidades: encapsulación, herencia y polimorfismo.
La encapsulación significa que un grupo de propiedades, métodos y otros miembros relacionados se tratan como si de una sola unidad u objeto se tratase. Los objetos pueden controlar cómo se cambian propiedades o se ejecutan métodos. Por ejemplo, un objeto puede validar valores antes de permitir cambios en la propiedad. La encapsulación, además, facilita la posibilidad de realizar cambios en la implementación pasado algún tiempo, mediante una actividad denominada ocultación de datos que permite ocultar los detalles de implementación de los objetos.
Herencia describe la posibilidad de crear nuevas clases basadas en una clase existente. La nueva clase hereda todas las propiedades, métodos y eventos de la clase base, y puede personalizarse con propiedades y métodos adicionales. Por ejemplo, puede crear una nueva clase denominada "Truck" basada en la clase "Car". La clase "Truck" hereda la propiedad "Color" de la clase "Car" y puede tener propiedades adicionales como "FourWheelDrive".
Polimorfismo significa que puede tener múltiples clases que se pueden utilizar de forma intercambiable, si bien cada clase implementa las mismas propiedades o los mismos métodos de maneras diferentes. El polimorfismo es esencial en la programación orientada a objetos puesto que permite utilizar elementos con los mismos nombres, independientemente del tipo de objeto que se esté utilizando en ese momento. Por ejemplo, dada una clase base "Car", el polimorfismo permite al programador definir diferentes métodos "StartEngine" para cualquier número de clases derivadas. El método "StartEngine" de una clase derivada denominada "DieselCar" puede ser totalmente diferente del método con el mismo nombre en la clase base. Otros procedimientos o métodos pueden utilizar el método "StartEngine" de las clases derivadas exactamente de la misma forma, con independencia del tipo de objeto "Car" que se esté utilizando en ese momento.
Sobrecarga, reemplazo y sombreado
La sobrecarga, el reemplazo y el sombreado son conceptos similares que pueden confundirse fácilmente. Aunque las tres técnicas permiten crear miembros con el mismo nombre, existen algunas diferencias importantes.
- Los miembros sobrecargados se utilizan para proporcionar diferentes versiones de una propiedad o método que tienen el mismo nombre, pero que aceptan un número diferente de parámetros, o parámetros con diferentes tipos de datos.
- Las propiedades y métodos reemplazados se utilizan para reemplazar una propiedad o método heredados que no son apropiados en una clase derivada. Los miembros reemplazados deben aceptar el mismo tipo de datos y número de argumentos. Las clases derivadas heredan los miembros reemplazados.
- Los miembros sombreados se utilizan para reemplazar localmente un miembro que tiene un ámbito más amplio. Cualquier tipo puede sombrear cualquier otro tipo. Por ejemplo, puede declarar un propiedad que sombree un método heredado con el mismo nombre. Los miembros sombreados no se pueden heredar.