Herencia, abstracción y polimorfismo en C++Builder

Herencia, abstracción y polimorfismo en C++Builder
Información sobre la plantilla


Programación Orientada a Objetos (P.O.O)

Programación Orientada a Objetos (P.O.O) es un paradigma de programación que se fundamenta en los conceptos de objeto y clase.

Definición de objeto y clase:

  • Los objetos son entidades que combinan estado (datos) y comportamiento (métodos).
  • Una clase es la descripción de un conjunto de posibles objetos que tendrán el mismo comportamiento.
  • Todo objeto es instancia de una clase.

Herencia

La herencia es una herramienta muy importante en muchos aspectos del desarrollo de aplicaciones:

  • Organización del diseño.
  • Reusabilidad de clases (propias o no).
  • Mejora del mantenimiento.

Cuando una clase hereda de otra, la clase derivada incorpora todos los miembros de la clase base además de los suyos propios. Esto significa que los objetos de estas clases tienen asociados las propiedades y métodos de la clase base.

Un ejemplo sencillo es un hombre cuya profesión es profesor y un joven que es alumno.

Ambos son personas que derivan en profesores y alumnos en función de su categoría profesional.

Abstracción

Es la ocultación de detalles irrelevantes o que no se desean mostrar. Podemos distinguir en una clase dos aspectos desde el punto de vista de la abstracción:

  • Interfaz: lo que se puede ver/usar externamente de un objeto.
  • Implementación: cómo lleva a cabo su cometido.

Clase abstracta

Es una clase que no está completamente especificada (posee métodos sin implementar), por lo tanto no se pueden crear instancias de la misma. Una clase abstracta se usa para servir de clase base a otras clases. En terminología C++ se dice que una clase abstracta es aquella que posee al menos un método virtual puro.

  • Virtual: obliga a las clases derivadas a implementar ese método.
  • Puro: no pueden crearse instancias de esa clase.

Polimorfismo

Es demostrar comportamientos distintos según la situación. Puede darse de tres formas diferentes:

  • Funciones: sobrecarga.
  • Clases: es al que se refiere normalmente el concepto de polimorfismo.
  • Enlace dinámico: métodos virtuales.

Sobrecarga de funciones

Ocurre cuando en una clase existen dos métodos con idéntico nombre pero con distinta lista de parámetros. El compilador los considera como dos métodos distintos y aplicará cada uno de ellos en la situación apropiada.

Polimorfismo en las clases y métodos virtuales

Una clase se puede comportar como cualquiera de sus antecesoras (en la asignación por ejemplo). Como tenemos variables (punteros) que pueden contener objetos de distintas clases, el compilador no sabe qué tipo de objeto es al que realmente apunta la variable (en tiempo de compilación) por lo tanto hay retrasar el enlace a tiempo de ejecución.

El enlace dinámico es retrasar el enlace de una llamada a un método (función) al tiempo de ejecución.

Bibliografía

  1. es.wikipedia.org. [En línea] [Citado el: 20 de 05 de 2014.] http://es.wikipedia.org/wiki/Herencia_%28inform%C3%A1tica%29.
  2. http://elvex.ugr.es/decsai/builder/. [En línea] [Citado el: 20 de 05 de 2014.]http://elvex.ugr.es/decsai/builder/index.html.
  3. Mora, Miguel Katrib. Programación Orientada a Objetos en C++. Capítulos 1 y 2.