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. | ||