Adloun

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 Point une méthode copier() qui retourne un nouveau point de mêmes coordonnées.
  • Écrire dans Segment deux méthodes : copieSuperficielle(), qui crée un nouveau segment avec les mêmes points, et copieProfonde(), 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

Exercice suivant et tuteur

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.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →