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

Deuxième partie

Ressources

Code présenté pendant le cours

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

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

''ForwardCounter.hpp'' Définition des classes ForwardCounter et BackwardCounter.

Liens vers les éléments syntaxiques C++

in202/seance_2/td_2/part_i.1617271048.txt.gz · Last modified: 2021/04/01 09:57 by bmonsuez