Vous êtes sur la page 1sur 4

Remise en route objet / JAVA

Objectif du TP
Il vous est demandé de mettre en place quelques classes pour vous remettre en tête les
grands principes de la programmation orientée objet : messages et collaboration entre
objets, attributs et méthodes, constructeurs, héritage, etc. Pour cela, vous manipulerez des
tortues, que vous ferez jouer au ballon.

Le TP est à rendre pour le 27 septembre 2010.

Environnement
Vous pouvez choisir n'importe quel environnement de développement logiciel Java. Les
plus simples sont des éditeurs de code avec coloriage, les plus complexes permettent de
gérer tout un projet, de compiler, de débugger, etc. (par exemple Eclipse ou Netbeans).

Travail demandé
On vous fournit un package logo, qui contient trois classes. Ce code est repris de Jacques
Ferber.

Les classes définies sont les suivantes

• Tortue : la tortue elle-même, et ses diverses méthodes


• FeuilleDessin : gère une liste de tortues, et la feuille sur laquelle on dessinera
• SimpleLogo : programme graphique principal, initialisé avec une tortue courante,
et qui comporte des boutons permettant de lui passer des commandes. Les
boutons proc1, proc2, proc3 seront considérés comme pouvant être utilisés pour
lancer différents programmes.

Récupération du code

Récupérez les sources, et décompactez-le dans un dossier sur votre compte.

Compréhension du code

Explorez le code source, vérifiez que vous en comprenez le fonctionnement. Compilez et


lancez le programme principal de SimpleLogo. Testez-en le bon fonctionnement.

Amélioration des tortues


Ajoutez quelques méthodes aux tortues, permettant de réaliser d'autres figures
géométriques de base, qui pourront être appelées par les boutons proc_i :

• dessiner un immeuble avec quelques rectangles


• dessiner une étoile à n branches, de taille t, de type astérisque : des lignes qui
partent d'un même centre : avancer(t), reculer(t), tourner(360/n)

De nouvelles tortues

Créez une sous-classe de Tortue, appellée TortueAmelioree, qui a pour caractéristiques :

• de connaître son nom et de pouvoir l'écrire dans la console (on devra pouvoir
créer une tortue en lui donnant son nom, si on ne le fait pas, elle aura un nom par
défaut, par exemple "Toto1", "Toto2", "Toto3", etc. : utiliser un attribut de classe)
;
• de pouvoir connaître d'autres tortues (elle contiendra une liste d'autres tortues).
Les méthodes associées devront permettre d'ajouter et d'enlever une tortue à la
liste des tortues connues par la tortue appelée ;
• de pouvoir donner la distance à laquelle elle se trouve d'une autre tortue (l'appel
se fera en donnant une référence de tortue). Rappel : la distance entre T1 située en
(x1,y1) et T2 située en (x2,y2) est d = racinecarree( (x2-x1)^2 + (y2-y1)^2),
d'après le théorème de Pythagore que vous connaissez depuis le collège ;
• de tester après chaque déplacement si elle se trouve près d'une tortue qu'elle
connaît (par exemple moins de 15 pixels), et de la saluer par son nom, puis de lui
demander de se déplacer (par exemple avancer un peu).

Modifiez le programme principal pour tester cette nouvelle classe. Mettez en place une
méthode qui permet ce test (qui crée plusieurs tortues, les attache à la feuille de dessin,
les fait se connaître les unes les autres, en gère les déplacements, etc.). Utiliser un bouton
proc_i pour lancer le test (la tortue courante sera toujours là, mais ne sera pas utilisée).

Des tortues qui se passent une balle

Créez une sous-classe de Tortue appelée TortueBalle. Celle-ci a pour caractéristique de


se dessiner comme un disque.

Créer une classe JeuDeBalle, qui gère une partie de balle : plusieurs Tortues sont créées,
dont une balle. Une tortue joueuse commence avec la balle. Puis toutes les tortues se
déplacent au hasard. Celle qui a la balle la déplace en même temps qu'elle. Si elle se
trouve proche d'une autre tortue, elle lui passe la balle.

Testez.

Deux équipes
Créez deux sous-classes de TortueAmelioree, qui correspondent aux joueurs de deux
équipes. Le jeu peut être une simple "passe à dix" (faire 10 passes au sein d'une équipe
sans se faire prendre la balle). Donnez un comportement à chaque type de tortue
(déplacement sans la balle, déplacement avec la balle, passe à une autre tortue de la
même équipe assez proche, prise de la balle à une tortue adverse assez proche). Créez une
classe JeuEquipe, qui crée les équipes et gère le jeu, testez.

Remarques
Profitez de ce travail pour conforter ou améliorer votre niveau en JAVA : c'est l'occasion
d'apprendre à réaliser des interfaces graphiques, d'utiliser des threads, etc.

Rendu du travail
Il est obligatoire d'aller voir et de suivre les instructions générales pour le rendu de TP.

Application

Une application java qui permet de lancer le test des tortues améliorées (bouton Proc_1),
le test des tortues qui se passent la balle (bouton Proc_2), le jeu à deux équipes (bouton
Proc_3).

Rapport

Un rapport de quelques pages présentant le fonctionnement, les différentes classes du


projet (diagramme de classes) ainsi que les différents choix qui ont été faits.

Archive

Vous enverrez à yannick.prie (a) liris.cnrs.fr une archive (zip uniquement) contenant.

• l'exécutable
• les sources du projet (fichiers Java)
• la documentation javadoc de vos classes
• le rapport en PDF

Si vous êtes en SIMA :

• Le NOM du fichier archive sera TP1_SIMA_NOM1_NOM2.zip


• Le SUJET du mail envoyé sera TP1 - SIMA - NOM1, NOM2

Si vous êtes en MIF17

• Le NOM du fichier archive sera TP1_MIF17_NOM1_NOM2.zip


• Le SUJET du mail envoyé sera TP1 - MIF17 - NOM1, NOM2
N'oubliez pas de demander un accusé réception.

Barême

• Rapport : 6 points (dont orthographe : 2 points)


• Documentation Javadoc : 2 points
• Réalisation : 12 points (fonctionnement 7, raffinement 5)