Table of Contents

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

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 :

decrement()
    si counter > 0
    	counter <- counter – 1
    sinon
        counter = max;
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++

Héritage & Dérivation de classe

Champs & methodes dans les classes dérivées

La surcharge de fonctions en C++

Deuxième partie