miércoles, 30 de septiembre de 2015

Clases Abstractas

Las clases abstractas sirven para proporcionar clase base, a partir las clases pueden heredan sus datos y funciones miembro. No se pueden generar objetos para este tipo de clases.
Cuando se hereda una clase abstracta, se tiene que implementar todas las funciones virtuales, o la clase que se hereda se convierte en una nueva clase abstracta

Ejemplo
Codificación CodeBlocks

#include <iostream>
using namespace std;
class Figura
{
public:
    virtual void dibujaFigura() ;
    virtual void nombreFigura() ;
    virtual double areaFigura()  ;
    virtual void mostrarDatosFigura() ;
};
void Figura::nombreFigura()
{}
double Figura::areaFigura()
{ }
void Figura::mostrarDatosFigura() { }
class Rectangulo:public Figura
{
    protected:
    double largo;
    double ancho;
    public:
        Rectangulo();
        Rectangulo(double, double);
        virtual void dibujaFigura() ;
        virtual void nombreFigura() ;
        virtual double areaFigura() ;
        virtual void mostrarDatosFigura() ;
};
Rectangulo::Rectangulo()
{
    largo=0;
    ancho=0;
}
Rectangulo::Rectangulo(double la,double an)
{
    largo=la;
    ancho=an;
}
 void Rectangulo::dibujaFigura()
{
    cout<<"\t********************\n";
    cout<<"\t*                                    *\n";
    cout<<"\t*                                    *\n";
    cout<<"\t*                                    *\n";
    cout<<"\t********************\n";
}
 void Rectangulo::nombreFigura()
 {
    cout<<"\tRECTANGULO\n\n";
}
double Rectangulo::areaFigura()
{
    return largo*ancho;
}
void Rectangulo::mostrarDatosFigura()
 {
    cout<<"\tDatos Rectangulo\n";
    cout<<"\tLargo = "<<largo<<endl;
    cout<<"\tAncho = "<<ancho<<endl;
    cout<<"\tArea = "<<areaFigura()<<endl;
}
int main()
{
   Rectangulo r1(20,10);
   r1.nombreFigura();
   r1.dibujaFigura();
   r1.mostrarDatosFigura();
    return 0;
}

No hay comentarios:

Publicar un comentario