M2103-TP1-Exo3

Remarque préliminaire : cet exercice ne peut être effectué qu’après l’exercice 1 de ce même TP

Si la classe Duree est susceptible d’être utilisée dans plus d’un seul fichier, ce qui est déjà le cas, elle doit en être extraite et mise à la disposition de tout utilisateur.

De ce fait elle ne peut plus appartenir à un espace de noms anonyme.

Comme la norme C++ préconise de ne pas utiliser d’identificateurs globaux, il faut donc placer la classe Duree (déclaration et définition) dans un espace de noms nommé.

La notion de “durée” étant assez générale et non spécifique à un domaine particulier, nous la ferons entrer dans la catégorie des outils et nous la placerons dans l’espace nsUtil.

De plus, la déclaration de la classe sera placée dans un fichier .h susceptible d’être inclus dans tout programme utilisant cette classe.

Les définitions des méthodes seront au contraire regroupées dans un fichier .cpp.

Lorsque le code sera stabilisé (plus d’ajouts ni de modifications) il sera compilé séparément (avec production d’un fichier objet .o) et ajouté à une bibliothèque (library, fichier archive .a).

Créer le projet DureeCompilSeparee.

Y recopier le fichier DureeDeBase.cpp dans les fichiers Duree.h, Duree.cpp et TestDuree.cpp.

Dans le fichier Duree.h, extraire tout ce qui ne concerne pas la déclaration de la classe Duree (voir l’amphi correspondant).
Mettre la classe dans l’espace de noms nsUtil.
Ajouter les directives d’inclusion conditionnelle.

Dans le fichier Duree.cpp, placer tous les corps des fonctions membres (elles appartiennent maintenant à l’espace de noms nsUtil).

Inclure le fichier Duree.h.

Extraire tout ce qui ne concerne pas la définition de la classe Duree.

Du fichier TestDuree.cpp, supprimer tout ce qui concerne la classe Duree et le remplacer par l’inclusion du fichier Duree.h.

Au début de la fonction testDuree(), ajouter la déclaration d’un vector de Duree.

Modifier la boucle de lecture des durées au clavier, pour stocker les objets Duree créés dans le vecteur.

En fin de lecture au clavier, afficher le contenu du vecteur.

Compiler et tester.

N’oubliez pas de sauvegarder tous vos fichiers sources sur github.