programmation Java (école d'ingénieur) · Chapitre 7 · Exercice de TD
Copier un objet
Classes et objets · niveau 2
Énoncé
Un Segment a deux attributs Point a, b.
- Écrire dans
Pointune méthodecopier()qui retourne un nouveau point de mêmes coordonnées. - Écrire dans
Segmentdeux méthodes :copieSuperficielle(), qui crée un nouveau segment avec les mêmes points, etcopieProfonde(), qui crée un nouveau segment avec des copies des points. - On modifie l'abscisse du premier point du segment original. Laquelle des deux copies est affectée ? Vérifier par un programme.
Corrigé
class Point {
double x, y;
Point(double x, double y) {
this.x = x;
this.y = y;
}
Point copier() { return new Point(x, y); }
@Override
public String toString() { return "(" + x + ", " + y + ")"; }
}
class Segment {
Point a, b;
Segment(Point a, Point b) {
this.a = a;
this.b = b;
}
Segment copieSuperficielle() { return new Segment(a, b); }
Segment copieProfonde() { return new Segment(a.copier(), b.copier()); }
@Override
public String toString() { return "[" + a + " ; " + b + "]"; }
}
public class Ex8Copie {
public static void main(String[] args) {
Segment s = new Segment(new Point(0, 0), new Point(1, 1));
Segment sup = s.copieSuperficielle();
Segment pro = s.copieProfonde();
s.a.x = 99;
System.out.println("original : " + s);
System.out.println("superficielle : " + sup);
System.out.println("profonde : " + pro);
}
}
original : [(99.0, 0.0) ; (1.0, 1.0)]
superficielle : [(99.0, 0.0) ; (1.0, 1.0)]
profonde : [(0.0, 0.0) ; (1.0, 1.0)]
La copie superficielle est un nouveau segment, mais ses attributs sont des références vers les mêmes points que l'original : modifier un point de l'original modifie la copie. La copie profonde a ses propres points.
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.