User Tools

Site Tools


in204:tds:sujets:td2:part3

This is an old revision of the document!


Partie III – Surcharge & Masquage

TD2

Nous repartons du code de MyBiDiCounter tel défini à la fin de la question 1 de la partie II.

Question n°1

Ajouter à la classe MyBiDiCounter une nouvelle méthode :

increment(unsigned value)
    si counter + value <= max
        counter <- counter + value
    sinon
        counter = (counter + value) mod max

<hidden Correction>

class MyBiDiCounter: public MyCounter
{
public:
    MyBiDiCounter(): MyCounter() {}
    explicit MyBiDiCounter(unsigned theMax):
        MyCounter(theMax)
    {}
    MyBiDiCounter(unsigned theCounter,
        unsigned theMax): MyCounter(theCounter, theMax)
    {}
    MyBiDiCounter(const MyBiDiCounter& anotherCounter):
        MyCounter(anotherCounter.counter)
    {}
 
    void decrement()
    {
        if(counter == 0)
            counter = max;
        else
            counter --;
    }
 
    void increment(unsigned value)
    {
        if(counter + value < max)
            counter += value;
        else
            counter = (counter + value) % max;
    }
    void print() const
    {
        std::cout << "Compteur: " << counter << "/" << max << std::endl;
    }
};

Question n°2

Tester le bon fonctionnement de cette classe à partir du code suivant :

void testNewIncMethod() {
    MyBiDiCounter bidiCounter1(0, 5);
    for(unsigned i = 0; i <= 5; i++) 
    {
	  bidiCounter1.increment(5);
        bidiCounter1.print();
    }
}

Question n°3

Tester le code suivant.

void testOldIncMethod() {
    MyBiDiCounter bidiCounter1(0, 5);
    for(unsigned i = 0; i <= 5; i++) 
    {
        bidiCounter1.increment();
        bidiCounter1.print();
    }
}

Expliquer pourquoi cela ne fonctionne pas ? Proposer une modification de l’appel pour que cela puisse fonctionner.

Question n°4

Modifier la classe MyBiDiCounter de manière à ce que les deux méthodes soient accessibles, à la fois la méthode increment() et la méthode increment(unsigned).

Tester ensuite que le code initial de la fonction testOldIncMethod().

in204/tds/sujets/td2/part3.1569954591.txt.gz · Last modified: 2019/10/01 18:29 by bmonsuez