Herencia Polimorfismo y Encapsulación

Herencia:

Definición

Con las últimas versiones de Visual Basic se puede hacer uso de la herencia que consiste en que una Clase Base puede heredar a una clase Derivada  sus propiedades, métodos y eventos.

Entendiendo el concepto de herencia.

La palabra herencia y heredar son comunes en la vida cotidiana. Estoy seguro que usted ha escuchado decir que los padres heredan a sus hijos, nietos o bisnietos, ciertas características tales como; el color de sus ojos o de su piel, su carácter, algunas enfermedades, etc. Pues bien, cuando eso sucede, se dice que determinada persona heredó sus características a sus hijos, nietos o bisnietos.

En la programación orientada a objetos POO sucede algo parecido, por que una clase puede heredar sus  propiedades, métodos y eventos a otra clase.

A partir de la versión .net;   Visual  Basic trae incorporada las características de encapsulación, herencia y polimorfismo que lo hace más competitivo ante otros lenguajes de programación.

La palabra  reservada de Visual Basic para crear una clase heredada o derivada es  Inherits

En una clase derivada que hereda características de una clase base se pueden hacer modificaciones para agregar  o quitar nuevas propiedades, métodos o eventos sin que estos cambios afecten a la clase que heredó.

El manejo de la herencia permite crear una clase una vez, y luego utilizar ese código para  crear nuevas clases.

Características de La Herencia en Visual Basic

  • Todas las clases pueden ser heredadas excepto que la clase se marque con la palabra reservada NotInheritable que impide la herencia de una clase a otra.
  • Visual Basic solo permite la herencia simple es decir que una clase derivada solo puede heredar de una clase base; a diferencia de otros lenguajes que permiten la herencia múltiple en donde una clase derivada puede heredar de varias clases bases.
  • Para  evitar la manipulación de la clase base, el nivel de acceso de la clase derivada debe ser menor o igual a la clase base.
  • En Visual Basic Express no se incluye la herramienta para heredar formularios pero sí en la versión professional. No obstante se puede manejar la herencia usando código.

 Heredando un formulario usando el asistente.

Para hacer uso de la herencia hay dos formas; Una es con la ayuda del

Asistente y la otra usando código.

En Visual Basic Express, esta deshabilitado el asistente para el manejo de la herencia pero siempre queda la opción de manipular el código para lograr el mismo objetivo.

En el siguiente proyecto se hará uso de ambos métodos, Obviamente en el primero no concluiremos el ejercicio sino que llegaremos hasta donde el programa nos permite y luego continuaremos con el segundo método, es decir, manipulando las instrucciones.

Ejercicio: Manejando La Herencia usando el asistente.

  • Cree un nuevo proyecto  en Visual Basic y  asígnele  el nombre Papá
  • Dé clic derecho en el nombre del proyecto  “papá” en el explorador de soluciones, En el menú que se despliega dé clic en Agregar.
6300

Se mostrará otra ventana en donde elegirá Windows Forms...

6301

Al dar clic en Windows Forms abrirá otra ventana…

6302

Puede llegar a esta ventana de otra manera y es desde el menú proyecto  en la barra de menús, Agregar  Windows Form.

El menú Proyecto----------- > Agregar Windows Form se abrirá la ventana como la de la imagen anterior.

Seleccione Windows Forms en la columna del centro y luego dé  clic en  Windows Forms de la columna de la izquierda.

Al dar clic en Windows Forms en la lista de la columna izquierda  se mostrará la siguiente ventana.

6303

Seleccione Formulario heredado y asígnele el nombre FormHijo.vb en la casilla de abajo y al dar clic en Agregar se mostrará la  siguiente ventana por que no esta habilitada el manejo de la herencia en Visual Basic Express.

6304

Visual Basic 2010 Express no le proporciona el asistente para ayudarle a heredar un formulario. Pero no se preocupe que en el siguiente ejercicio aprenderá a manejar la herencia usando código.

Heredando una Clase (Formulario) usando código

Ejercicio:

  • Cree un nuevo proyecto con el nombre Formulario Herencia 2010
  • Dibuje en el formulario  dos labels,  Al primero, cámbiele la propiedad Text a Familia Feliz y en el otro escriba los nombres que aparecen en la siguiente lista (puede poner  los nombres que usted desee en los labels, igual en el PictureBox, insertará la imagen que usted elija de su PC)
  • Agregue un PictureBox y cámbiele su propiedad BackgroundImageLayout a StretchImage.
  • Configure los objetos que agregó al formulario para que aproximadamente sea parecida a la de la siguiente imagen, obviamente con la  imagen que usted insertó.
6305
  • Agregue un nuevo formulario, siguiendo los pasos  que se explicaron para el ejercicio anterior y asígnele el nombre Formulario Hijo.vb (recuerde que debe llevar la extensión .vb)

Si no le da nombre a un formulario agregado, el programa le asigna automáticamente el de Form2.vb en caso que sea el segundo formulario que agrega al proyecto y así sucesivamente.

  • Ahora vuelva a IDE y observe que en el explorador de soluciones ya se agregó el formulario Hijo.vb
  • Dé clic en el ícono Ver todos los Archivos que se encuentra en la parte superior del Explorador de soluciones y es el segundo de izquierda a derecha.
6306
  • Se mostrarán todos los archivos del proyecto. ahora  busque Formulario Hijo.vb y dé clic en la pestañita que tiene a la izquierda para ver los demás ítems que contiene
6307
  • Al dar clic en la pestañita del Formulario Hijo.vb se verá, entre otros, el ítem Formulario Hijo.Designer.vb
