Exercice donné en test le 09/02/2006
Remarques préliminaires
-
Dans le calendrier grégorien que nous utilisons :
-
les années divisibles par 4 sont bissextiles,
-
les années divisibles par 100 ne sont pas bissextiles,
-
les années divisibles par 400 sont bissextiles.
-
Téléchargez le fichierTestDate
TestCDate.cpp
.
Créez le projet Date
.
Dans les fichiers Date.h
et Date.cpp
, déclarer et définir la classe Date
, de l’espace de noms nsUtil
dont le diagramme de classe
est
, qui a les caractéristiques suivantes :
-
quatre données membres : jour, mois, année, et un booléen indiquant si l’année est bissextile.
Par défaut, les trois premières données-membres sont nulles, la quatrième est fausse.
Remarques
-
Une date ne peut avoir que les trois premières données-membres toutes nulles (la date est considérée comme non initialisée, et la donnée-membre “année bissextile” est fausse), soit toutes valides.
-
Une date est considérée comme valide si :
– l’année est dans l’intervalle
[1900, 2021]
,
– le mois est dans l’intervalle[1, 12]
,
– le jour est dans l’intervalle[1, xx]
, où xx dépend du mois et de l’année (bissextile ou pas).
-
-
un constructeur public, qui initialise correctement les données-membres à partir des valeurs des paramètres (jour, mois, an).
Si les valeurs des paramètres sont incohérentes, les données-membres doivent prendre les valeurs par défaut.
Le constructeur doit pouvoir servir de constructeur par défaut.
-
la fonction-membre publique
reset()
qui redonne à toutes les données-membres les valeurs par défaut, -
la fonction-membre
getQuantieme()
qui renvoie le numéro du jour de la date enregistrée dans l’année, dans l’intervalle ou[1, 365]
.[1, 366]
La fonction renvoie
0
si la date est invalide. -
la fonction-membre
getLaVeille()
qui renvoie la date (objetDate
de la veille de la date courante), -
la fonction-membre
display()
qui affiche à l’écran la date enregistrée dans l’un des deux formats suivants (se conformer rigoureusement au format de l’exemple) :1 février 2000 01/02/2000
selon la valeur de son paramètre booléen (la seconde forme d’affichage par défaut).
L’affichage d’une date invalide apparaît ainsi :
date invalide
Dans l’espace de noms anonyme du fichier Date.cpp
, définir un tableau contenant le nombre de jours de chaque mois, et un autre tableau contenant le libellé de chaque mois.
Dans l’espace de noms anonyme du fichier Date.cpp
, ajouter la fonction getNbJoursDuMois()
qui renvoie le nombre de jours du mois (dans l’intervalle [1, 12]
) qui lui est passé en premier paramètre, selon que l’année est bissextile ou pas (booléen qui lui est passé en second paramètre).
Dans le fichier Date.cpp
, écrire les corps des fonctions-membres de la classe; les fonctions getQuantieme()
et getLaVeille()
doivent appeler la fonction getNbJoursDuMois()
.
Pour essayer quelques dates, tester par exemple avec ce calendrier universel.