/** * Définition du comportement des classes dessinables

publicité
/**
* Définition du comportement des classes dessinables.
*
* @author Peter DAEHNE, HEG‐Genève
* @version 2.2
*/
public interface Dessinable {
/* Définition du point du plan */
void setPoint (int x, int y);
/* Définition de la couleur */
void setCouleur (java.awt.Color couleur);
/* Dessin de l'objet */
void dessine (java.awt.Graphics g);
} // Dessinable
/**
* Figure concrète dessinable: Cercle dessinable.
*
* @author Peter DAEHNE, HEG‐Genève
* @version 2.2
*/
import java.awt.*;
public class CercleDessinable extends Cercle implements Dessinable {
private Color couleur; /* Couleur */
private int x, y; /* Origine */
/* Constructeurs */
public CercleDessinable () {}
public CercleDessinable (double r) {super(r);}
public CercleDessinable (Color c, double r) {this(r); setCouleur(c);}
public CercleDessinable (int x, int y, double r) {this(r); setPoint(x, y);}
public CercleDessinable (Color c, int x, int y, double r) {this(x, y, r); setCouleur(c);}
/* Interface Dessinable */
public void setPoint (int x, int y) {this.x = x; this.y = y;}
public void setCouleur (Color couleur) {this.couleur = couleur;}
public void dessine (Graphics g) {g.setColor(couleur); g.drawOval(x, y, (int)(rayon), (int)(rayon));}
} // CercleDessinable
/**
* Figure concrète dessinable: Rectangle dessinable.
*
* @author Peter DAEHNE, HEG‐Genève
* @version 2.2
*/
import java.awt.*;
public class RectangleDessinable extends Rectangle implements Dessinable {
private Color couleur; /* Couleur */
private int x, y; /* Origine */
/* Constructeurs */
public RectangleDessinable () {}
public RectangleDessinable (double l, double h) {super(l, h);}
public RectangleDessinable (Color c, double l, double h) {this(l, h); setCouleur(c);}
public RectangleDessinable (int x, int y, double l, double h) {this(l, h); setPoint(x, y);}
public RectangleDessinable (Color c, int x, int y, double l, double h) {this(x, y, l, h); setCouleur(c);}
/* Interface Dessinable */
public void setPoint (int x, int y) {this.x = x; this.y = y;}
public void setCouleur (Color couleur) {this.couleur = couleur;}
public void dessine (Graphics g) {g.setColor(couleur); g.drawRect(x, y, (int)(larg), (int)(haut));}
} // RectangleDessinable
/**
* String personnalisé dessinable.
*
* @author Peter DAEHNE, HEG‐Genève
* @version 2.2
*/
import java.awt.*;
public class MyStringDessinable extends MyString implements Dessinable {
private Color couleur; /* Couleur */
private int x, y; /* Origine */
/* Constructeurs */
public MyStringDessinable () {}
public MyStringDessinable (String s) {super(s);}
public MyStringDessinable (Color c, String s) {this(s); setCouleur(c);}
public MyStringDessinable (int x, int y, String s) {this(s); setPoint(x, y);}
public MyStringDessinable (Color c, int x, int y, String s) {this(x, y, s); setCouleur(c);}
/* Interface Dessinable */
public void setPoint (int x, int y) {this.x = x; this.y = y;}
public void setCouleur (Color couleur) {this.couleur = couleur;}
public void dessine (Graphics g) {g.setColor(couleur); g.drawString(toString(), x, y);}
} // MyStringDessinable
/**
* Applet représentant des classes dessinables.
*
* @author Peter DAEHNE, HEG‐Genève
* @version 2.2
*/
public class Dessin extends java.applet.Applet {
private Dessinable[] dessins = new Dessinable[7]; /* Dessinable est une "interface" */
/* Méthode appelée à l'initialisation de l'Applet */
public void init () {
dessins[0] = new CercleDessinable(java.awt.Color.red, 100, 100, 60.0);
dessins[1] = new RectangleDessinable(java.awt.Color.blue, 200, 200, 100.0, 50.0);
dessins[2] = new CercleDessinable(java.awt.Color.green, 120, 100, 70.0);
dessins[3] = new CercleDessinable(java.awt.Color.yellow, 140, 100, 80.0);
dessins[4] = new MyStringDessinable(java.awt.Color.red, 50, 50, "Hello World!");
dessins[5] = new RectangleDessinable(java.awt.Color.cyan, 250, 260, 40.0, 120.0);
dessins[6] = new MyStringDessinable(java.awt.Color.black, 260, 420, "Autre string.");
} // init
/* Méthode effectuant effectivement l'affichage */
public void paint (java.awt.Graphics g) {
for (int i = 0; i < dessins.length; i++) {dessins[i].dessine(g);}
} // paint
} // Dessin
/**
* Classe principale calculant avec des Dessinables:
* ‐ création d'un tableau de classes dessinables (les mêmes que dans Dessin.java)
* ‐ calcul de l'aire totale des Figures
* ‐ calcul de la somme des périmètres des Figures
* ‐ calcule de la somme des longueurs des MyStrings
* ‐ affichage des résultats
*
* @author Peter DAEHNE, HEG‐Genève
* @version 2.2
*/
public class Calculs {
public static void main (String[] args) {
Dessinable[] dessins = new Dessinable[7]; /* Dessinable est une "interface" */
dessins[0] = new CercleDessinable(java.awt.Color.red, 100, 100, 60.0);
dessins[1] = new RectangleDessinable(java.awt.Color.blue, 200, 200, 100.0, 50.0);
dessins[2] = new CercleDessinable(java.awt.Color.green, 120, 100, 70.0);
dessins[3] = new CercleDessinable(java.awt.Color.yellow, 140, 100, 80.0);
dessins[4] = new MyStringDessinable(java.awt.Color.red, 50, 50, "Hello World!");
dessins[5] = new RectangleDessinable(java.awt.Color.cyan, 250, 260, 40.0, 120.0);
dessins[6] = new MyStringDessinable(java.awt.Color.black, 260, 420, "Autre string.");
double sommeAire = 0.0; /* Calculs */
double sommePeri = 0.0;
int sommeLong = 0;
for (int i = 0; i < dessins.length; i++) {
if (dessins[i] instanceof Figure) { sommeAire += ((Figure)dessins[i]).aire();
sommePeri += ((Figure)dessins[i]).perimetre();
} else {
sommeLong += ((MyString)dessins[i]).length();
}
}
System.out.println("INTERFACE");
System.out.println("La somme des aires des figures est de " + sommeAire);
System.out.println("La somme des périmètres des figures est de " + sommePeri);
System.out.println("La somme des longueurs des chaînes est de " + sommeLong);
} // main
} // Calculs
Téléchargement