Dans cette fiche... |
Difficulté : ![]() |
Résultat |
Dans les exemples précédents, vous avez abordé la création, l'utilisation d'objets. Il est temps que vos objets fassent quelque chose ! Nous allons donc leur greffer des méthodes. |
Une méthode permet d'ajouter des actions à un objet.
Vous connaissez déjà de nombreuses méthodes :
Dans d'autres langages, une méthode est comparable à une fonction ou une procédure.
// -------------------------------------------------- // APPLETELLIPSE2 : UTILISATION DE L'OBJET "ELLIPSE" // --------------------------------------------------
import java.applet.*; import java.awt.*;
// L'applet principale public class AppletEllipse2 extends Applet { // Déclaration des objets Ellipse2 e1, e2;
// Initialisation de l'applet public void init() { // Initialisation des ellipses e1 = new Ellipse2(100, 50, 75, 20); e2 = new Ellipse2(150, 70);
// Couleur de fond de l'applet setBackground(Color.black); }
// Tracé de l'applet public void paint(Graphics g) { // Déplacer la 1ère ellipse (pourquoi pas ?!) e1.deplacer(10, 15);
// Tracer la 1ère ellipse avec fond transparent g.setColor(Color.white); e1.tracerEllipse(g);
// Tracer la 2nde ellipse avec fond opaque g.setColor(Color.orange); e2.remplirEllipse(g);
} }
// L'objet a utiliser class Ellipse2 extends Object { int x, y; // Coordonnées du centre de l'ellipse int largeur, hauteur; // Dimensions de l'ellipse
// Constructeur de l'objet public Ellipse2(int xx, int yy, int ll, int hh) { x = xx; y = yy; largeur = ll; hauteur = hh; }
// Autre constructeur public Ellipse2(int xx, int yy) { x = xx; y = yy; largeur = 50; hauteur = 20; }
// Méthode pour déplacer l'ellipse public void deplacer(int dx, int dy) { x += dx; y += dy; }
// Méthode pour tracer l'ellipse avec un fond transparent public void tracerEllipse(Graphics g) { g.drawOval(x - largeur/2, y - hauteur/2, largeur, hauteur); }
// Méthode pour tracer l'ellipse avec un fond opaque public void remplirEllipse(Graphics g) { g.fillOval(x - largeur/2, y - hauteur/2, largeur, hauteur); } }
Les lignes non commentées ont déjà été traitées dans les exemples précédents.
// Déplacer la 1ère ellipse e1.deplacer(10, 15); // Tracer la 1ère ellipse avec fond transparent g.setColor(Color.white); e1.tracerEllipse(g); // Tracer la 2nde ellipse avec fond opaque g.setColor(Color.orange); e2.remplirEllipse(g); |
Ci-dessus, 3 exemples d'appels de méthodes : on déplace
l'ellipse 1 (de 10 pixels à droite, 15 vers le bas), on la trace avec un
fond transparent, puis on trace l'ellipse 2 avec un fond opaque. Pour bien comprendre ces lignes, il suffit de consulter les méthodes de l'objet Ellipse2 (ci-dessous). |
// Méthode pour déplacer l'ellipse public void deplacer(int dx, int dy) { x += dx; y += dy; } |
La méthode deplacer() permet de modifier
les coordonnées du centre de l'ellipse. On lui transmet 2 valeurs (dx, déplacement en x et dy, déplacement en y). La méthode se contente d'ajouter ces 2 valeurs à x et y (centre de l'ellipse). Rappel : x += dx; est équivalent à x = x + dx; L'écriture d'une méthode ressemble à celle d'un constructeur. En supplément, un mot-clef définit le type de valeur que renvoie la méthode. Dans notre cas, la méthode ne renvoie pas de valeur (elle ne fait aucun calcul, par exemple); on utilise alors le mot-clef void. Dans d'autres cas (que nous traiterons dans d'autres pages), une méthode peut renvoyer un entier (int), un booléen (boolean), un objet quelconque (String, Applet...) Une méthode void (qui ne renvoie pas de valeur) pourrait être
comparée à une procédure en Pascal. |
// Méthode pour tracer l'ellipse avec un fond transparent public void tracerEllipse(Graphics g) { g.drawOval(x - largeur/2, y - hauteur/2, largeur, hauteur); } |
La méthode tracerEllipse() trace simplement
l'ellipse, en appelant une autre méthode : drawOval() de
l'objet Graphics. Mais pour pouvoir écrire une ligne comme g.drawOval(...), il faut connaître l'objet g (objet Graphics qui désigne la zone de tracé). Celui-ci devra donc être transmis par l'applet qui appelera la méthode tracerEllipse(). Remarques :
|
// Méthode pour tracer l'ellipse avec un fond opaque public void remplirEllipse(Graphics g) { g.fillOval(x - largeur/2, y - hauteur/2, largeur, hauteur); } |
Pas grand chose de nouveau : au lieu de faire un drawOval(), on appelle cette fois fillOval() pour tracer une ellipse pleine. |
Voici le code qui a été utilisé dans cette page HTML pour faire apparaître l'applet :
<applet code="AppletEllipse2.class" width=250 height=90> Votre navigateur n'est pas compatible Java ! </applet>
Pour plus de précisions sur l'intégration d'une applet, cliquez ici.