martedì 12 agosto 2014

Classe astratta Figura geometrica e sue derivate Rettangolo e Triangolo in C++. (esercizio elementare)

Bene...

E dopo aver elucubrato in modo piuttosto ossessivo con i concetti di cui sopra e anche più, dopo essermi convinto che avevo capito davvero la cosa nonostante il mio parere contrario, inizio a mimare la realtà con il C++.

Ho un concetto astratto di Figura geometrica, che si concretizza in due concetti concreti di rettangolo e triangolo:
#include "iostream"
using namespace std;


class Figura{
protected:
 int base,altezza;
public:
 Figura(int b,int a){
  base=b;altezza=a;
 }
 virtual int area()=0;
};

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;
 }
};

void StampaArea(Figura *fig){
 cout << fig->area() << endl;
 getchar();
}

void main(){
 Rettangolo rect(3,4);
 Triangolo tri (3,4);
 StampaArea(&rect);
 StampaArea(&tri);

} 
La funzione StampaArea si serve del polimorfismo accettando come parametro un puntatore del tipo classe base astratta genitrice delle classi Rettangolo e Triangolo.
Mi sembra tutto privo di problemi...
12

6


Nessun commento:

Posta un commento