Vous êtes sur la page 1sur 2

Correction Examen de Java 2024

Bounyamine Ousmanou
Fevrier 2024

Exercice 2 :
1. L’instruction System.out.println(new Point2D()) affiche Point2D: O(0.0, 0.0), car elle appelle le construc-
teur par défaut de la classe Point2D qui initialise les attributs abs et ord à 0 et name à ’O’.
2. Pour pouvoir exécuter la séquence :
Point2D point = new Point2D(’V’,2.0, 3.0);
Point2D pt2 = new Point2D(point);

sans erreur, il faut définir un constructeur de copie dans la classe Point2D qui prend en paramètre un objet
Point2D et qui copie ses attributs dans le nouvel objet, en utilisant la méthode namePoint pour modifier le
nom du point. Par exemple :
public Point2D(Point2D p) {
abs = p.abs;
ord = p.ord;
name = namePoint(p.name);
}
3. La condition associée à ce constructeur de copie est que le paramètre p ne soit pas null, sinon il faut lever
une exception ou renvoyer une valeur par défaut. Par exemple :
public Point2D(Point2D p) {
if (p == null) {
throw new IllegalArgumentException("Le point à copier ne peut pas être null");
}
abs = p.abs;
ord = p.ord;
name = namePoint(p.name);
}
4. La méthode pointsAlign permettant de vérifier si deux points sont alignés est la suivante :
public boolean pointsAlign(Point2D p) {
if (p == null) {
return false;
}
return abs == p.abs || ord == p.ord;
}
5. La méthode threeToRectangular permettant de déterminer si trois points forment un triangle rectangle est
la suivante :
public boolean threeToRectangular(Point2D p1, Point2D p2) {
if (p1 == null || p2 == null) {
return false;
}
// on calcule les longueurs des côtés du triangle formé par les trois points
double a = distance(p1);

1
double b = distance(p2);
double c = p1.distance(p2);
// on trie les longueurs par ordre croissant
double min = Math.min(a, Math.min(b, c));
double max = Math.max(a, Math.max(b, c));
double mid = a + b + c - min - max;
// on applique le théorème de Pythagore
return Math.abs(min * min + mid * mid - max * max) < 1e-6;
}
6. La méthode alignmentJustify permettant d’afficher le justificatif de l’alignement de deux points est la sui-
vante :
public void alignmentJustify(Point2D p) {
if (p == null) {
System.out.println("Le point à comparer ne peut pas être null");
return;
}
if (pointsAlign(p)) {
if (abs == p.abs) {
System.out.println(this + " et " + p + " alignés par abscisse " + abs);
} else {
System.out.println(this + " et " + p + " alignés par ordonnée " + ord);
}
} else {
System.out.println(this + " et " + p + " ne sont pas alignés");
}
}

Vous aimerez peut-être aussi