#include using namespace std; #include class Rettangolo { //Rettangolo e' il nome di un nuovo tipo private: // non serve perche' nelle classi e' tutto privato di default double x, y; //sono dati privati e quindi accessibili solo ad altri metodi della stessa classe double semiperimetro () {return (x+y);} public: void set_values (double, double); // dichiarazione di questo metodo pubblico. Questo invia un messaggio all'oggetto double area () {return (x*y);} // Qui definisco gia' la funzione area !! double perimetro() {return 2*(x+y);} //dichiarazione di questo metodo double perimetrobis () { return ( 2*semiperimetro() ); } }; void Rettangolo::set_values (double a, double b) { x=a; y=b; } int main () { Rettangolo ret1, ret2;//creo due oggetti (due istanze) di tipo Rettangolo ret1.set_values (2.1,3.6); cout << "area = " << ret1.area() << " perimetro = " << ret1.perimetro() << endl; ret2.set_values (5.0, 6.0); cout << "area = " << ret2.area() << " perimetro = " << ret2.perimetro() << endl; // cout << "accedi e stampa un dato privato " << ret1.x << endl; /*Se scommento questa istruzione ho un errore perche' il programma non puo' accedere a ret1.x perche' x e' privato. A queste quantita' private si puo' accedere con un funzione membro che sia pubblica (tipo set_values o area!) */ // cout << "Tento di accedere ad una funzione membro (metodo) privato " << ret1.semiperimetro(); //errore !!!! cout << "Posso accedere ad una funzione membro (metodo) privato tramite una funzione membro pubblica = " << ret1.perimetrobis() << endl; //corretto !!!! return (0); }