User Tools

Site Tools


in202:seance_2:td_2:part_i

This is an old revision of the document!


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.

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();
    }
}
in202/seance_2/td_2/part_i.1616915109.txt.gz · Last modified: 2021/03/28 07:05 by bmonsuez