BUSCAR
INDICE
INDICE DEL TEMA
OBJETIVOS
TEORIA
PALABRAS RESERVADAS
GLOSARIO
EJERCICIOS
RESUELTOS
AUTOEVALUACION
PROPUESTOS
ERRORES
ESTADISTICAS
INICIO
FAQS
LINKS
RECOMIENDANOS
QUIENES SOMOS
MAPA DEL WEB
COLABORAR

Tema 20 Funciones Virtuales y Polimorfismo

Sugerencias de Portabilidad

Una consecuencia interesante del uso de funciones virtuales y polimorfismo es que los programas adquieren una apariencia simplificada. Contienen menos lógica de bifurcación, prefiriendo un código secuencial más sencillo. Esta simplificación facilita probar, depurar y mantener el programa.

Una vez declarada una función como virtual, se conserva como virtual a lo largo de toda la jerarquía de herencia a partir de dicho punto.

Cuando una clase derivada decide no definir una función virtual, la clase derivada heredar  la función virtual de la clase base inmediata.

La funciones virtuales redefinidas deben tener el mismo tipo de regreso y la misma signatura que la función virtual base.

Si una clase se deriva de una clase con una función virtual pura, y para dicha función virtual pura no se ha dado definición en la clase derivada, entonces la función virtual también se conserva pura en la clase derivada. Por consecuencia, también la clase derivada ser  una clase abstracta.

Mediante las funciones virtuales y el polimorfismo, el programador puede ocuparse de generalidades y dejar que en tiempo de ejecución, el entorno se preocupe de lo específico. El programador puede dirigir una amplia variedad de objetos haciendo que se comporten de formas apropiadas a dichos objetos incluso sin conocer los tipos de los mismos.

El polimorfismo fomenta la extensibilidad: software escrito para invocar comportamiento polimorfico se escribe de forma independiente del tipo de los objetos a los cuales los mensajes son enviados. Por lo tanto, nuevos tipos de objetos, que pudieran responder a mensajes existentes, pueden ser añadidos a dicho sistema sin modificar el sistema base. A excepción de la parte de código cliente que produce nuevos objetos, lo programas no necesitan ser recompilados.

Una clase abstracta define una interfaz para los distintos miembros de una jerarquía de clase. La clase abstracta contiene funciones virtuales puras, que serán definidas en las clases derivada. Mediante el polimorfismo todas las funciones en la jerarquía pueden utilizar esta misma interfaz.