/* Definire la classe "Tempo" con un unico dato privato, "sec", che e' l'equivalente in secondi di una tripla (ore, minuti e secondi). Definire i seguenti metodi (oltre costruttori e distruttore): - `ore()': restituisce l'ora (a partire da "sec"); - `minuti()': restituisce i minuti (a partire da "sec"); - `secondi()': restituisce i secondi (a partire da "sec"); - `operator+()': somma di due ore del giorno, quindi di due oggetti "Tempo" (il risultato deve essere sempre un oggetto "Tempo"); - `operator==()': confronta due oggetti "Tempo". - altri metodi che volete... Esempio: il dato privato "sec" contiene 7812. Allora i primi 3 metodi restituiranno rispettivamente 2, 10, 12. Nel main() utilizzare i metodi definiti nella classe. */ #include class Tempo { public: Tempo(); Tempo(int H, int M, int S); ~Tempo(); int ore() const; int minuti() const; int secondi() const; Tempo operator+(const Tempo& T) const; private: int sec; }; Tempo::Tempo() { sec = 0; } Tempo::Tempo(int H, int M, int S) { if (H < 0 || H > 24 || M < 0 || M > 60 || S < 0 || S > 60) // E' una scelta (non bella, vedremo come si puo' migliorare)! sec = 0; else sec = H*3600 + M*60 + S; } Tempo::~Tempo() { // eventuali operazioni in chiusura, in questo caso nessuna. } int Tempo::ore() const { return sec / 3600; } int Tempo::minuti() const { return (sec - ((sec/3600)*3600)) / 60 ; } int Tempo::secondi() const { return sec % 60; } Tempo Tempo::operator+(const Tempo& T) const { Tempo tmp; // 86400 = 3600 * 24 (totale dei secondi in un giorno). tmp.sec = (T.sec + sec) % 86400; return tmp; } int main() { Tempo T1; // invocazione del costruttore di default const Tempo T2(15,10,12); cout << "T1.ore = " << T1.ore() << endl; cout << "T1.minuti = " << T1.minuti() << endl; cout << "T1.secondi = " << T1.secondi() << endl << endl; cout << "T2.ore = " << T2.ore() << endl; cout << "T2.minuti = " << T2.minuti() << endl; cout << "T2.secondi = " << T2.secondi() << endl << endl; T1 = Tempo(12,0,55); T1 = T1 + T2; // equivalente a `T1 = T1.operator+(T2);' cout << "T1.ore = " << T1.ore() << endl; cout << "T1.minuti = " << T1.minuti() << endl; cout << "T1.secondi = " << T1.secondi() << endl << endl; return 0; }