L’objectif de cet exercice est de construire une ébauche d’une classe permettant de gérer une durée de temps (un délai), exprimé soit en secondes, soit en jours, heures, minutes et secondes.
Les normes IUT de programmation C++ devront être respectées : identificateurs des données membres (myData
), identificateurs des paramètres (Data
, terminaisons des classes}; // CX
, …).
Création du projet
Créez le projet DureeDeBase
(avec QT Creator).
Etape 1
Dans l’espace de noms anonyme du fichier main.cpp
, déclarer la classe Duree
dont le diagramme de classe est
, qui possède les données membres suivantes :
-
la durée en secondes (toujours positive ou nulle, et la plus grande possible),
-
le nombre de jours, d’heures, de minutes et de secondes correspondants (choisir les types les mieux adaptés).
et les fonctions membres suivantes :
-
un constructeur dont l’unique paramètre est le nombre de secondes de la durée,
-
une fonction membre
qui affiche à l’écran la durée sous la forme suivante (sans retour chariot, pour pouvoir compléter l’affichage) :display()
0 jour(s) 0 heure(s) 1 minute(s) 40 seconde(s) 12 jour(s) 23 heure(s) 59 minute(s) 9 seconde(s)
Comme le montre l’exemple ci-dessus, prévoir pour les zones numériques un format tel qu’elles soient alignées verticalement (rappel en utilisant le manipulateur standard
setw()
.On pourra simplifier l’affichage en utilisant les unités
h.
,j.
min.
,s.
au lieu dejour
,heure
,minute
,seconde
. -
une fonction membre
qui transforme en jours, heures, etc., toute durée exprimée en secondes.normaliser()
Cette fonction ne devrait être accessible qu’à des fins internes.
Les définitions (corps) de toutes les fonctions membres devront être faites en dehors de la déclaration de la classe.
Attention à utiliser à bon escient le qualificatif const
.
Avant de continuer à développer cette classe, tester ces trois premières fonctions membres.
Pour cela, écrire la fonction testDureeDeBase()
Duree
initialisé à la valeur lue et l’affiche à l’écran.
Compiler et tester.
Lorsque les résultats vous sembleront justes, vous devez ouvrir un terminal et vous placer dans le répertoire où se trouve l’exécutable de votre projet.
Téléchargez-y le fichier FichDurees.
Testez à nouveau votre programme en redirigeant le fichier FichDurees
sur le flux d’entrée standard et comparez vos résultats avec ceux qui sont indiqués ci-dessous.
Seconde étape
Vous pouvez maintenant enrichir la classe avec :
-
la fonction membre
qui renvoie la valeur de la donnée membre correspondante,getDuree()
-
les fonctions membres
etincr()
qui augmentent ou diminuent la durée de l’objet de la valeurdecr()
delta
passée en paramètre.On considère pour le moment que si
delta
est supérieur à la valeur courante de la durée, le résultat de est une durée nulle.decr(Delta)
En fin de fonction testDureeDeBase()
Duree d1 (0); d1.incr (1); cout << "Nbre sec. " << setw (6) << d1.getDuree () << ", soit : "; d1.display (); cout << '\n'; d1.decr (1); cout << "Nbre sec. " << setw (6) << d1.getDuree () << ", soit : "; d1.display (); cout << '\n'; d1.incr (3662); cout << "Nbre sec. " << setw (6) << d1.getDuree () << ", soit : "; d1.display (); cout << '\n'; d1.decr (10000); cout << "Nbre sec. " << setw (6) << d1.getDuree () << ", soit : "; d1.display (); cout << '\n';
N’oubliez pas de sauvegarder tous vos fichiers sources sur github.