Cas des objets transmis en paramètre
211
Encore faut-il que la méthode coincide, appelée pour un objet a, puisse accéder aux attributs privés d’un autre objet b de la même classe. C’est effectivement ce qui se passe dans la
plupart des langages objet et l’on traduit cela en disant que :
Nous pouvons, de façon équivalente, dire que « seules les méthodes d’une classe peuvent
accéder aux attributs privés de cette classe », sans plus de précision. Cette autorisation
concernera alors tous les objets de la classe, et non seulement l’objet impliqué dans l’appel...
Voici un exemple complet de programme, dans lequel la classe Point a été réduite au strict
minimum :
Point a, b, c
a := Création Point (1, 3)
b := Création Point (2, 5)
c := Création Point (1, 3)
si a.coincide (b) alors écrire «a = b»
si a.coincide (c) alors écrire «a = c»
si c.coincide (a) alors écrire «c = a»
classe Point
{ méthode Point(entier x, entier y)
{ abs := x
ord := y
}
booléen méthode coincide (Point pt)
{ booléen ok
ok := pt.abs = abs et pt.ord = ord
retourne ok
}
entier abs, ord
}
a = c
c = a
Test de coïncidence de deux points par une méthode
Remarque
Bien entendu, lorsqu’une méthode d’une classe reçoit en paramètre un objet d’une classe
différente, elle n’a pas accès aux attributs ou méthodes privés de l’objet :
classe A
{ méthode m (B b)
{ // ici, m ne peut accéder qu’aux méthodes (et attributs) publics de b
}
L’unité d’encapsulation est la classe et non l’objet.
211
Encore faut-il que la méthode coincide, appelée pour un objet a, puisse accéder aux attributs privés d’un autre objet b de la même classe. C’est effectivement ce qui se passe dans la
plupart des langages objet et l’on traduit cela en disant que :
Nous pouvons, de façon équivalente, dire que « seules les méthodes d’une classe peuvent
accéder aux attributs privés de cette classe », sans plus de précision. Cette autorisation
concernera alors tous les objets de la classe, et non seulement l’objet impliqué dans l’appel...
Voici un exemple complet de programme, dans lequel la classe Point a été réduite au strict
minimum :
Point a, b, c
a := Création Point (1, 3)
b := Création Point (2, 5)
c := Création Point (1, 3)
si a.coincide (b) alors écrire «a = b»
si a.coincide (c) alors écrire «a = c»
si c.coincide (a) alors écrire «c = a»
classe Point
{ méthode Point(entier x, entier y)
{ abs := x
ord := y
}
booléen méthode coincide (Point pt)
{ booléen ok
ok := pt.abs = abs et pt.ord = ord
retourne ok
}
entier abs, ord
}
a = c
c = a
Test de coïncidence de deux points par une méthode
Remarque
Bien entendu, lorsqu’une méthode d’une classe reçoit en paramètre un objet d’une classe
différente, elle n’a pas accès aux attributs ou méthodes privés de l’objet :
classe A
{ méthode m (B b)
{ // ici, m ne peut accéder qu’aux méthodes (et attributs) publics de b
}
L’unité d’encapsulation est la classe et non l’objet.
