Composition des objets
CHAPITRE 11
230
Par souci de simplicité, nous supposerons que nous souhaitons que cette classe Cercle dispose de seulement 3 méthodes : un constructeur, une méthode affiche fournissant les
caractéristiques du cercle et une méthode déplace permettant de déplacer le centre.
A priori, nous pouvons songer à utiliser un objet de type Point pour représenter le centre du
cercle, de sorte que les attributs de notre classe Cercle pourraient être les suivants :
Point centre
// centre du cercle
réel rayon
// rayon du cercle
Voyons alors les problèmes qui peuvent se poser :
• d’une part au niveau des droits d’accès des méthodes de Cercle aux méthodes de Point,
• d’autre part, au niveau des relations qui s’établissent entre les objets concernés.
1.1 Droits d’accès
1.1.1 Comment doter Cercle d’une méthode affiche
Pour doter notre classe Cercle d’une méthode affiche, nous serions tentés de procéder
ainsi :
méthode affiche
{ écrire «coordonnées du centre », centre.abs, « », centre.ord
écrire «rayon », rayon
}
Mais les attributs abs et ord appartiennent à la classe Point et non à la classe Cercle. Ce
n’est pas parce qu’un objet possède un attribut de type classe que ses méthodes ont pour
autant accès aux attributs privés de cette classe. Il s’agit là, en quelque sorte, d’une généralisation du principe d’encapsulation. S’il n’en allait pas ainsi, une modification de l’implémentation de la classe Point entraînerait une modification de l’implémentation de toutes les
classes qui l’utilisent...
La seule chose que l’on puisse utiliser alors reste la méthode affiche (publique) de la
classe Point, en écrivant ainsi la méthode affiche de Cercle
méthode affiche
{ écrire «Je suis un cercle de rayon », rayon
écrire « et de centre »
centre.affiche
}
En fait, cette méthode afficherait l’information relative à un cercle de cette manière (ici, on
suppose qu’il s’agit d’un cercle de coordonnées 1 et 2 et de rayon 4.5) :
Je suis un cercle de rayon 4.5
et de centre
Je suis un point de coordonnées 1 2
Certes, on trouve bien les informations souhaitées, mais leur présentation laisse quelque peu
à désirer.
CHAPITRE 11
230
Par souci de simplicité, nous supposerons que nous souhaitons que cette classe Cercle dispose de seulement 3 méthodes : un constructeur, une méthode affiche fournissant les
caractéristiques du cercle et une méthode déplace permettant de déplacer le centre.
A priori, nous pouvons songer à utiliser un objet de type Point pour représenter le centre du
cercle, de sorte que les attributs de notre classe Cercle pourraient être les suivants :
Point centre
// centre du cercle
réel rayon
// rayon du cercle
Voyons alors les problèmes qui peuvent se poser :
• d’une part au niveau des droits d’accès des méthodes de Cercle aux méthodes de Point,
• d’autre part, au niveau des relations qui s’établissent entre les objets concernés.
1.1 Droits d’accès
1.1.1 Comment doter Cercle d’une méthode affiche
Pour doter notre classe Cercle d’une méthode affiche, nous serions tentés de procéder
ainsi :
méthode affiche
{ écrire «coordonnées du centre », centre.abs, « », centre.ord
écrire «rayon », rayon
}
Mais les attributs abs et ord appartiennent à la classe Point et non à la classe Cercle. Ce
n’est pas parce qu’un objet possède un attribut de type classe que ses méthodes ont pour
autant accès aux attributs privés de cette classe. Il s’agit là, en quelque sorte, d’une généralisation du principe d’encapsulation. S’il n’en allait pas ainsi, une modification de l’implémentation de la classe Point entraînerait une modification de l’implémentation de toutes les
classes qui l’utilisent...
La seule chose que l’on puisse utiliser alors reste la méthode affiche (publique) de la
classe Point, en écrivant ainsi la méthode affiche de Cercle
méthode affiche
{ écrire «Je suis un cercle de rayon », rayon
écrire « et de centre »
centre.affiche
}
En fait, cette méthode afficherait l’information relative à un cercle de cette manière (ici, on
suppose qu’il s’agit d’un cercle de coordonnées 1 et 2 et de rayon 4.5) :
Je suis un cercle de rayon 4.5
et de centre
Je suis un point de coordonnées 1 2
Certes, on trouve bien les informations souhaitées, mais leur présentation laisse quelque peu
à désirer.
