Diferencia entre revisiones de «Programación en C++/Funciones virtuales»

Contenido eliminado Contenido añadido
67wkii (discusión | contribs.)
Línea 517:
===PORQUE FUNCIONES VIRTUALES===
 
Como se declaraba en el inicio de este capítulo, las funciones virtuales en combinación con tipos derivados le permiten a C++ soportar polimorfismo en tiempo de ejecución. El polimorfismo es esencial para la programación orientada a objetos por una razón: Esta permite a una clase generalizada especificar aquellas funciones que serán comunes a todas las derivadas de esa clase, mientras que permite a una clase derivada definir la implementación específica de algunos o todas de esas funciones. A veces esta idea es expresada como: La clase base dicta la 'interface' general que cualquier objeto derivado de esa clase tendrá, pero permite a la clase derivada definir el método actual usado para implementar esa interface. De ahí que la frase "una interface múltiples métodos" sea usada a menudo para describir el polimorfismo.
Como se declaraba en el inicio de este capitulo, las funciones
virtuales en combinacion con tipos derivados le permiten a C++
soportar polimorfismo en tiempo de ejecucion. El polimorfismo es
esencial para la programacion orientada a objetos por una razon:
Esta permite a una clase generalizada especificar
aquellas funciones que seran comunes a todas las derivadas de esa
clase, mientras que permite a una clase derivada definir
la implementacion especifica de algunos o todas de esas funciones.
A veces esta idea es expresada como: La clase base dicta la
'interface' general que cualquier objeto derivado de esa clase
tendra, pero permite a la clase derivada definir el metodo actual
usado para implementar esa interface. De ahi que la frase
"una interface multiples metodos" sea usada a menudo para describir
el polimorfismo.
 
Parte del truco de aplicar el polimorfismo de una manera satisfactoria es comprender que la clase base y derivada forman una jerarquía, la cual se mueve de mayor a menor generalización (base a derivada). Diseñada correctamente, la clase base provee todos los elementos que una clase derivada puede usar directamente. También define cuales funciones la clase derivada debe implementar por su cuenta. Esto permite a la clase derivada la flexibilidad para definir sus propios métodos, y aun mantener un interface consistente. Eso es, como la forma de la interface es definida por la clase base, cualquier clase derivada compartirá esa interface común. Además, el uso de funciones virtuales hace posible para la clase base definir interfaces genéricas que serán usada por todas las clases derivadas.
 
En este punto, usted debe preguntarse a si mismo porque una consistente interface con múltiples implementaciones es importante. La respuesta, nuevamente, no lleva a la fuerza central manejadora detrás de la programación orientada a objetos: Esta ayuda al programador a manejar programas de complejidad creciente. Por ejemplo, si usted desarrolla su programa correctamente, entonces usted sabrá que todos los objetos que usted derive de una clase base son accedidos en la misma manera general, incluso si las acciones específicas varían de una clase derivada a la próxima. Esto significa que usted necesita solo recordar una interface, en vez de varias. También, su clase derivada es libre de usar cualquiera o toda la funcionalidad provista por la clase base. No necesita reinventa esos elementos. Por tanto, la separación de interface e implementación permite la creación de librerías de clases, las cuales pueden ser provistas por un tercero. Si estas librerías son implementadas correctamente, ellas proveerán una interface común que usted puede usar para derivar clases suyas propias que cumplan sus necesidades especificas. Por ejemplo, tanto como las Microsoft Fundation Classes ( MFC ) y la librería de clases .NET Framework Windows Forms soporta programación en Windows. Usando estas clases, su programa puede heredar mucha de la funcionalidad requerida por un programa de Windows. Usted necesita agregar solo las características únicas a su aplicación. Este es un mayor beneficio cuando se programa en sistemas complejos.
Parte del truco de aplicar el polimorfismo de una manera satisfactoria
es comprender que la clase base y derivada forman una jerarquia, la
cual se mueve de mayor a menor generalizacion ( base a derivada ).
Diseñada correctamente, la clase base provee todos los elementos que
que una clase derivada puede usar directamente. También define cuales
funciones la clase derivada debe implementar por su cuenta. Esto
permite a la clase derivada la flexibilidad para definir sus propios
metodos, y aun mantener un interface consistente. Eso es, como la
forma de la interface es definida por la clase base, cualquier clase
derivada compartirá esa interface común. Ademas, el uso de funciones
virtuales hace posible para la clase base definir interfaces genericas
que seran usada por todas las clases derivadas.
 
En este punto, usted debe preguntarse a si mismo porque una
consistente interface con multiples implementaciones es importante.
La respuesta, nuevamente, no lleva a la fuerza central manejadora
detras de la programacion orientada a objetos: Esta ayuda al
programador a manejar programas de complejidad creciente. Por ejemplo,
si usted desarrolla su programa correctamente, entonces usted sabra
que todos los objetos que usted derive de una clase base son accesados
en la misma manera general, incluso si las acciones especificas varian
de una clase derivada a la proxima. Esto significa que usted necesita
solo recordar una interface, en vez de varias. Tambien, su clase
derivada es libre de usar cualquiera o toda la funcionalidad proveida
por la clase base. No necesita reinventa esos elementos. Por tanto,
la separacion de interface e implementacion permite la creacion
de librerias de clases, las cuales pueden ser proveidas por un
tercero.Si estas librerias son implementadas correctamente, ellas
proveeran una interface común que usted puede usar para derivar
clases suyas propias que cumplan sus necesidades especificas. Por
ejemplo, tanto como las Microsoft Fundation Classes ( MFC ) y la
librería de clases .NET Framework Windows Forms soporta programacion
en Windows. Usando estas clases, su programa puede heredar mucha
de la funcionalidad requerida por un programa de Windows. Usted
necesita agregar solo las caracteristicas únicas a su aplicacion.
Este es un mayor beneficio cuando se programa en sistemas complejos.
 
===UNA SIMPLE APLICACION DE LAS FUNCIONES VIRTUALES===