Supposons que
nous ayons besoin de manipuler des
points
dans un espace 2D. Nous allons créer une classe
correspondant
à cette notion. Une
procédure
du programme ayant besoin d'un point créera un objet de la
classe
point.
La
relation entre la procédure appelante et la
classe point est du type client-fournisseur.
La classe
point va fournir un certain nombre de
services
(on parle de méthodes).
Parmi ces méthodes, on peut envisager :
- une façon agréable d'initialiser un point : on parle de constructeur de la classe. Il porte généralement le nom de la classe.
- divers
autres services, parmi lesquels translater,
donner
la valeur actuelle de x ou y, fixer la valeur de x ou y à
une
certaine
valeur ...
Naturellement, il va falloir implémenter la classe point d'une certaine manière. On peut envisager plusieurs implémentations :
- deux
réels représentant x et y
-
un tableau de longueur 2 contenant x en premier
élément
et y en deuxième élément
-
deux réels décrivant la position du
point
en polaires ...
Principe général: on ne doit pas pouvoir accéder de l'extérieur à la manière spécifique dont la classe est implémentée.
On parle d'encapsulation.
Un avantage évident d'une telle approche est que le
concepteur
de
la classe peut changer l'implémentation sans que les
utilisateurs
de cette classe aient à changer quoi que ce soit,
à
partir
du moment où
les
services fournis par la classe restent les
mêmes.
Voir
ici une implémentation
d'une
classe en C++