Écrire une classe Pixel représentant un point dans le plan
et possédant un constructeur Pixel(int, int), une méthode
réalisant une translation, et une méthode de comparaison de signature
boolean sameAs(Pixel).
Dans la méthode main d'une classe Test,
créer un point et le désigner par deux références p1 et
p2. Comparer p1 et p2 avec l'opérateur
== et avec la méthode sameAs. Effectuer une
translation de p1 et refaire les comparaisons. Que
constate-t-on ?
Soit le code suivant
p1 = new Pixel(1,1);
p2 = new Pixel(1,1);
Comparer à nouveau p1 et p2. Que constate-t-on ?
Exécuter l'affectation p1 = p2. Que devient l'objet qui était
référencé par p2 ?
Utiliser la méthode public boolean equals(Object o)
pour comparer les pixels. Que faut-il faire pour avoir le résultat souhaité ?
Exercice n° 2 (Pixel)
Que se passe-t-il si on écrit Pixel p =
new Pixel(); alors que ce constructeur n'est pas écrit dans la
classe Pixel ?
Reprendre la classe Pixel et ajouter un
constructeur par défaut.
Ajouter une méthode void translate(int d) qui déplace
un point en changeant sa coordonnée x en x + d
et sa coordonnée y en y + d.
Comment cette méthode cohabite-t-elle avec la méthode
void translate(int dx, int dy) déjà écrite ?
Exercice n° 3 (Circle)
Créer une classe Circle pour représenter des cercles.
Les attributs d'un cercle seront un point (de type Pixel)
représentant le centre du cercle, et un rayon (de type int).
Écrire dans cette classe deux constructeurs, l'un prenant en argument
un point (de la classe Pixel) et un entier. L'autre prendra en
argument trois entiers dont les deux premiers seront les coordonnées du centre
du cercle.
Écrire une méthode void translate(int dx, int dy) qui permet
de déplacer le cercle.
Écrire ce qu'il faut dans la classe pour que lorsqu'on affiche un
cercle, on obtienne les coordonnées de son centre et son rayon; par exemple
System.out.println(c); doit afficher
(1,1),3 pour un cercle centré sur le point de coordonnées (1,1)
et de rayon 3.
Écrire la méthode public boolean equals(Object o) qui teste si
deux cercles sont égaux (même coordonnées du centre et même rayon).