Approche Objet - TD6 : Éditeur de figures
On considère les classes Editeur, Planche et Ellipse.
- Tester l'application.
- Modifier le code de Ellipse pour que, si e est une ellipse
inscrite dans le rectangle d’extrémités (xmin, ymin),
(xmax, ymax) l’instruction
System.out.println(e);
affiche sur la sortie standard
Ellipse (xmin,ymin) (xmax,ymax)
- Modifier la classe Planche pour que, lorsque l’on ajoute un
point, si un autre point est déjà présent à la même
position (à epsilon près), une exception
PointExistantException soit levée. Donner le code de
PointExistantException.
- En tenant compte du code des questions précédentes, modifier
le code de Editeur pour que, si l’on essaye de créer un point
à une position où un autre point existe déjà, un message
d’avertissement s’affiche sur la sortie standard avec comme
contenu “Impossible de créer un point près de (x,y)” où x et
y sont les coordonnées du point déjà existant. L’application
continuera ensuite de fonctionner normalement.
On souhaite maintenant pouvoir ajouter des formes autres que des
ellipses, par exemple des triangles, des rectangles, etc. On
souhaite donc utiliser l’interface Forme suivante :
public interface Forme {
public void dessine(Graphics g);
}
- Remplacer la méthode Planche.ajouterEllipse(Ellipse e) par
Planche.ajouterForme(Forme f) et modifier les codes des
différentes classes en conséquence.
- Écrire un décorateur FormeColoree qui permette de rajouter
une couleur à une forme. La couleur souhaitée et la forme à
colorer seront passées à l’instanciation de FormeColoree.
Utiliser ce décorateur pour que les ellipses créées dans
l’éditeur soient de couleur rouge (Color.RED).
- Écrire deux nouvelles implémentations de Forme : Triangle et
Rectangle. Pour dessiner un rectangle, on utilisera la méthode
de Graphics drawRect(int x, int y, int width, int height). Pour
dessiner un triangle, il faudra utiliser trois fois la méthode
de Graphics drawLine(int x0, int y0, int x1, int y1).
- Pour passer de la création d’un type de forme à un autre, on
souhaite utiliser les touches du clavier, par exemple ’e’ pour
les ellipses, ’t’ pour les triangles, ’r’ pour les rectangles
...
Utiliser l’interface FabriqueForme ci-dessous pour modifier le
code de Editeur afin de permettre les changements de types de
formes.
public interface FabriqueForme {
public char toucheClavier();
public int nombrePoints();
public Forme
creerForme(List<Point> points);
}
toucheClavier() renverra la touche du clavier utilisée pour
passer à ce type de formes (par exemple ’e’ pour les ellipses),
nombrePoints() le nombre de points nécessaires pour créer la
forme (par exemple 2 pour une ellipse) et
creerForme(List<Point>) retournera la nouvelle forme
créée.
Ecrire les codes des classes implémentant FabriqueForme.