Está en la página 1de 2

Universidad Nacional Experimental

“Francisco de Miranda”
Área Ciencias de la Educación
Programa: Educación Mención: Informática
Departamento de Informática y Tecnología Educativa
Unidad Curricular: Computación III

Polimorfismo: Se refiere a comportamientos diferentes, asociados a objetos distintos,


pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el
comportamiento correspondiente al objeto que se esté usando. O dicho de otro modo,
las referencias y las colecciones de objetos pueden contener objetos de diferentes
tipos, y la invocación de un comportamiento en una referencia producirá el
comportamiento correcto para el tipo real del objeto referenciado. Cuando esto
ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o
asignación dinámica.
Para la implementación de polimorfismo en C++ se utiliza un tipo especial de
función denominada función virtual. Una función virtual es el mecanismo por el que
las clases derivadas pueden redefinir funciones de las clases base. Para crear una
función virtual en un programa en C++ puede declarar la función utilizando la palabra
reservada virtual, como muestra la siguiente línea de código:
virtual void nombre_de_la_funcion();

La función se declara como virtual en la clase base. En las clases derivadas sólo se
coloca el nombre de la función.

Características del Polimorfismo


 Permite diferentes objetos respondan de manera diferente al mismo mensaje.
 Su efectividad va ligada a la herencia

Ejemplo: utilización de una función virtual


En el siguiente código se demuestra la utilización de funciones virtuales miembro. Se
declara una clase base llamada clasebase y una función derivada, dericlase, cada una
de las cuales define una versión diferente de una función de miembro llamada
mostrar. La función clasebase::mostrar es una función miembro virtual y
dericlase::mostrar es una función que redefine clasebase::mostrar.
#include <iostream> #include <iostream>
using namespace std; using namespace std;
class clasebase class clasebase
{ {
//miembros de la clase base //miembros de la clase base
public: public:
virtual void mostrar() { cout << 100 <<endl; } virtual void mostrar() { cout << (5+4); }
}; };

class dericlase: public clasebase class dericlase: public clasebase


{ {
//miembros de la clase derivada //miembros de la clase derivada
public: public:
void mostrar() { cout << 200 << "\n"; } void mostrar() { cout << (9/3); }
}; };

void funcion( clasebase *obj) void funcion( clasebase *obj)


{ {
obj->mostrar(); obj->mostrar();
} }

int main() int main()


{ {
clasebase *N=new clasebase; clasebase *N=new clasebase;
dericlase *M=new dericlase; dericlase *M=new dericlase;
funcion(N); funcion(N);
funcion(M); funcion(M);
system(“pause”); system(“pause”);
return 0; return 0;
} }

También podría gustarte