Imaginez que vous vouliez définir une classe Voiture correspondant à une voiture, mais que vous n'ayiez pas besoin dans cette classe, d'utiliser d'autres connaissances sur le moteur de cette voiture que le fait qu'il peut démarrer ou stopper : vous définissez alors une interface Moteur ayant deux méthodes, les méthodes demarrer et stopper et vous définissez la classe Voiture avec un attribut moteur de type Moteur, qui peut être initialisé par le constructeur de la classe Voiture. Celui qui voudra réellement construire un objet de type Voiture pourra disposer d'une classe MonMoteur implémentant l'interface Moteur qui correspondre au type de moteur qu'il souhaite avoir et utiliser celle-ci au moment de la création de sa voiture en passant au constructeur une instance de MonMoteur.
La classe ci-dessous est construite sur ce plan. L'objectif est d'étendre la classe javax.swing.Jpanel pour avoir un panneau graphique qui contient un objet de type Tracable dessiné par la méthode paintComponent dans ce panneau.
import javax.swing.JPanel;
import java.awt.Graphics;
public class PanneauTrace extends JPanel {
private Tracable t;
public void setTracable(Tracable t) {
this.t = t;
}
public Tracable getTracable() {
return t;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
t.dessine(g);
}
}
Voici le code de PanneauTrace.java.
Vous pouvez trouver ici une utilisation simple de cette classe.
Vous pouvez trouver ici une utilisation de cette classe, mettant en place une animation simple, utilisant soit un thread, soit un Timer.
©Irène Charon Télécom ParisTech 2010