Merci, je me suis prêté à l’exercice pour voir ma compréhension…
Ci dessous le code de la classe Point. Le point est défini par ses coordonnées (x, y) qui sont privées parce que il faut s’assurer de l’invariant, à savoir que (x, y) soit exprimé en coordonnées cartésiennes.
C’est par exemple pour éviter d’écrire monPoint.y = 60.0;
où 60 serait un angle polaire.
C’est pourquoi je mets à disposition de la classe Point une interface externe (càd des méthodes pour interagir avec l’objet point et ainsi le déplacer). Cette interface externe s’assure de l’intégrité de l’objet, càd que (x, y) sont bien des coordonnées cartésiennes et pas polaire.
Est ce que j’ai plus ou moins bien compris comme ça?
public class Point {
private double x;
private double y;
public void moveTo(double x, double y) {
this.x = x;
this.y = y;
}
public void moveTo2(double r, double theta) {
r = Math.abs(r);
moveTo(r * Math.cos(theta), r * Math.sin(theta));
}
public double getX() {
return x;
}
public double getY() {
return y;
}
}