User Tools

Site Tools


in202:seance_2:td_2:part_i

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
in202:seance_2:td_2:part_i [2021/03/28 07:04]
bmonsuez created
in202:seance_2:td_2:part_i [2025/04/07 07:49] (current)
bmonsuez [Question n° 1.1]
Line 1: Line 1:
 +====== Partie I: Création d'une classe dérivée ======
  
-[[in202:​seance_2:​td_2|Sujet de TD]]+[[in202:​seance_2:​td_2|TD ​complet]]
  
-==== Question n° 1 ====+===== Question n° 1 =====
  
 A partir de la classe ''​MyCounter''​ que vous avez développé la semaine, une nouvelle ''​MyBiDiCounter''​. ​ A partir de la classe ''​MyCounter''​ que vous avez développé la semaine, une nouvelle ''​MyBiDiCounter''​. ​
Line 26: Line 27:
  
 Ajouter les fonctions membres (méthodes) ''​decrement()''​ et ''​print()''​. Indiquer si ces méthodes modifient les champs de l'​objet ou pas en ajoutant le qualificateur ''​const''​. Ajouter les fonctions membres (méthodes) ''​decrement()''​ et ''​print()''​. Indiquer si ces méthodes modifient les champs de l'​objet ou pas en ajoutant le qualificateur ''​const''​.
 +
 +<hidden Correction>​
 +
 +<code cpp>
 +class MyCounter
 +{
 +    protected:
 +        int _counter;
 +        int _max;
 +
 +    public:
 +        MyCounter():​ _counter(0),​ _max(0) {}
 +        explicit MyCounter(int theMaxValue):​ _counter(0),​ _max(theMaxValue) {}
 +        MyCounter(int theCounterValue,​ int theMaxValue):​
 +            _counter(0),​ _max(theMaxValue) ​
 +            {}
 +        MyCounter(const MyCounter&​ anotherCounter): ​
 +            _counter(anotherCounter._counter), ​
 +            _max(anotherCounter._max) ​
 +            {}
 +
 +        int getCounter() const { return _counter; }
 +        int getMax() const { return _max; }
 +
 +        void increment() ​
 +        {
 +            _counter = _counter < _max ? _counter + 1 : 0;
 +        }
 +};
 +
 +class MyBiDiCounter:​ public MyCounter
 +{
 +    public:
 +        void decrement()
 +        {
 +            _counter = _counter > 0 ? _counter -1 : _max;
 +        }
 +
 +        void print()
 +        {
 +            std::cout << "​("​ << _counter << "/"​ << _max << "​)"​ << std::endl;
 +        }
 +};
 +</​code>​
 +
 +</​hidden>​
 +
  
 ==== Question n° 1.2 ==== ==== Question n° 1.2 ====
Line 58: Line 106:
 Si nous voulons utiliser les constructeurs de ''​MyCounter(int)''​ et ''​MyCounter(int,​ int)'',​ il faut redéfinir des constructeurs ''​MyBiCounter(int)''​ et ''​MyBiCounter(int,​ int)''​. Si nous voulons utiliser les constructeurs de ''​MyCounter(int)''​ et ''​MyCounter(int,​ int)'',​ il faut redéfinir des constructeurs ''​MyBiCounter(int)''​ et ''​MyBiCounter(int,​ int)''​.
  
-==== Question n°2 ==== +===== Question n°2 =====
  
 Tester votre nouveau compteur ''​MyBiDiCounter''​ en utilisant la fonction de test suivante. Tester votre nouveau compteur ''​MyBiDiCounter''​ en utilisant la fonction de test suivante.
Line 81: Line 129:
 </​code>​ </​code>​
  
 +[[.:​part_ii|Deuxième partie]]
 +===== Ressources =====
 +
 +==== Code présenté pendant le cours ====
 +
 +{{https://​perso.ensta-paris.fr/​~bmonsuez/​Media/​code/​in202/​2021/​td2/​part1/​part1.cpp|''​part1.cpp''​}} Fichier principal contient les fonctions de test et le main.
 +
 +{{https://​perso.ensta-paris.fr/​~bmonsuez/​Media/​code/​in202/​2021/​td2/​part1/​MyCounter.hpp|''​MyCounter.hpp''​}} Définition de la classe de base ''​MyCounter''​.
 +
 +{{https://​perso.ensta-paris.fr/​~bmonsuez/​Media/​code/​in202/​2021/​td2/​part1/​MyBiDiCounter.hpp|''​MyBiDiCounter.hpp''​}} Définition de la classe dérivée ''​MyBiDiCounter''​.
 +
 +==== Liens vers les éléments syntaxiques C++ ====
 +
 +[[cpp:​syntax:​class:​deriving|Héritage & Dérivation de classe]]
 +
 +[[cpp:​syntax:​class:​deriving:​methods|Champs & methodes dans les classes dérivées]]
 +
 +[[cpp:​syntax:​functions:​overload|La surcharge de fonctions en C++]]
 +
 +===== Navigation =====
  
 +[[.:​part_ii|Deuxième partie]]
in202/seance_2/td_2/part_i.1616915061.txt.gz · Last modified: 2021/03/28 07:04 by bmonsuez