lunes, 28 de septiembre de 2015

Polimorfismo

El polimorfismo permite que un mismo nombre de una función se comporte diferente en una clase base  y una clase derivada. Sucede que existe una anulación de la función miembro de la clase base ,usando la sobrecarga en una funcion miembro de la clase derivada. El uso de funciones virtuales permiten este comportamiento dependiendo que objeto lo invoca.

Ejemplo:
Codificación Codeblocks

#include <iostream>
using namespace std;
class Figura
{
public:
    virtual double area();
    virtual void imprimeNombreFigura();
    virtual void imprimeFigura();
};
double Figura::area()
{
    return 0.0;
}
void Figura::imprimeFigura()
{
    cout<<" \n";
}
void Figura::imprimeNombreFigura()
{
    cout<<"   \n";
}
class Circulo: public Figura
{
protected:
    double radio;
public:
    Circulo(double );
    void estRadio(double);
    double obtenerRadio();
    virtual double area();
    virtual void imprimeNombreFigura();
    virtual void imprimeFigura();
};
Circulo::Circulo(double rad)
{
    radio=rad;
}
 void Circulo::estRadio(double r)
 {
     radio=r;
 }
 double Circulo::obtenerRadio()
 {
     return radio;
 }
 double Circulo::area()
 {
     return 3.1416*radio*radio;
 }
void Circulo::imprimeNombreFigura()
{
    cout<<"Figura : CIRCULO\n\n";
}
void Circulo::imprimeFigura()
{
    cout<<"       *"<<endl;
    cout<<"    *     *"<<endl<<endl;
    cout<<"   *        *"<<endl<<endl;
    cout<<"    *     *"<<endl;
   cout<<"       *"<<endl;
}
int main()
{
    Figura f1;
    Circulo c1(25.00);
    c1.imprimeNombreFigura();
    c1.imprimeFigura();
    cout<<"Datos: \n";
    cout<<"Radio: "<<c1.obtenerRadio()<<endl;
    cout<<"Area: "<<c1.area()<<endl;

    return 0;
}

No hay comentarios:

Publicar un comentario