Le code ci-dessous montre comment créer la classe Trait, puis comment modifier les méthodes av2 et redessine de la classe Tortue en conséquence. Le programme principal dessine deux petites maisons (avec un saut entre les deux).
class Trait{
//variables d'instances
Coordonnee depart;
Coordonnee arrivee;
Trait(Coordonnee dep, Coordonnee arr){
depart = dep;
arrivee = arr;
}
Coordonnee depart(){
return(depart);
}
Coordonnee arrivee(){
return(arrivee);
}
}
class Tortue extends SuperTortue{
Trait[] tableau = new Trait[100];
//pour stocker les 100 premiers traits de la
tortue
int i = 0;
//indique l'index de la prochaine case libre
dans le tableau
void av2(int dist){
Coordonnee c1 = position();
avance(dist);
Coordonnee c2 = position();
tableau[i] = new Trait(c1,c2);
i++;
}
void redessine(){
for(int j=0; j<i;
j++){
dessineTrait(tableau[j].depart(), tableau[j].arrivee());
}
}
Coordonnee triangle(int longueurCote){
tourneDroite(30);
av2(longueurCote);
Coordonnee coord = position();
tourneDroite(120);
av2(longueurCote);
tourneDroite(120);
av2(longueurCote);
tourneDroite(90);
return(coord);
}
Coordonnee rectangle(int hauteur, int largeur){
av2(hauteur);
Coordonnee coord = position();
tourneDroite(90);
av2(largeur);
tourneDroite(90);
av2(hauteur);
tourneDroite(90);
av2(largeur);
tourneDroite(90);
return(coord);
}
void maison(int hauteurMur, int largeur, int
x, int y){
saute(x,y);
Coordonnee c = rectangle(hauteurMur,
largeur);
saute(c.x(), c.y());
triangle(largeur);
}
}
public class MonProg13a{
public static void main(String[] args){
Tortue rosalie = new Tortue();
rosalie.maison(50,80,100,500);
rosalie.maison(100,60,400,300);
rosalie.nettoie();
rosalie.redessine();
}
}
MonProg13a.java
Remarque
[à revoir] méthodes pour retourner la valeur des variables
d'instance et pour les mettre à jour peut être intéressant
(manipulation de ces variables uniquement au moyen de ces méthodes)
-> en cas de changement de représentation interne -> modification
minimale du code des autres méthodes.