Cet exercice correspond à l'exercice «pas à pas» page 134 de l'ouvrage C++ par la pratique (3e édition, PPUR).
IntroductionLe but de cet exercice est d'illustrer la notion d'héritage en utilisant une hiérarchie de figures géométriques. Dans le fichier figures.cc, commencez par
définir des classes Cliquez ici pour voir/cacher le code. Ajoutons ensuite une classe « rectangle coloré ».
[Essayez de le faire par vous même avant de regarder la solution qui suit] Cliquez ici pour voir/cacher le code. Pour rendre ces classes un peu plus réalistes (et utilisables) ajoutons leur un constructeur à chacune (si ce n'est pas déjà fait) : class Rectangle { protected: double largeur; double longueur; public: Rectangle(double larg, double L) : largeur(larg), longueur(L) {} // ... comme avant ... class RectangleColore : public Rectangle { protected: unsigned int couleur; public: RectangleColore(double larg, double L, unsigned int c) : Rectangle(larg, L), couleur(c) {} }; Testez avec ce int main() { RectangleColore r(4.3, 12.5, 4); cout << r.getLargeur() << endl; return 0; } Continuez en définissant les classes suivantes :
[Essayez de le faire par vous même avant de regarder la solution qui suit] Cliquez ici pour voir/cacher le code. On peut maintenant tester que l'on hérite bien des propriétés de
la classe int main() { RectangleColore r(4.3, 12.5, 4); cout << r.getLargeur() << endl; r.affiche(cout); cout << endl; Cercle c; c.setCentre(2.3, 4.5); c.setRayon(12.2); c.affiche(cout); cout << endl; return 0; } Si vous êtes perdus, voici ici le code complet à ce stade. [Testez ce programme : compilez le, exécutez le. Essayez ensuite d'autres utilisations pour bien comprendre. ] Évidemment pour être plus intéressantes, il faudrait répercuter
les possibilités de la classe Cliquez ici pour voir/cacher le code. Testez le programme avec le int main() { RectangleColore r(4.3, 12.5, 4); cout << r.getLargeur() << endl; r.affiche(cout); cout << endl; Cercle c(12.2, 2.3, 4.5); c.affiche(cout); cout << endl; Rectangle r2(1.2, 3.4, 12.3, 43.2); r2.affiche(cout); cout << endl; return 0; }
Dernière mise à jour le 16 mars 2014
|