Esercizio 3
Scrivi una classe D (data) i cui oggetti possano essere inizializzati come: d(22,08,01); implementare il costruttore, il metodo out() per la stampa a video, il metodo mod(gg,mm,aa) per consentirne la modifica e un metodo val() per consentire la validazione della data .
#include<iostream>
using namespace std;
class D {//(contatore)
int g,m,a;
bool val(int d,int m, int y);
public:
void out();
void mod(int gg,int mm,int aa);
D(int gg,int mm,int aa);//costruttore
};
bool D::val(int d,int m, int y){
if((d > 31) || (m > 12))return 0;
else if((m==11 || m==4 || m==6 || m==9) && d > 30)return 0;
else if(y/4!=0 && m==2 && d > 28)return 0;
else return 1;
}
void D::out(){
if(g==0)cout << "data non valida";
else cout << endl << g << "." << m << "." << a << endl;
}
void D::mod(int gg,int mm,int aa){//modificatore
if(val(gg,mm,aa)){g=gg;m=mm;a=aa;}
}
D::D(int gg,int mm,int aa){//costruttore
if(val(gg,mm,aa)){g=gg;m=mm;a=aa;}
else{a=0;g=0;m=0;}
}
main(){
D d(11,2,70);//istanzio
l'oggetto d di tipo D
d.out();
d.mod(29,2,70);
d.out();
d.mod(22,8,95);
d.out();
}//__________fine main
abbiamo dovuto implementare anche un metodo out()
per effettuare la lettura di degli attributi g,m,a
altrimenti non visibili dato che sono privati.
Per questioni di leggibilità abbiamo usato il modificatore di visibilità :: lasciando all'interno del corpo della classe solo i prototipi dei metodi, implementando questi ultimi fuori dal corpo stesso.