====== 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]]