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