====== Partie I: Création d'une classe dérivée ====== [[in202:seance_2:td_2|TD complet]] ===== Question n° 1 ===== A partir de la classe ''MyCounter'' que vous avez développé la semaine, une nouvelle ''MyBiDiCounter''. Cette classe doit ajouter deux méthodes à la classe de base : * Une première méthode decrement qui décrémente le compteur, cette méthode correspond au pseudo-code suivant : decrement() si counter > 0 counter <- counter – 1 sinon counter = max; * Une seconde méthode print qui affiche l’état du compteur de la manière suivante. print() affiche "Compteur : " counter "/" max (retour à la ligne) ==== Question n° 1.1 ==== 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''. ==== Question n° 1.2 ==== Ajouter les constructeurs permettant de construire une classe ''MyBiDiCounter''. En fait, il faut faire la distinction entre le constructeur par défaut. Dans ce cas, comme aucun constructeur n'est défini, C++ génère automatiquement le constructeur suivant : ** Indication ** class MyBiDiCounter: public MyCounter { ... public: MyBiDiCounter(): public MyCounter() {} ... }; De même, il génère automatiquement le constructeur de recopie : class MyBiDiCounter: public MyCounter { ... public: MyBiDiCounter(const MyBiDiCounter& aCounter): MyCounter(aCounter) {} ... }; 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 ===== Tester votre nouveau compteur ''MyBiDiCounter'' en utilisant la fonction de test suivante. void testMyBiDiCounter() { MyBiDiCounter counterA(0, 4) counterA.print(); for(int i=0; i < 6; i++) { counterA.increment(); counterA.print(); } for(int i=0; i < 6; i++) { counterA.decrement(); counterA.print(); } } [[.: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]]