Choisissez votre style : colorisé, impression

Série 17 :
Premiers pas en POO

Buts

Cette série a pour but de vous familiariser avec les outils de développement suggérés pour le projet et à vous faire faire vos premiers pas en programmation orientée objet; Il est important d'avoir bien assimilé ces notions pour aborder votre projet. Évitez de sauter des étapes cette semaine. Réalisez jusqu'au bout les exercices qui vous sont proposés, y compris ceux de niveau zéro concernant la prise en main de l'environnement et du «debugger». À noter que les notions de constructeurs/destructeurs seront exercées de façon plus dédiée la semaine prochaine.
S'il vous reste du temps et que vous ne l'avez pas abordé/finalisé, reprenez l' exercice 3 de la semaine passée (mais attention il a été conçu dans une optique non orientée-objet).
Cette série est délibérément allégée pour vous donner aussi l'opportunité d'aplanir vos éventuelles difficulté d'installation (ou de travail via VMWare) durant le TP. Un questionnaire sera publié après la séance pour refaire un état des lieux à ce sujet.

Préliminaires :

Avant de commencer les exercices décrits dans cette série, créez le répertoire Desktop/myfiles/Programmation/cpp/serie17 et travaillez dans ce répertoire.

Exercice 0.0 : reprise de l'exemple du cours (Objets et Classes, niveau 0)

Le but de cet exercice est de reprendre l'exemple du cours illustrant les classes et les objets avec la classe Rectangle.

Cliquez ici si vous souhaitez faire cet exercice.


Exercice 0.1 : utilisation d'un dévermineur (dans QtCreator ou ddd, niveau 0)

Le but de cet exercice est de vous rappeler comment utiliser un dévermineur (outil servant à traquer les problèmes d'exécution dans un programme)

Cliquez ici pour faire cet exercice. 


Exercice 1 : la classe Cercle (POO, niveau 1)

Exercice n°46 (page 111 et 293) de l'ouvrage C++ par la pratique.

Le but de cet exercice est d'écrire une classe représentant les cercles.

Écrivez un programme Cercle.cc dans lequel vous définissez une classe Cercle ayant comme attributs privés le rayon du cercle (de type double), et les coordonnées de son centre.

Déclarez ensuite les méthodes «get» et «set» correspondantes, par exemple :

void getCentre(double& x, double& y) const { ... }
void setCentre(const double x, const double y) { ... }
...
Ajoutez ensuite les méthodes (faisant aussi partie de l'interface) : La méthode retournera true si le test est positif, et false dans le cas contraire.

Dans le main, instanciez deux objets de la classe Cercle, affectez des valeurs de votre choix à leur attributs et testez vos méthodes surface et estInterieur.

Remarque : la constante pi est définie comme M_PI dans le module cmath (#include <cmath> au début de votre programme).

Voir aussi l'exercice n°47 (pages 112 et 296) de l'ouvrage C++ par la pratique.



Exercice 2 : Géométrie (conception OO, niveau 2)

Cet exercice vous permettra d'élaborer un petit programme orienté objets de manière indépendante pour la première fois.

Ecrivez un programme triangle.cc qui permet à l'utilisateur d'entrer les coordonnées (x, y) des sommets d'un triangle. Le programme affiche ensuite le périmètre du triangle ainsi qu'un message indiquant s'il s'agit d'un triangle isocèle. Votre programme doit être orienté objets.

Indications:

Exemple d'affichage du programme pour un triangle isocèle:

Construction d'un nouveau point
Veuillez entrer x : 0
Veuillez entrer y : 0
Construction d'un nouveau point
Veuillez entrer x : 2.5
Veuillez entrer y : 2.5
Construction d'un nouveau point
Veuillez entrer x : 0
Veuillez entrer y : 5
Périmètre : 12.0711
Le triangle est isocèle
Si vous réalisez l'exercice avec QTCreator, prenez note de ces indications pour permettre la saisie de valeur depuis le clavier.

Exercice 3 : Tour de magie (conception OO, niveau 2)

On souhaite ici écrire un programme « simulant » le tour de magie élémentaire suivant :

Un magicien demande à un spectateur d'écrire sur un papier son âge et la somme qu'il a en poche (moins de 100 francs).
Il lui demande ensuite de montrer le papier à son assistant, qui doit le lire (sans rien dire), puis effectuer secrètement le calcul suivant : multiplier l'âge par 2, lui ajouter 5, multiplier le résultat par 50, ajouter la somme en poche, et soustraire le nombre de jours que contient une année, puis finalement donner le résultat à haute voix.
En ajoutant mentalement (rapidement !) 115 au chiffre reçu, le magicien trouve tout de suite l'âge et la somme en poche (qui étaient restés secrets).

Modéliser ce tour de magie, en définissant au moins les classes (simples) Magicien, Assistant et Spectateur. Il pourrait également être utile de disposer d'une classe Papier.

L'instance de Spectateur devra demander son âge à l'utilisateur du programme ainsi que la somme d'argent en poche, et s'assurer qu'une valeur correcte est entrée (entre 0 et 99).

Essayer de faire une modélisation la plus exacte possible ; faire notamment usage des droits d'accès là où cela semble pertinent. Pour chaque méthode, effectuer un affichage à l'écran de l'opération en cours et de l'acteur qui la réalise.

Note : Il existe de nombreuses variantes possibles. Commencer par un modèle très simple, et le faire évoluer pour se rapprocher de la situation « réelle » décrite.

Exemple de déroulement

[Spectateur] (j'entre en scène)
Quel âge ai-je ? 35
Combien d'argent ai-je en poche (<100) ? 112
Combien d'argent ai-je en poche (<100) ? 12
[Spectateur] (je suis là)
[Magicien] un petit tour de magie...
[Spectateur] (j'écris le papier)
[Spectateur] (je montre le papier)
[Assistant] (je lis le papier)
[Assistant] (je calcule mentalement)
[Assistant] J'annonce : 3397 !
[Magicien]
  - hum... je vois que vous êtes agé de 35 ans
    et que vous avez 12 francs en poche !

Indications plus détaillées

Voici quelques indications en vrac qui peuvent vous être utiles. Ne les lisez pas si vous voulez être complètement indépendant (but premier de l'exercice)...


Dernière mise à jour : 2024/02/29 19:26