Premier exemple : une classe Cercle
231
On déduit que, pour obtenir des résultats satisfaisants, il faudrait que la classe Point
dispose
• soit d’une méthode affiche présentant ses informations d’une manière différente ;
• soit de méthodes d’accès.
1.1.2 Doter Cercle d’une méthode déplace
Quant à la méthode déplace, il n’est pas possible de procéder ainsi :
méthode déplace (entier dx, entier dy)
{ centre.abs = centre.abs + dx
centre.ord = centre.ord + dy
}
Là encore, déplace est une méthode de la classe Cercle, pas de la classe Point. Elle n’a
donc pas accès aux attributs privés de la classe Point.
Pour pouvoir réaliser la méthode déplace, il faudrait que la classe Point dispose :
• soit d’une méthode de déplacement d’un point,
• soit de méthodes d’accès et de méthodes d’altération.
Cet exemple montre bien qu’il est difficile de réaliser une bonne « conception » de classe,
c’est-à-dire de définir le bon contrat et la bonne interface. Bien entendu, ici, l’exemple était
simpliste et il serait tout à fait possible de définir une classe Cercle sans recourir à une
classe Point. Mais, dans la pratique, les choses seront plus complexes et seul un contrat bien
spécifié permettra de juger de la possiblité d’utiliser ou non une classe donnée...
Exercice 11.1 Supposer que la classe Point précédente dispose des méthodes d’accès
valeurAbs et valeurOrd ainsi que des méthodes d’altération fixeAbs et fixeOrd et
écrire la méthode déplace de la classe Cercle.
Remarque
Nous n’avons examiné que les problèmes d’accès se posant dans l’écriture des méthodes de
Cercle. Il va de soi que, pour les objets de type Cercle, ceux-ci n’auront pas plus accès à
un attribut (privé) de type classe qu’ils n’avaient accès à un attribut (privé) d’un type de base.
1.2 Relations établies à la construction
Nous avons fait l’hypothèse que nous souhaitions doter notre classe Cercle d’un seul
constructeur. Nous constatons que nous pouvons choisir de fournir en paramètres :
• soit les deux coordonnées du centre et le rayon,
• soit un objet de type Point (représentant le centre) et le rayon.
Comparons ces deux situations et leurs conséquences.
Précédent

- 254/370

Suivant