martedì 12 agosto 2014

Classe astratta derivata da un'altra classe astratta.

Grandioso!

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
12


E infatti ho il volume del parallelepipedo 3 * 4 * 5 =60, e l'area della base 3 * 4 = 12.

Nessun commento:

Posta un commento