2. création d'une nouvelle méthode "simple"
Dans la leçon [1],
vous avez appris à dessiner une figure géométrique
en pilotant une tortue. L'étape suivante consiste à apprendre
comment "modulariser" le code pour que ce dernier soit plus compact, lisible
et réutilisable.
Supposons que l'on veuille écrire un programme qui dessine un
carre, puis vide la fenêtre, puis redessine le même carré.
La première possibilité serait :
class Tortue extends SuperTortue{
}
public class MonProg2a{
public static void main(String[] args){
Tortue rosalie = new
Tortue();
rosalie.avance(100);
rosalie.tourneDroite(90);
rosalie.avance(100);
rosalie.tourneDroite(90);
rosalie.avance(100);
rosalie.tourneDroite(90);
rosalie.avance(100);
rosalie.tourneDroite(90);
rosalie.nettoie();
rosalie.avance(100);
rosalie.tourneDroite(90);
rosalie.avance(100);
rosalie.tourneDroite(90);
rosalie.avance(100);
rosalie.tourneDroite(90);
rosalie.avance(100);
rosalie.tourneDroite(90);
}
}
Cette manière de procéder a néanmoins des inconvénients
:
-
on ne voit pas au premier coup d'oeil que ce programme sert à dessiner
des carrés;
-
le programme est inutilement long;
-
Si on decide de dessiner le carré d'une autre manière (par
exemple en tounant à gauche de 90° après chaque trait),
il faut aller modifier 8 lignes de codes. Si le programme était
beaucoup plus long, on risque bien d'oublier certaines modifications.
La meilleure solution consiste donc à créer une nouvelle
méthode, de la manière suivante :
class Tortue extends SuperTortue{
void carre(){
avance(100);
tourneDroite(90);
avance(100);
tourneDroite(90);
avance(100);
tourneDroite(90);
avance(100);
tourneDroite(90);
}
}
public class MonProg{
public static void main(String[] args){
Tortue rosalie = new
Tortue();
rosalie.carre();
rosalie.nettoie();
rosalie.carre();
}
}
MonProg2a.java
Explications :
-
Avant de commencer ce tutorial, vous avez dû copier le fichier SuperTortue.class
dans votre répertoire personnel. Ce fichier, comme son nom l'indique,
contient la classe SuperTortue. Cette classe implémente toutes les
opérations de bases qui sont nécessaires pour piloter une
tortue (avance, recule, tourneDroite, tourneGauche,
nettoie,
etc.). Cette classe vous est fournie telle quelle et, comme vous ne disposez
pas du code source, vous ne pouvez pas la modifier. Afin de pouvoir ajouter
des nouvelles fonctionnalités aux tortues, il est nécessaire
de créer une sous-classe (ici: Tortue). Les objets de type
Tortue
auront toutes les caractéristiques des SuperTortues, plus
d'autres que vous pouvez ajouter (comme la méthode carre
ci-dessus).
class Tortue extends SuperTortue indique que la classe
Tortue est une sous-classe de SuperTortue.
[todo: ajouter un schéma]
-
void carre() indique que la méthode
ne retourne aucune valeur. On verra ceci plus en détail dans la
leçon 4.
Exercice
-
Ajoutez les méthodes rectangle, losange et triangle
à la classe Tortue, ensuite écrivez un programme qui dessine
d'abord un carré, puis vide la fenêtre, puis dessine un rectangle,
etc.
Solution
(MonProg2b.java)
7/12/2000
CLMJ