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

Contenido eliminado Contenido añadido
m Revertidos los cambios de 190.23.74.200 (disc.) a la última edición de 130.79.90.21
m Bot: Correcciones ortográficas; cambios triviales
Línea 1:
Editores:<br />
 
<table align="center" cellpadding="12"><tr>
Línea 31:
ejecucion.
 
== PUNTEROS A TIPOS DERIVADOS. ==
 
La fundacion del polimorfismo en tiempo de ejecucion es el puntero de
Línea 47:
 
<source lang="cpp">
clase_B *p; // puntero al objeto del tipo clase_B
clase_B objB // objeto del tipo clase_B
clase_D objD // objeto del tipo clase_D
Línea 58:
<source lang="cpp">
p = &objB; // p apunta a un objeto del tipo clase_B
p = &objD /* p apunta a un objeto del tipo clase_D
el cual es un objeto derivado de clase_B. */
</source>
Línea 188:
tiempo de ejecucion.
 
=== REFERENCIAS A TIPOS DERIVADOS ===
 
Similar a la accionacción de punteros ya descritas, una referencia a la
clase base puede ser usada para referirse a un objeto de un tipo
derivado. La mas comun aplicacion de esto es encontrada en los
Línea 197:
tipo derivado de esa misma base.
 
=== FUNCIONES VIRTUALES ===
 
El polimorfismo en tiempo de ejecucion es logrado por una combinacion
Línea 205:
 
Una función virtual es una funcion que es declarada como 'virtual' en
una clase base y es redefinida en una o mas clases derivadas. Ademas,
cada clase derivada puede tener su propia version de la funcion
virtual. Lo que hace interesantes a las funciones virtuales es que
Línea 363:
es usado para describir la redefinicion de una funcion virtual.
 
=== LAS FUNCIONES VIRTUALES SON HEREDADAS ===
 
Una vez que una funcion es declarada como virtual, esta se mantiene
Línea 512:
herencia.
 
=== 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.
Línea 519:
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.
 
=== UNA SIMPLE APLICACION DE LAS FUNCIONES VIRTUALES ===
 
Para tener una idea del poder del concepto "una interface, multiples
Línea 633:
'set_dim()' como se define en 'figura', asume que seran pasados
dos valores, no solo uno. Como 'circulo' no requiere este segundo
valor, que tipo de accionacción podemos tomar?
 
Hay dos manera de resolver este problema. La primera y peor, usted
Línea 739:
aplicar funciones virtuales se presentaran por si mismas.
 
=== FUNCIONES VIRTUALES PURAS Y CLASES ABSTRACTAS ===
 
Como se ha visto, cuando una funcion virtual que no es redefinida
Línea 883:
polimorfismo en tiempo de ejecucion.
 
=== ENLACE TEMPRANO VS TARDIO ===
 
Existen dos terminos que son comunmente usado cuando se discute
Línea 913:
velocidad de ejecucion.
 
=== POLIMORFISMO Y EL PURISTA ===
 
A traves de este libro, y en este capitulo especificamente, se ha
Línea 938:
casos a características en tiempo de compilación y en tiempo de
ejecución. Sin embargo, no se sorprenda si algun dia, alguien va en
contra de usted sobre el uso de este termino!
 
Si su programa usa enlace tardio o temprano depende de lo que el