Exercice 64
Énoncé
Ajouter à la classe précédente (comportant un constructeur et trois fonctions membre
deplace, abscisse et ordonnee) de nouvelles fonctions membre :
• homothetie qui effectue une homothétie dont le rapport est fourni en argumentþ;
• rotation qui effectue une rotation dont l’angle est fourni en argumentþ;
• rho et theta qui fournissent en retour les coordonnées polaires du point.
La déclaration de la nouvelle classe point découle directement de l’énoncé :
/* fichier POINT3.H */
/* déclaration de la classe point */
class point
{ float x, y ; // coordonnées (cartésiennes) du point
public :
point (float, float) ; // constructeur
void deplace (float, float) ; // déplacement
void homothetie (float) ; // homothétie
void rotation (float) ; // rotation
float abscisse () ; // abscisse du point
float ordonnee () ; // ordonnée du point
float rho () ; // rayon vecteur
float theta () ; // angle
} ;
Sa définition mérite quelques remarques. En effet, si homothetie ne présente aucune
difficulté, la fonction membre rotation nécessite quant à elle une transformation
intermédiaire des coordonnées cartésiennes du point en coordonnées polaires. De
même, la fonction membre rho doit calculer le rayon vecteur d’un point dont on connaît
les coordonnées cartésiennes tandis que la fonction membre theta doit calculer l’angle
d’un point dont on connaît les coordonnées cartésiennes.
Le calcul de rayon vecteur étant simple, nous l’avons laissé figurer dans les deux
fonctions concernées (rotation et rho). En revanche, le calcul d’angle a été réalisé par ce
que nous nommons une « fonction de service », c’est-à-dire une fonction qui n’a
d’intérêt que dans la définition de la classe elle-même. Ici, il s’agit d’une fonction
indépendante mais, bien entendu, on peut prévoir des fonctions de service sous forme
de fonctions membre (elles seront alors généralement privées).
Voici finalement la définition de notre classe point :
138
Précédent

- 139/398

Suivant