Dans cette fiche...

<Retour>

Description de l'applet

Difficulté : Résultat
(pas spectaculaire,
mais ça marche quand même !)
Dans l'exemple précédent, nous avons créé un objet Ellipse, et renseigné ses propriétés. Mais on peut améliorer ceci, grâce à la notion de constructeur. Votre navigateur n'est pas compatible Java !

Le constructeur est une fonction qui est appelée dès la création de l'objet, et qui sert (comme son nom l'indique) à construire l'objet, c'est-à-dire à définir toutes les variables utiles à cet objet.

Listing de l'applet

// --------------------------------------------------
// APPLETELLIPSE1 : UTILISATION DE L'OBJET "ELLIPSE"
// --------------------------------------------------
import java.applet.*;
// L'applet principale
public class AppletEllipse1 extends Applet
{
	// Déclaration des objets
	Ellipse1 e1, e2;
	// Initialisation de l'applet
	public void init()
	{
		// Initialisation des ellipses
		e1 = new Ellipse1(100, 200, 300, 50);
		e2 = new Ellipse1(150, 250);
	}
}
// L'objet a utiliser
class Ellipse1 extends Object
{
	int x, y;		// Coordonnées du centre de l'ellipse
	int largeur, hauteur;	// Dimensions de l'ellipse
	// Constructeur de l'objet
	public Ellipse1(int xx, int yy, int ll, int hh)
	{
		x = xx;
		y = yy;
		largeur = ll;
		hauteur = hh;
	}
	// Autre constructeur
	public Ellipse1(int xx, int yy)
	{
		x = xx;
		y = yy;
		largeur = 50;
		hauteur = 20;
	}
}

Télécharger le listing

Le listing en détail...

Les lignes non commentées ont déjà été traitées dans les exemples précédents.

// Constructeur de l'objet
public Ellipse1(int xx, int yy, int ll, int hh)
{
	x = xx;
	y = yy;
	largeur = ll;
	hauteur = hh;
}
On commence par le bas du listing, pour analyser l'objet Ellipse1.
La portion de listing ci-dessus illustre l'écriture d'un constructeur :
  • le constructeur est une méthode (ou fonction) qui est intégrée dans l'objet
  • le constructeur doit impérativement porter le même nom que l'objet
  • contrairement aux autres méthodes d'objets (que nous traiterons bientôt), le constructeur ne renvoie aucune valeur, ce qui signifie que des lignes comme public void Ellipse1(int xx, int yy, int ll, int hh) ou public String Ellipse1(int xx, int yy, int ll, int hh) seraient incorrectes.

Comment fonctionne ce constructeur ?

Le constructeur doit recevoir 4 valeurs entières (xx, yy, ll et hh), et il se contente de transférer ces 4 valeurs dans des variables d'objet (définissant ainsi les 4 propriétés de notre objet).
Dans le listing principal, la ligne e1 = new Ellipse1(100, 200, 300, 50); crée donc un objet Ellipse1, et appelle le constructeur, de façon à définir une ellipse de centre (x, y) = (100, 200), de largeur 300 et de hauteur 50.

Et quand il n'y a pas de constructeur ?

Vos objets auront généralement des constructeurs. Sinon, c'est le constructeur par défaut qui est appelé, ce qui explique pourquoi e = new Ellipse(); fonctionnait dans les exemples précédents.

 
public Ellipse1(int xx, int yy)
{
	x = xx;
	y = yy;
	largeur = 50;
	hauteur = 20;
}
On a ajouté un 2ème constructeur, qui porte bien sûr le nom de l'objet, mais qui attend cette fois seulement deux valeurs (xx et yy). C'est d'ailleurs sur le nombre et le type des paramètres que Java fait la différence entre les constructeurs.

La ligne e2 = new Ellipse1(150, 250); crée donc un objet Ellipse1 de coordonnées (x, y) = (150, 250). La taille de l'ellipse est imposée par le constructeur (largeur = 50 et hauteur = 20).

Pour frimer :o) : lorsqu'un objet comporte ainsi plusieurs constructeurs (ou plusieurs méthodes de même nom en général), on parle de polymorphisme.

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="AppletEllipse1.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.