Objets en Java
1 - Carres
Aujourd'hui, nous revenons sur les dessins faits avec la machine à tracer il y a quelque
semaines. Nous nous intéressons en particulier aux exercices dans lesquels il fallait tracer des
figures à base de carrés :
- grille de carrés
- empilement de carrés
- carrés emboités
Dans toutes ces figures nous manipulons des carrés dont les caractéristiques varient : position
de leur centre, taille (longueur de leur coté), rotation (autour de leur centre). Et, pour un
ensemble de caractéristiques données, nous devons être capable de dessiner le carré
correspondant.
Pour tous ces dessins, il aurait été judicieux de régler une bonne fois pour toutes le problème
du dessin d'un carré étant donné toutes ses caractéristiques afin de pouvoir composer l'ensemble
du dessin général comme une série de dessins de carrés. Dans ce cas, l'utilisation d'objets
semble judicieuse : nous combinons des données (les caractéristiques du carré) avec des
traitements sur ces données (le dessin typiquement).
Questions :
- étant donné de nouvelles versions de Carres.java et
Empilement.java, écrivez une classe Carre
permettant de dessiner les figures correspondantes. Vous pouvez remarquer que les
programmes fournis supposent qu'un Carre est construit étant donné une machine
à tracer et les coordonnées de son centre. En outre deux opérations doivent être
définies sur un carré : l'opération de dessin et une opération permettant de fixer sa
taille.
- donnez une nouvelles version des carrés emboités, cette fois itérative, qui permet de
dessiner la figure en utilisant la classe Carre écrite précédemment.
2 - Des formes pulsantes
Le but ici est d'écrire les classes permettant de compléter l'application écrite
dans le fichier FormesPulsantes.java. Pour cela
vous devrez écrire la classe Forme ainsi que les
classes Carre2, Triangle, Cercle, Hexagone et Octogone qui en
héritent. Pour pouvoir fonctionner avec le programme donné, les
classes Carre2, Triangle, Cercle, Hexagone et Octogone doivent
avoir un constructeur prenant en argument une MachineTrace (celle dans laquelle
il faudra dessiner) et les coordonnées de leur centre. En outre, la classe Forme devra contenir les méthodes :
- void fixerTaille(double t);
Détermine la taille (coté) d'un carré contenant la forme ;
- void tournerGauche(double angle);
Permet d'effectuer une rotation de angle degrés de la forme autour de son
centre ;
- void dessiner();
Dessine la forme en tenant compte des position,
taille et angle donnés à l'objet et en supposant que la plume se trouve dans un
état quelconque.
qui devront peut-être être spécialisées dans les classes filles. Etant donné la manière
dont le programme donné est écrit, il ne faudra faire des appels aux méthodes de la
machine trace que dans la méthode dessiner.
Questions :
-
commencez par ne tracer que des carrés :
- reprenez votre classe Carre et copiez la dans une classe Carre2
qui hérite de Forme. La classe Forme doit contenir les parties
communes à toutes les formes. Commencez par y mettre les parties du Carre
qui vous semblent avoir cette vocation ;
- dans un premier temps la méthode tournerGauche peut ne rien faire : les
objets ne tourneront pas, c'est tout, vous la complèterez par la suite ;
-
pour ne gérer que des carrés, donnez à la variable nbFormes la valeur 1
et commentez la partie de la méthode creerForme qui gère les autres
formes (entre case 1 et return new Octogone(m, x, y);).
-
ajoutez les Triangle et les Cercle ;
-
ajoutez les rotations ;
-
ajoutez les formes manquantes.