User Tools

Site Tools


in202:seance_2:td_2:part_i

Partie I: Création d'une classe dérivée

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.

Correction

Correction

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();
    }
}

Deuxième partie

Ressources

Code présenté pendant le cours

''part1.cpp'' Fichier principal contient les fonctions de test et le main.

''MyCounter.hpp'' Définition de la classe de base MyCounter.

''MyBiDiCounter.hpp'' Définition de la classe dérivée MyBiDiCounter.

Liens vers les éléments syntaxiques C++

in202/seance_2/td_2/part_i.txt · Last modified: 2022/11/18 10:45 (external edit)