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 3 Funciones: declaración y definición
Sugerencias de Rendimiento

Cualquier problema que puede ser resuelto en forma recursiva, también puede ser resuelto de forma iterativa (no recursiva). Por lo general se recoge un enfoque recursivo en preferencia a uno iterativo cuando el enfoque recursivo es más natural al problema y resulta en un programa que sea fácil de comprender y de depurar. Otra razón para seleccionar una solución recursiva, es que la solución iterativa pudiera no resultar aparente.

La funcionalización de los programas de una forma nítida y jerárquica promueve buena ingeniería del software.

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