This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
in204:tds:sujets:td1:main [2019/09/19 11:47] 77.194.42.247 [Question n°1] |
— (current) | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== TD1 : Introduction aux objets ====== | ||
| - | |||
| - | {{ :in204:1-_in204_-_td1_-_premiers_pas_avec_les_objets.pdf |Format Pdf}} | ||
| - | |||
| - | ===== Partie I – Création du compteur en C++ ===== | ||
| - | |||
| - | |||
| - | ==== Question n° 0 ==== | ||
| - | |||
| - | Lancer votre environnement de développement préféré. | ||
| - | |||
| - | ==== Question n°1 ==== | ||
| - | |||
| - | Créer un ensemble de fichier counter.cpp et conter.hpp pour définir votre classe de base « MyCounter ». | ||
| - | Au départ, seul le fichier ''counter.hpp'' contient le code suivant : | ||
| - | |||
| - | <code cpp> | ||
| - | struct MyCounter | ||
| - | { | ||
| - | unsigned counter; | ||
| - | unsigned max; | ||
| - | |||
| - | unsigned getCounter() const { | ||
| - | return counter; | ||
| - | } | ||
| - | unsigned getMax() const { | ||
| - | return max; | ||
| - | } | ||
| - | |||
| - | void increment() { | ||
| - | counter ++; | ||
| - | if(counter > max) | ||
| - | counter = 0; | ||
| - | } | ||
| - | |||
| - | void reset() { | ||
| - | counter = 0; | ||
| - | } | ||
| - | |||
| - | void set(unsigned value) { | ||
| - | counter = (value <= max) ? value : counter; | ||
| - | } | ||
| - | |||
| - | void setMax(unsigned value) { | ||
| - | if(counter >= value) | ||
| - | counter = 0; | ||
| - | max = value;; | ||
| - | } | ||
| - | |||
| - | MyCounter() | ||
| - | { | ||
| - | counter = 0; | ||
| - | max = value ; | ||
| - | } | ||
| - | } | ||
| - | </code> | ||
| - | |||
| - | ==== Question n°2 ==== | ||
| - | |||
| - | Créer une fonction ''useObjectA()'' dans le fichier main.cpp reprenant le code présenté sur les transparents : | ||
| - | |||
| - | <code cpp> | ||
| - | void useObjectA() { | ||
| - | MyCounter Counter1; | ||
| - | MyCounter Counter2; | ||
| - | Counter1.setMax(2); | ||
| - | Counter2.setMax(4); | ||
| - | Counter1.reset(); | ||
| - | Counter2.reset(); | ||
| - | for(unsigned i = 0; i <= 5; i++) { | ||
| - | std::cout | ||
| - | << "Valeur des compteurs (" << Counter1.counter | ||
| - | << ", " << Counter2.counter << ")" << std::endl; | ||
| - | Counter1.increment(); | ||
| - | Counter2.increment(); | ||
| - | } | ||
| - | } | ||
| - | </code> | ||
| - | |||
| - | ==== Question n°3 ==== | ||
| - | |||
| - | Vérifier que le code de ''useObjectA()'' fonctionne correctement. | ||
| - | |||
| - | ==== Question n°4 ==== | ||
| - | |||
| - | Le code des fonctions membres a été écrit directement dans la ''struct MyCounter''. | ||
| - | |||
| - | Modifier le code pour séparer la déclaration des fonctions membres de leurs implantations. | ||