Créer le projet ReseauSocial
.
Depuis C++11
, C++
offre une bibliothèque ctime
, qui permet de grossièrement gérer l’heure et la date. Cette bibliothèque reprend les structures du C
, dans l’espace de nom std
. Pour obtenir la date du jour, il faut procéder en 2 étapes. D’abord, récupérer le nombre de secondes écoulées depuis le 01/01/1970, à l’aide de la fonction time()
de profil (simplifié)
time (time_t * t);
qui s’utilise comme suit :
time_t t; time (&t);
Ensuite,on transforme le time_t
en une structure struct tm
(rappel: struct
classe où tout est publique par défaut) à l’aide de la fonction localtime()
de profil
tm * localtime (time_t * t);
qui transforme t
, le nombre de secondes écoulées depuis le 01/01/1970, en une tm
et s’utilise comme suit :
tm local = * localtime (& t);
nous allons encapsuler cette struct tm
dans la classe Date
, comme sur le schéma UML
suivant, de manière à interdire, à l’utilisateur qui utiliserait cette classe Date
, l’accès aux attributs de la struct tm
:
On ajoutera à cette classe Date
un constructeur par défaut qui construit une Date
avec la date du jour.
Travail demandé
Ecrire complètement les fichiers Date.h
et Date.cpp
qui contiennent respectivement les déclarations et les définitions de la classe Date
correspondant au schéma et aux explications, dans l’espace de noms std
.
Tester en ajoutant la fonction suivante à l’espace de noms anonyme de votre main.cpp
:
void testDate (void) { Date date; cout << "Aujourd'hui nous sommes le : " << date.getDay () << ' ' << date.getMonth () << ' ' << date.getYear () << " et il est " << date.getHour () << "h " << date.getMinute () << "mn et " <Petit problème, le mois est le mois dernier et l'année est n'importe quoi. Voici ce que dit le
man
sur les attributs mis en cause dans lestruct tm
:struct tm { int tm_sec; /* Seconds (0-60) */ int tm_min; /* Minutes (0-59) */ int tm_hour; /* Hours (0-23) */ int tm_mday; /* Day of the month (1-31) */ int tm_mon; /* Month (0-11) */ int tm_year; /* Year - 1900 */ int tm_wday; /* Day of the week (0-6, Sunday = 0) */ int tm_yday; /* Day in the year (0-365, 1 Jan = 0) */ int tm_isdst; /* Daylight saving time * / };Corriger dans les 2 accesseurs concernés et tester à nouveau.