This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
in204:tds:sujets:td2:part4 [2019/10/01 19:39] bmonsuez [Question n°2] |
in204:tds:sujets:td2:part4 [2022/11/18 10:49] (current) |
||
---|---|---|---|
Line 49: | Line 49: | ||
La méthode ''increment'' va masquer la classe ''MyCounter::increment'' dans la classe ''MyAdvCounter''. Cependant, la méthode ''increment'' reste présente, elle n'est pas remplacée, elle est simplement 'cachée' ou 'masquée'. Il sera toujours possible de l'appeller en préfixant le nom de la fonction ''increment()'' par ''MyCounter::increment()''. | La méthode ''increment'' va masquer la classe ''MyCounter::increment'' dans la classe ''MyAdvCounter''. Cependant, la méthode ''increment'' reste présente, elle n'est pas remplacée, elle est simplement 'cachée' ou 'masquée'. Il sera toujours possible de l'appeller en préfixant le nom de la fonction ''increment()'' par ''MyCounter::increment()''. | ||
- | |||
</hidden> | </hidden> | ||
Line 72: | Line 71: | ||
<hidden Correction> | <hidden Correction> | ||
+ | |||
Le compteur une fois la valeur ''4'' atteinte reste à la valeur ''4''. | Le compteur une fois la valeur ''4'' atteinte reste à la valeur ''4''. | ||
Line 93: | Line 93: | ||
Tester la méthode en passant à la fonction ''testCounter'' un compteur de type ''MyCounter'' et un compteur de type ''MyAdvCounter''. Expliquer le comportement de la fonction pour chacun des types de compteur. | Tester la méthode en passant à la fonction ''testCounter'' un compteur de type ''MyCounter'' et un compteur de type ''MyAdvCounter''. Expliquer le comportement de la fonction pour chacun des types de compteur. | ||
+ | |||
+ | <hidden Correction> | ||
+ | |||
+ | |||
+ | En fait, c'est la méthode ''MyCounter::increment'' qui est appelé et non pas la méthode ''MyAdvCounter::increment''. Pourquoi donc ? | ||
+ | |||
+ | En fait, nous avons transformé un objet de type ''MyAdvCounter'' en objet ''MyCounter''. De ce fait, ce sont les méthodes visibles et accessibles par ''MyCounter'' qui sont appellées. En effet, les méthodes définies dans l'objet ''MyAdvCounter'' ne sont pas visibles et accessibles dans ''MyCounter'', elles sont situés en dehors de la définition de l'objet. Donc même si l'objet auquel je fais référence est un objet qui contient des extensions à l'objet de type ''MyCounter'', il n'est pas possible d'y accéder parce que mon horizon se limite uniquement aux définitions de ''MyCounter''. | ||
+ | |||
+ | Ce comportement n'est pas sastisfaisant et nous souhaitons souvent de pouvoir remplacer la méthode définie dans la classe ''MyCounter::increment'' par une nouvelle méthode qui prendrait la place de la méthode ''MyCounter::increment''. Nous verrons cela au moment où nous nous intéresserons au polymorphisme. | ||
+ | |||
+ | </hidden> | ||