Ho creato una classe astratta FiguraSolida che eredita dalla classe astratta Figura!
Sembra che sia tutto ben fatto:
#include "iostream"
using namespace std;
class Figura{
protected:
int base,altezza;
public:
Figura(){}
Figura(int b,int a){
base=b;altezza=a;
}
virtual int area()=0;
};
class Quadrato:public Figura{
public:
Quadrato(int b){
base=b;
}
int area(){
return base*base;
}
};
class Rettangolo:public Figura{
public:
Rettangolo(int b, int a):Figura(b,a){}
int area(){
return base*altezza;
}
};
class Triangolo:public Figura{
public:
Triangolo(int b, int a):Figura(b,a){}
int area(){
return base*altezza/2;
}
};
class FiguraSolida:public Figura{
protected:
int profondita;
public:
FiguraSolida(int b, int a, int p){
base=b;
altezza=a;
profondita=p;
}
virtual int volume()=0;
};
class Parallelepipedo:public FiguraSolida{
public:
Parallelepipedo(int b, int a, int p):FiguraSolida(b,a,p){
}
int area(){
return base*altezza;
}
int volume(){
return area()*profondita;
}
};
void StampaArea(Figura *fig){
cout << fig->area() << endl;
getchar();
}
void main(){
Parallelepipedo par(3,4,5);
cout << par.volume() << endl;
cout << par.area() << endl;
getchar();
}
60 12E infatti ho il volume del parallelepipedo 3 * 4 * 5 =60, e l'area della base 3 * 4 = 12.
Nessun commento:
Posta un commento