Une interface en attribut ou en paramètre

           

Cet exemple utilise des interfaces et classes définies dans l'exemple composé précédent.

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.dessiner(g);
}
}
Il faut étudier les deux pages suivantes si on veut voir des utilisations de cette classe (ce n'est pas urgent à ce niveau du cours).

Voici le code de PanneauTrace.java.

©Irène Charon Télécom ParisTech 2012