Propriétés des objets et des méthodes
CHAPITRE 10
206
Remarques
1 Notez bien l’abus de langage qui consiste à parler ici d’affectations d’objets, alors qu’en
fait cette affectation ne porte que sur les variables de type objet (références) et non sur les
objets eux-mêmes.
2 Si l’on souhaitait procéder effectivement à l’échange du contenu des objets et non plus
à l’échange de leurs références, les choses ne seraient pas très simples puisqu’il faudrait
connaître exactement les attributs de l’objet ; n’oubliez pas que, en général, ils ne font
pas partie de l’interface de la classe. En plus, il faudrait disposer des méthodes d’accès
et d’altération correspondantes. Cela est assez contradictoire avec les notions d’objet et
d’encapsulation et s’autoriser à réaliser une telle opération (en dehors des méthodes de
la classe) comporte des risques évidents en cas de modification de l’implémentation de
la classe. Lorsqu’un tel besoin de recopie se fait sentir, il est alors plus raisonnable de
prévoir, dans la classe concernée, une méthode réalisant une telle opération.
1.3 Comparaison d’objets
Nous avons vu quel était le rôle de la comparaison d’égalité (=) ou d’inégalité (<>) appliquée
à des expressions d’un type de base. Dans tous les langages objet, on peut appliquer ces comparaisons à des objets. Ici, nous conviendrons que la comparaison porte sur les références et
non sur les valeurs des objets. L’égalité n’a donc lieu que si les références désignent un même
objet et non pas deux objets de même valeur :
Point p, q, r
p := Création Point (2, 5)
q := Création Point (2, 5)
si (p = q) alors ......
// ici, cette condition est fausse
r := p
si (p = r) alors .....
// en revanche, celle-ci est vraie
Il est bien sûr possible, là encore, de doter une classe d’une méthode appropriée effectuant la
comparaison des valeurs des attributs eux-mêmes. Nous en rencontrerons un exemple au
paragraphe 3.2, page 210.
1.4 Cas des langages gérant les objets par valeur
Comme nous l’avons exposé au paragraphe 6 du chapitre 9, page 195, certains langages objet
offrent la possibilité de gérer les objets à la fois par référence et par valeur.
En cas de gestion par valeur, une simple déclaration d’un objet réserve alors l’emplacement
complet pour l’objet (un mécanisme est prévu pour fournir des paramètres au constructeur).
Comme nous l’avons déjà indiqué, elle ressemblera généralement à ceci :
Point a (3, 8)
// un exemple de déclaration dans un langage gérant
// les objets par valeur
Précédent

- 229/370

Suivant