programmation Java (école d'ingénieur) · Chapitre 7 · Application directe du cours
Échanger deux points
Classes et objets · niveau 2
Énoncé
On veut une méthode static qui échange deux points.
- La méthode suivante est-elle correcte ? Pourquoi ?
static void echangerRefs(Point a, Point b) {
Point t = a;
a = b;
b = t;
}
- Écrire une méthode
echangerCoords(Point a, Point b)qui produit bien l'effet voulu du point de vue de l'appelant.
Corrigé
- Non. Les paramètres
aetbsont des copies des références de l'appelant. La méthode échange ses deux copies locales, puis se termine : les variables de l'appelant n'ont pas bougé. C'est la proposition sur le passage d'un objet en paramètre. - On ne peut pas changer les variables de l'appelant, mais on peut modifier les objets qu'elles désignent : on échange leurs coordonnées.
static void echangerCoords(Point a, Point b) {
double tx = a.x, ty = a.y;
a.x = b.x;
a.y = b.y;
b.x = tx;
b.y = ty;
}
Avec et :
échange des références : p = (1.0, 2.0), q = (3.0, 4.0)
échange des coordonnées : p = (3.0, 4.0), q = (1.0, 2.0)
Attention : si l'on appelle echangerCoords(p, p), la méthode reçoit deux références vers le même objet ; elle fonctionne quand même ici, parce qu'elle sauvegarde les coordonnées dans des variables locales avant de les écraser.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.