Deuxième exemple : une classe Segment
237
-- origine
abscisse : 1, ordonnée : 2
-- extrémité
abscisse : 14, ordonnée : 25
-- origine
abscisse : 14, ordonnée : 25
-- extrémité
abscisse : 7, ordonnée : 8
Remarque
En cas de gestion des objets par valeur, l’exemple précédent se présenterait sous une forme
voisine de :
Point a(1, 2), b(4, 5), c(7, 8)
Segment s1(a,b), s2(b, c)
s1.affiche
s2.affiche
Mais, cette fois, les attributs des points a, b et c auraient été recopiés dans les objets s1 et
s2, selon ce schéma :
La modification opérée par l’instruction b.déplace (10, 20) ne portera plus que sur le
point b et elle n’aura aucune incidence sur les valeurs de s1 qui ne représentera plus le
« segment bc ».
Exercice 11.2 Dans la classe Segment précédente, introduire une méthode nommée
inverse, inversant l’origine et l’extrémité d’un segment.
Exercice 11.3 On dispose de la classe Point suivante :
classe Point
{ méthode Point (entier x, entier y) { abs := x ; ord := y }
méthode affiche { écrire «abscisse : », abs, «, ordonnée : », ord }
méthode déplace ( entier dx, entier dy) { abs := abs + dx ; ord := ord + dy }
entier abs, ord
}
1
4
5
7
8
2
4
5
a
b
c
2
4
5
7
8
s2
2
4
5
1
2
4
5
s1
Précédent

- 260/370

Suivant