jj
  • Por último de clic en Formulario Hijo.Designer.vb y se abrirá la ventana de código, en donde borrará y escribirá código  en la línea que comienza con Inherits  para que quede como señala la flecha en la  siguiente imagen.

La instrucción deberá tener escrito Inherits  Form1 lo que permitirá que el form1 herede sus propiedades al Formulario Hijo.

6308

 

  • Para que el programa primero muestre el formulario Hijo, debe indicárselo en Proyectos--- > Propiedades. Y en la ventana de propiedades elija el Formulario Hijo, en la casilla de formulario de inicio.
6309
  • Ejecute el programa y vea el resultado.
6310

Se muestra el Formulario Hijo (Clase Derivada) con las mismas características que tiene el Form1 (Clase Base) pero en cada control aparece una imagen como de un candado, lo que significa que no podemos modificar las propiedades de esos objetos creados por herencia. Esto es para que las modificaciones en la clase derivada no afecten a quien le heredó sus características o Clase Base.

jjj
  • Observe que la figura del candadito solo aparece cuando usted visualiza la clase derivada  en tiempo de diseño, por que al ejecutar  la aplicación no se nota la diferencia entre la Clase Base y Clase Derivada.
  • Para modificar las propiedades de una clase derivada, debe hacerse configurando la propiedad Modifiers en la clase base y en la clase derivada.

Recuerde, que hay otro ejemplo de herencia en el capítulo correspondiente a los formularios que se abordó antes, en este libro.

Herencia, Polimorfismo y encapsulación.

La herencia, permite utilizar el Polimorfismo, basado en la herencia.

Polimorfismo:

 Polimorfismo: Esta palabra significa múltiples formas y  consiste en poder definir una clase que se puede utilizar en forma intercambiable usando instrucciones de código  cliente en tiempo de ejecución, pero con funcionamiento o funcionalidad diferente.

Polimorfismo como ya se dijo, es una palabra griega que significa “Muchos en forma de”

Junto a la herencia y encapsulación constituye el  tercer pilar de  la Programación Orientada a Objetos.

El polimorfismo  tiene dos aspectos:

  • En tiempo de ejecución, los objetos derivados  pueden ser tratados como objetos de una clase base, en lugares como parámetros del método y las colecciones o conjuntos. Al suceder esto el objeto derivado no es idéntico en tiempo de ejecución al objeto base.
  • Las clases bases, pueden definir una implementación virtual de métodos y entonces las clases  derivadas pueden sobrescribirse y obtener su propia implementación de métodos en tiempo de ejecución. De esta manera, se puede invocar un método de una clase base y producir una versión del método, propia de  la clase derivada.

En el polimorfismo el método está en la clase base y las modificaciones o implementaciones del método están en la clase derivada.

Para entender mejor el concepto de polimorfismo, lea la siguiente analogía:

En una estación de venta de combustible o gastienen un métodopara vender el combustible, gasolina o gas. Llega el cliente, le dice al empleado cuantos litros o galones quiere de gasolina o combustible, el empleado, abre laentrada del tanque o depósito de combustible del vehículo, programa la cantidad que el cliente pidió y luego introduce la manguera de la bomba en la entrada del tanque y comienza a vaciarla cantidad que el cliente pidió, por último el cliente paga por la compra del combustible a veces con tarjeta de crédito, a veces con dinero en efectivo y otras veces con orden para combustible.

La descripción anterior, es un método para llenar el tanque de combustible en el vehículo. Pero no todos los vehículos son iguales y no todos usan el mismo combustible, por lo que el empleado, adopta el método de acuerdo al vehículo. Por ejemplo,a veces tiene que pedirle la llave del depósito o tanque al conductor por que este tiene llave, pero la mayoría de las veces no tiene. Debe programar diferentes cantidades de litros o galones, por que no todos solicitan igual cantidad, debe escoger unas veces la manguera del Diesel y otra vez la de gasolina de acuerdo al motor del vehículo. Por último para recibir el pago por el producto tiene que hacer actividades según el método escogido por el cliente para pagar.

El empleado tiene un método para lograr un resultado pero hace modificaciones al método base de acuerdo al tipo de vehículo.

A pesar que el método varía, el resultado es el mismo. El vendedor vendió el producto y el cliente recibió el combustible que deseaba.

Así es el Polimorfismo; permite modificaciones al método de la clase base, en la clase derivada, en tiempo de ejecución.

 Encapsulacion:

Como  su nombre lo sugiere “encapsula” la implementación de una clase que es la realización interna de las estructura de funciones y datos y la separa de  la Interfaz que es la vista externa desde otras clases. El objetivo de la encapsulación es evitar la manipulación de código y  alteración de datos por quien no está autorizado

La encapsulación se implementa utilizando modificadores de acceso en los tipos de datos y definición de miembros.

Tipos de modificadores:

  • Public: Se puede acceder desde cualquier código.
  • Protected: Solo permite acceder desde la misma clase o una subclase.
  • Private: Solo se accede desde el código de la clase a la que pertenece.
  • Interna: El acceso solo es desde el código del  ensamblado en que se definió.

 

¿Te gustó? Pues comparte ;-)
Conoce al autor
Este sitio usa cookies para personalizar el contenido y los anuncios, ofrecer funciones de redes sociales y analizar el tráfico. Ninguna cookie será instalada a menos que se desplace exprésamente más de 600px. Leer nuestra Política de Privacidad y Política de Cookies. Las acepto | No quiero aprender cursos gratis. Sácame