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
0si la date est invalide. -
la fonction-membre
getLaVeille()qui renvoie la date (objetDatede 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.