Série 6 :
|
Préliminaires :Avant de commencer les exercices décrits dans cette série, créez le répertoire ~/Desktop/myfiles/cpp/serie19 et travaillez dans ce répertoire. Exercice 1 : formes polymorphiques (niveau 1)
Cet exercice correspond à l'exercice n°60 (pages 150 et 335) de l'ouvrage C++ par la pratique (3e édition,
PPUR).
Exercice n°16 du MOOC
Le but de cet exercice est de vous illustrer les problèmes qui peuvent se poser lorsque l'on veut manipuler des objets de façon polymorphique (un objet pouvant se substituer à un autre objet). Il s'agit de manipuler quelques formes géométriques simples en leur associant une méthode qui affiche leur description. 16.1 FormesDans un fichier formes.cc, définissez une classe Forme en la dotant d'une méthode void description() qui affiche à l'écran : « Ceci est une forme ! » . Ajoutez au programme une classe Cercle héritant de la classe Forme, et possédant la méthode void description() qui affiche à l'écran : « Ceci est un cercle. ». Recopiez ensuite la fonction main() suivante, et testez votre programme : int main() { Forme f; Cercle c; f.description(); c.description(); return 0; } Ajoutez maintenant ceci à la fin de la fonction main(): Forme f2(c); f2.description(); Testez ensuite à nouveau votre programme. Voyez-vous vu la nuance ? Continuons nos prospections... Ajoutez encore au programme une fonction : void affichageDesc(Forme& f) qui affiche la description de la forme passée en argument en utilisant sa méthode description(). Finalement, modifiez le main ainsi : int main() { Forme f; Cercle c; affichageDesc(f); affichageDesc(c); return 0; } Testez le programme... Le résultat vous semble-t-il satisfaisant ? Pourquoi? Modifiez le programme (ajoutez 1 seul mot) pour que le résultat soit plus conforme à ce que l'on pourrait attendre. 16.2 Formes abstraitesRecopiez le programme précédent dans le fichier formesabstraites.cc, et modifiez la classe Forme de manière à en faire une classe abstraite en lui ajoutant la méthode virtuelle pure double aire() permettant de calculer l'aire d'une forme. Écrivez également une classe Triangle et modifiez la classe Cercle existante héritant toutes deux de la classe Forme, et implémentant les méthodes aire() et description(). Vous l'aurez deviné, la classe Triangle aura
comme attributs
base et hauteur ainsi qu'un constructeur adéquat,
et Cercle aura
Modifiez la fonction affichageDesc pour qu'elle affiche, en plus, l'aire de la forme passée en paramètre et testez avec la fonction main suivante : int main() { Cercle c(5); Triangle t(10, 2); affichageDesc(t); affichageDesc(c); return 0; } Exercice 2 : Puissance 4 (niveau 3)
Cet exercice correspond à l'exercice n°61 (pages 151 et 342) de l'ouvrage C++ par la pratique (3e édition,
PPUR).
Exercice n°18 du MOOC
On envisage de programmer un jeu de puissance 4 (consistant à aligner quatre pions de même couleur soit horizontalement, soit verticalement, soit en diagonale). Le but de cet exercice est de fournir une première solution (sans interface graphique). Pour programmer ce jeu, on distinguera trois types d'« objets » : des joueurs, un jeu, et une partie. Un Un On fournira également une méthode On ajoutera de plus à la classe La classe Pour pouvoir effectivement jouer, il faut maintenant implémenter des joueurs. Considérons deux types de joueurs :
Tester le programme en créant une partie dans le Pour cela la classe Exemple de déroulementEntrez votre nom : Corinne Titgoute Le programme a joué en 1 # -------- 12345678 Joueur Corinne Titgoute, entrez un numéro de colonne (entre 1 et 8) : 12 -> Coup NON valide. Joueur Corinne Titgoute, entrez un numéro de colonne (entre 1 et 8) : 1 Le programme a joué en 1 # O # -------- 12345678 Joueur Corinne Titgoute, entrez un numéro de colonne (entre 1 et 8) : Dernière mise à jour le 25 mars 2014 Last modified: Tue Mar 25, 2014 |