Un premier exemple : une classe Point
183
2.2 Définition de la classe Point
Jusqu’ici, nous avions supposé que la classe Point existait déjà. Voyons maintenant comment la définir.
Nous conviendrons que la définition d’une classe se fait suivant ce canevas :
classe Point
{ // déclaration des attributs
// définition des méthodes
}
En ce qui concerne les attributs, nous choisirons d’utiliser deux entiers représentant les coordonnées cartésiennes d’un point (mais nous verrons que d’autres choix seraient possibles,
indépendamment des coordonnées utilisées dans les méthodes). Nous les déclarerons de
façon classique, comme on le ferait pour les variables d’un programme ou les variables locales à une fonction :
entier abs
// abscisse d’un point
entier ord
// ordonnée d’un point
ou, encore :
entier abs, ord
// abscisse et ordonnée d’un point
Quant à la définition des méthodes, elle se composera, comme celle d’une fonction d’un entête en précisant les paramètres (nom de paramètre « muet » et type) ainsi que le type du
résultat (ici, aucune de nos méthodes n’en fournit). Si l’on considère par exemple la méthode
initialise dont on a vu qu’elle serait appelée par une instruction de la forme :
p.initialise (5, 8)
on constate qu’elle devra disposer de deux paramètres correspondant aux coordonnées à attribuer au point concerné. Nous conviendrons d’écrire son en-tête de cette façon (en utilisant le
mot méthode à la place du mot fonction) :
méthode initialise (entier x, entier y)
Dans le corps de cette méthode, nous allons devoir affecter la valeur du paramètre muet x à
l’attribut abs de l’objet ayant appelé la méthode. Nous nous contenterons d’écrire cela tout
simplement de la manière suivante, sans préciser de quel objet il s’agit :
abs := x // affecte la valeur de x à l’attribut abs de l’objet concerné
En effet, nous conviendrons que, dans une méthode, un nom d’attribut désigne l’attribut
correspondant de l’objet ayant effectué l’appel. Notez qu’un tel objet est parfaitement connu
lors de l’appel ; nous convenons seulement que l’information corrrespondante sera bien
transmise à la méthode par des instructions appropriées mises en place par le traducteur du
programme (en toute rigueur, tout se passe comme si une méthode disposait d’un paramètre
supplémentaire représentant l’objet l’ayant appelé).
Précédent

- 206/370

Suivant