TP8 : Boîte englobant des points (composition/agrégation)


Mise en situation
Le travail de ce TP se déroule seul et en groupe.
Temps alloué : 5h
TP inspiré de Exercice et TP C++ (p14)
|

On pourrait très bien utiliser ce principe pour avoir une focale automatisée sur un objectif dans un contexte photographique. Ainsi on pourrait déterminer un degré d'intensité de pixel qui serait alors intégré à la photographie (Astronomie).
On se basera sur le diagramme de classes suivant :

La classe curseur permet de déplacer le curseur au niveau de l’écran. Il n’y en a qu’une mais est utilisé par les deux classes Point et Boite.
La classe boite possèdent un tableau de point, c’est elle qui saura dessiner tous les points et le rectangle les englobant.
- Compléter les liaisons entre les trois classes.
- A quoi correspond Point(int, int) ?
- Pourquoi y a-t-il deux fonctions ajouter

Pour la suite, créez les deux classes en respectant les spécifications suivantes :
Classe Point
- Point() constructeur par défaut
- Point(int x, int y) constructeur initialisant les deux coordonnées
- int getX() retourne l'abcisse
- int getY() retourne l'ordonnée
- void setX(int x) initialise l'abcisse
- void setY(int y) initialise l'ordonnée
- void affiche(ostream & nCout) affiche textuellement les coordonnées (voir exemple à la fin)
- void dessine(ostream & nCout) affiche un 'O' représentant le point (voir exemple à la fin)
Classe Boite
- Boite(Curseur * nCurseur) constructeur par défaut
- void ajouterPoint(Point * nPoint) ajoute un nouveau point dans la liste de la boite. Redimensionne le cadre englobant tous les points
- void ajouterPoint(int x, int y) ajoute un nouveau point dans la liste de la boite. Redimensionne le cadre englobant tous les points
- bool redimensionne(Point * nPoint) suivant le nouveau point ajouté, redimensionne le cadre en englobant tous les POINTS
- void affiche(ostream & nCout) affiche les informations des points et du cadre (boîte) en englobant tous les points (textuellement)
- void dessiner(ostream & nCout) représente dans un repère orthonormé tous les points ainsi que le cadre englobant tous les points (voir exemple ci aaprès)
- void dessineBoite() représente dans un repère orthonormé le cadre (boîte) englobant tous les points (sans les dessiner)
Exemple de sortie

