Package traçable Tatiana Aubonnet
L’interface Tracable package tracable; public interface Tracable { public static final int DIM_MAX = 500; public void dessiner(java.awt.Graphics g); }
Une classe pour définir un Cercle La classe Cercle nous servira de superclasse. l’utilisation de la constante statique PI issue de la classe java.lang.Math. package tracable; public class Cercle { int rayon; public Cercle(int rayon) { this.rayon = rayon; } public int getRayon() { return rayon; } double circonference() { return 2 * Math.PI * rayon; } }
Une classe qui étend Cercle et implémente l'interface Tracable package tracable; public class CercleGraphique extends Cercle implements Tracable { private int x, y; // x et y : coordonnees du centre du cercle private java.awt.Color couleur; // couleur : la couleur du cercle public CercleGraphique(int rayon, int x, int y, java.awt.Color couleur) { super(rayon); this.x = x; this.y = y; this.couleur = couleur; } public void dessiner(java.awt.Graphics g) { int rayon = getRayon(); if (rayon < DIM_MAX) { g.setColor(couleur); g.drawOval(x - rayon, y - rayon, 2*rayon, 2*rayon); } } }
Une classe pour définir un carré Elle sera étendue en une classe implémentant l’interface Tracable et permettra d’avoir deux classes différentes implémentant Tracable. package tracable; public class Carre { private int cote; public Carre(int cote) { this.cote = cote; } public int getCote() { return cote; } public int surface() { return cote*cote; } }
Une classe qui étend Carre et implémente Tracable package tracable; import java.awt.Color; import java.awt.Graphics; public class CarreGraphique extends Carre implements Tracable { private int x, y; //coordonnees du centre private Color couleur = Color.BLACK; // couleur par défaut du carre public CarreGraphique(int cote, int x, int y) { super(cote); this.x = x; this.y = y; } public CarreGraphique(int cote, int x, int y, Color couleur) { this(cote, x, y); this.couleur = couleur; } public void dessiner(Graphics g) { int cote = getCote(); if (cote < DIM_MAX) { g.setColor(couleur); g.drawRect(x - cote/2, y - cote/2, cote, cote); } } }
Un tableau de Tracable l’exemple suivant : on construit un tableau de Tracable pour les différents ingrédients d’un dessin qu’on souhaite obtenir ; la méthode dessiner, spécifiée dans Tracable, est appliquée sur chacune des instances du tableau. package tracable; import java.awt.Graphics; import java.awt.Color; import java.awt.Dimension; import javax.swing.JPanel; import javax.swing.JFrame; public class EssaiTracable extends JPanel { Tracable[] desFormes = new Tracable[5]; public EssaiTracable() { setPreferredSize(new Dimension(200, 200)); desFormes[0] = new CercleGraphique(75, 100, 100, Color.BLACK); desFormes[1] = new CercleGraphique(10, 65, 75, Color.BLUE); desFormes[2] = new CercleGraphique(10, 135, 75, Color.BLUE); desFormes[3] = new CarreGraphique(10, 100, 110, Color.MAGENTA); desFormes[4] = new CarreGraphique(15, 100, 150, Color.RED); } public void paintComponent(Graphics g) { super.paintComponent(g); for (Tracable forme : desFormes) forme.dessiner(g); } public static void main(String[] arg) { JFrame monDessin = new JFrame(); monDessin.setContentPane(new EssaiTracable()); monDessin.pack(); monDessin.setVisible(true); } }