Dans cette fiche...

<Retour>

Description de l'applet

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. Votre navigateur n'est pas compatible Java !

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.

Listing de l'applet

// --------------------------------------------------
// 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);
	}
}

Le listing en détail...

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'ellipse n'est pas pour autant dessinée.

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.
Une méthode qui renvoie une valeur est au contraire comparable à une fonction.

 
// 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 :

  • le nom d'une méthode ne comporte pas d'espace (le caractère _ est par contre autorisé)
  • par convention, le nom d'une méthode débute par une minuscule.
 
// 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.

Intégration de l'applet dans la page

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.