====== Partie IV : Méthodes virtuelles ====== [[in202:seance_2:td_2|TD complet]] ===== Question n° 1 ====== Ajouter à la classe ''BaseCounter'' deux nouvelles méthodes virtuelles pures ''next()'', resp. ''next(unsigned)''. Ces deux méthodes purement virtuelles ont pour objet d’appeler les méthodes par défaut pour passer à la valeur suivante. Typiquement, pour un compteur qui compte, ce seront les méthodes ''increment()'' et ''increment(unsigned)''. Pour un compte qui décompte, ce seront les méthodes ''decrement()'' et ''decrement(unsigned)''. ===== Question n° 2 ====== Ajouter aux classes ''ForwardCounter'' et ''BackwardCounter'', deux nouvelles méthodes ''next()'', resp. ''next(unsigned)''. Cette méthode ''next()'' (resp. ''next(unsigned)'') appellera la méthode ''increment()'', (resp. ''increment(unsigned)'') pour la classe ''ForwardCounter''. cette méthode ''next()'' (resp. ''next(unsigned)'') appellera la méthode ''decrement()'', resp. ''decrement(unsigned)'' pour la classe ''BackwardCounter''. ===== Question n°3 ===== Tester le comportement de vos compteurs à partir du code suivant void testCounter(BaseCounter& aCounter) { for(int i=0; i < 6; i++) { aCounter.next(); aCounter.print(); } } void testFamilyOfCounters() { ForwardCounter incCounter(0, 4); BackwardCounter decCounter(3, 5); testCounter(incCounter); testCounter(decCounter); } ===== Ressources ===== ==== Code présenté pendant le cours ==== {{https://perso.ensta-paris.fr/~bmonsuez/Media/code/in202/2021/td2/part4/part4.cpp|''part4.cpp''}} Fichier principal contient les fonctions de test et le main. {{https://perso.ensta-paris.fr/~bmonsuez/Media/code/in202/2021/td2/part4/BaseCounter.hpp|''BaseCounter.hpp''}} Définition de la classe de base ''BaseCounter''. {{https://perso.ensta-paris.fr/~bmonsuez/Media/code/in202/2021/td2/part4/ForwardCounter.hpp|''ForwardCounter.hpp''}} Définition des classes ''ForwardCounter'' et ''BackwardCounter''. ==== Liens vers les éléments syntaxiques C++ ==== [[cpp:syntax:class:deriving|Héritage & Dérivation de classe]] [[cpp:syntax:class:deriving:constructor|Contructeurs dans les classes dérivées]] [[cpp:syntax:class:deriving:methods|Méthodes dans les classe dérivées]] [[cpp:syntax:class:deriving:virtual_methods|Méthodes virtuelles]] ===== Navigation ===== [[.:part_iii|Troisième partie]]