Laboratorio8 SIS2210
Laboratorio8 SIS2210
Laboratorio8 SIS2210
Tema: Polimorfismo
Logros a alcanzar:
Comprende el concepto de función virtual
Comprende el concepto de polimorfismo.
Comprende el concepto de clases virtuales
Implementa funciones virtuales y clases virtuales
Aplica las clases virtuales para implementar herencia y polimorfismo.
.
Fundamento Teórico:
Función virtual o método virtual.- Es una función cuyo comportamiento, al ser declarado "virtual", es
determinado por la definición de una función con la misma cabecera en alguna de sus subclases.
Si hay funciones de la clase base redefinidas por la clase derivada y si la función en cuestión es designada
"virtual", se llamará a la función de la clase derivada (si existe). Si no es virtual, se llamará siempre a la función
de la clase base.
Una función virtual es una función que es declarada como 'virtual' en una clase base y es redefinida en una o
más clases derivadas. Además, cada clase derivada puede tener su propia versión de la función virtual.
Destructores virtuales.- Es importante para una clase base de C++ tener un destructor virtual para asegurar que
se llamará siempre al destructor de la clases derivadas inferiores, si el destructor no es virtual solamente
eliminará los recursos de la clase base sin eliminar los recursos utilizados por las clases derivadas.
Clase abstracta: es una clase que no está completamente especificada (posee métodos sin implementar), por lo
tanto no se pueden crear instancias de la misma. Una clase abstracta se usa para servir de clase base a otras
clases. En terminología C++ se dice que una clase abstracta es aquella que posee al menos un método virtual
puro.
Funciones: sobrecarga.
Clases: es al que se refiere normalmente el concepto de polimorfismo.
Enlace dinámico: métodos virtuales.
Actividad de Clase:
biblioteca::biblioteca(int maxv)
{
maxVol=maxv;
nroVol=0;
volumenes=new volumen *[maxVol];
for(int i=0;i<maxVol;i++)
volumenes[i]=NULL;
}
void biblioteca::visualizarVolumenes()
{
if(nroVol>0)
for(int i=0; i<nroVol;i++)
volumenes[i]->visualizar();
}