Sujet : Modélisation géométrique de points et de cercles en C++
Contexte du sujet
Dans cet exercice, vous allez modéliser des objets géométriques simples — à savoir des points et des cercles — à l’aide de classes C++. Le but est de comprendre les notions suivantes :
- Encapsulation (attributs privés, accesseurs, mutateurs)
- Constructeurs (par défaut, paramétré, par copie)
- Méthodes de classe (statique)
- Utilisation de fichiers
.h, .cxx, et main.cxx pour structurer le code
Classe Point
Fichiers demandés :
point.h : déclaration de la classe
point.cxx : implémentation des méthodes
main.cxx : test de la classe Point
Travail à faire :
- Déclarez la classe Point contenant :
- Deux attributs privés
x et y (coordonnées)
- Un attribut de classe
nombre_points pour compter les objets créés
- Un constructeur paramétré, un constructeur par copie, et un destructeur
- Des accesseurs
getX() et getY() et des mutateurs setX(float) et setY(float)
- Une méthode
affichage() pour afficher les coordonnées du point
- Une méthode statique
getNombre_points()
- Implémentez les méthodes dans
point.cxx.
- Dans
main.cxx, écrivez un programme qui :
- Crée plusieurs objets Point
- Affiche leurs coordonnées
- Affiche le nombre total de points créés
Classe Cercle
Fichiers demandés :
cercle.h : déclaration de la classe
cercle.cxx : implémentation des méthodes
main.cxx : extension du précédent pour tester Cercle
Travail à faire :
- Déclarez la classe Cercle contenant :
- Un attribut
centre de type Point
- Un attribut
rayon
- Un attribut de classe
nombre_cercles
- Une constante statique
PI de valeur 3.14
- Les constructeurs suivants :
- par défaut
- avec 3 paramètres (float x, float y, float rayon)
- avec 2 paramètres (Point centre, float rayon)
- Des accesseurs/mutateurs pour le rayon et le centre
- Une méthode
affichage()
- Une méthode statique
lire_Cercle() pour créer un cercle à partir de données entrées par l’utilisateur
-
- Implémentez les méthodes dans
cercle.cxx.
- Dans
main.cxx, ajoutez :
- La création de plusieurs objets Cercle
- Affichage de leurs caractéristiques
- Affichage du nombre total de cercles créés
Questions théoriques pour guider les étudiants
- Quelle est la différence entre un attribut d’instance et un attribut de classe en C++ ?
- Expliquez le rôle de chaque type de constructeur utilisé dans la classe Point.
- Pourquoi utilise-t-on le mot-clé
static dans certaines méthodes et attributs ?
- Que se passe-t-il lorsque l’on copie un objet de type Point ?
- Expliquez l’intérêt de structurer le code en fichiers
.h, .cxx, et main.cxx.