Está en la página 1de 8

P.O.O.

– POLIMORFISMO
 Polimorfismo significa "implementar múltiples formas de una sola
cosa" todas ellas con el mismo nombre.
 Es la característica importante de la P.O.O., en el momento de la
compilación no se conoce la tarea que se realizara, recién se
conoce durante la ejecución.
 A la tarea a ejecutarse se denomina con el nombre de virtuales.
 El polimorfismo es implementado en C++ por las funciones
virtuales.
Figura

Circulo Triangulo Cuadrado Rectángulo

ALGORITMOS Y ESTRUCTURA DE DATOS 1


P.O.O. – POLIMORFISMO

FUNCIONES VIRTUALES

 Una función virtual es una función miembro de una clase base que
puede ser redefinida en cada una de las clases derivadas de ésta, y una
vez redefinida puede ser accedida mediante un apuntador o referencia
a la clase base, resolviéndose la llamada en función del tipo de objeto
apuntado.

DECLARACION DE UNA FUNCION VIRTUAL

Una función virtual debe seguir la siguiente declaración:

virtual <tipo dato> Nombre Función( <Lista de parámetros Formales>);

ALGORITMOS Y ESTRUCTURA DE DATOS 2


P.O.O. – POLIMORFISMO
//Dado los datos de un circulo y cilindro, se pide implementar el programa
//aplicando herencia y polimorfismo.
#include <iostream>
using namespace std;
const float PI=3.141592653589;
//Clase base
class circulo
{ private:
float radio;
public:
circulo (double);
~circulo();
virtual float Area();
virtual float Perimetro();
};
ALGORITMOS Y ESTRUCTURA DE DATOS 3
P.O.O. – POLIMORFISMO
// Clase derivada
class cilindro:public circulo
{ private:
float altura;
public:
cilindro(float,float);
~cilindro();
float Area();
float Perimetro();
};

//Programa principal
int main()
{ float r, h;cout<<"Ingrese el radio del circulo y la altura del cilindro:";
cin>>r>>h; cilindro P(r,h); circulo Q(r);

ALGORITMOS Y ESTRUCTURA DE DATOS 4


P.O.O. – POLIMORFISMO
circulo *R;
cout<<"Area del Cilindro es:"<<P.Area()<<endl;
cout<<"El perimetro del cilindro es:"<<P.Perimetro()<<endl;
cout<<"Area del Circulo es:"<<Q.Area()<<endl;
cout<<"El perimetro del circulo es:"<<Q.Perimetro()<<endl;
cout<<endl<<"\nMostrando los datos usando punteros\n"<<endl;
R=&P;
cout<<"Area del Cilindro es:"<<R->Area()<<endl;
cout<<"El perimetro del cilindro es:"<<R->Perimetro()<<endl;
R=&Q;
cout<<"Area del Circulo es:"<<R->Area()<<endl;
cout<<"El perimetro del circulo es:"<<R->Perimetro()<<endl;
}

ALGORITMOS Y ESTRUCTURA DE DATOS 5


P.O.O. – POLIMORFISMO
// Implementacion de las funciones miembro de la clase circulo y
cilindro
circulo::circulo(double rad)
{ radio=rad;
}
circulo::~circulo()
{
}

float circulo::Area()
{ return PI*radio*radio;
}
float circulo::Perimetro()
{ return 2*PI*radio;
}

ALGORITMOS Y ESTRUCTURA DE DATOS 6


P.O.O. – POLIMORFISMO

cilindro::cilindro(float rad, float alt):circulo(rad)


{ altura=alt;
}

cilindro::~cilindro()
{
}

float cilindro::Area()
{ return altura*circulo::Perimetro();
}

ALGORITMOS Y ESTRUCTURA DE DATOS 7


P.O.O. – POLIMORFISMO

float cilindro::Perimetro()
{
return 2*(altura+circulo::Perimetro());
}

ALGORITMOS Y ESTRUCTURA DE DATOS 8

También podría gustarte