Voici votre examen de C++ ZZ2. Lisez tout le sujet avant de commencer : un certain nombre de tests ont été écrits pour être indépendants ou avec peu d'influence sur les autres.
À la fin de l'examen, vous devez laisser un programme qui compile.
Pour plus de simplicité, vous DEVEZ utiliser trois fichiers en plus de main.cpp : tests.cpp, batiment.hpp et batiment.cpp. Ne changez pas la casse et n'ajoutez pas de fichiers, cela casserait la chaine de compilation et engendrerait une note nulle.
Toutes les déclarations seront dans l'entête, les définitions/implémentations seront dans le cpp.
La ligne de compilation est la suivante :
make
Si besoin, vous pouvez faire un make clean. La première compilation de la bibliothèque Catch est un peu longue, comme d'habitude
Ne jamais recommenter un test qui a réussi. Tous les tests décommentés doivent compiler dans le même temps (sauf mention contraire).
Pour garder une trace exécutable de votre programme sans stress supplémentaire :
Vous allez plus ou moins implémenter les diagrammes UML ci-dessous. Toute ressemblance avec un autre examen serait purement fortuite.
Adresse qui permet de représenter une adresse avec un nom, une latitude et une longitude. Les valeurs par défaut donne l'adresse de l'ISIMA [Adresse1]. toStream() qui permet d'envoyer un affichage lisible sur le flux donné en paramètre. On pourra prendre std::cout par défaut. Vous avez vu en TP que pour que l'affichage des nombres réels soient corrects, il faut envoyer std::fixed sur le flux, puis la commande std::setprecision(n) où n est le nombre de chiffres après la virgule souhaités.[Adresse3]On s'intéresse ensuite à la classe Ouvrier dont chaque instance est identifiée de manière unique par l'attribut id
travailler() lève une exception IndisponibleException [Indisponible1]On s'intéresse ensuite à un ouvrier spécialisé à savoir un Chef
Chef qui gère une equipe[Chef1]travailler() lève une exception IndisponibleException [Indisponible2]Chaque ouvrier possède une ou plusieurs spécialités comme le montre le diagramme ci-dessous :
Specialite est une interface au sens C++ [Specialite1]Plomberie, Chauffage et Electricite sont des classes [Specialite2]PlomberieChauffage aussi [Specialite3]Il n'y a pas de fuite mémoire à votre programme !
Préparation du compte (1 fois, au début) :
git config --global user.name "un_nom"
git config --global user.email "un_mail"
Préparation du répertoire :
git init
À chaque nouveau fichier:
git add fichier
git add *
Sauvegarder / Committer :
git commit -am "commentaire"
git log permet d'avoir la liste des sauvegardes avec un numéro de hachage
Pour revenir en arrière :
git checkout numero_de_hash
OU git revert numero_de_hash