Séance 3 (2 h 40 min) : TP 1

Transcription

Séance 3 (2 h 40 min) : TP 1
Séance 3 (2 h 40 min) : TP 1
Objectif
Au cours de ce TD, nous allons implémenter les classes Axe, Droite, Point,
EnsembleElementsRepere et Couleur.
Avant de détailler le travail à effectuer voici quelques rappels. Tout d’abord, lisez la
documentation des classes Java lorsque cela est nécessaire. Pour rappel, recherchez javadoc
NomClasse sur Google.
Ensuite, pour compiler un fichier Test.java, utilisez la commande javac Test.java puis
lancez le programme avec java Test. La classe que vous exécutez doit contenir une méthode
public static void main(String[] args) qui est le point d’entrée du programme. Pour
compiler plusieurs fichiers ensembles, lancez javac *.java ou javac fichier1.java
fichier2.java.
Pensez à compiler et tester très rapidement le code que vous écrivez. Pour cela maintenez
en permanence un fichier Main.java qui contient un point d’entrée. Utilisez ce point d’entrée
pour tester le code que vous écrivez. Moins vous êtes sûr de vous, plus souvent vous devez
effectuer cette opération.
La figure ci-dessous détaille la structure des classes que vous devez coder. La suite de
l’énoncé de TP precise les fonctionnalités que vous devez implémenter.
Fonctionnalités
Constructeurs (facile)
Chaque classe doit avoir deux constructeurs : un constructeur sans paramètre qui crée un objet
avec des valeurs par défaut, et un constructeur permettant de donner une valeur à tous les
attributs de la classe. Les constructeurs doivent utiliser le mécanisme de redéfinition pour éviter
les duplications de code (Utilisation du mot-clé super). Vous pouvez tester les constructeurs de
vos objets en utilisant ce fichier de test.
Couleurs prédéfinies (facile)
La classe couleur doit définir plusieurs couleurs prédéfinies NOIR, BLANC, ROUGE, VERT, BLEU.
(Utilisation du mot-clé static). Vérifiez que les valeur pour les couleurs sont comprises entre 0
et 255. Définissez une méthode Couleur auHasard() qui renvoie un couleur au hasard avec
des valeurs r,g et b aléatoirement générées (astuce : regardez du coté de la classe Random).
Longueur de droite (facile)
La classe Droite doit définir une méthode double getLongueur() qui permet de connaître la
longueur de la droite (astuce : regardez du coté de la classe Math).
Titre des axes (moyen)
Une spécificité de la classe Axe est que son titre soit en majuscule. Proposez une solution pour
assurer cette contrainte, même quand l’utilisateur fournit un titre comportant des minuscules.
Affichage (moyen)
Redéfinir pour chaque classe les méthodes String toString() pour obtenir les affichages
suivants (les mots soulignés sont à remplacer par les valeurs des variables):
● Point affiche “Point (x,y), couleur : (r,g,b), titre: titre”
● Droite affiche “Droite (x1,y2) -> (x2,y2), couleur : (r,g,b)”
● Axe affiche “Axe taille : taille, titre : titre”
Les méthodes String toString() doivent utiliser le mécanisme de redéfinition pour éviter au
maximum les duplications de code (invocation des méthodes toString() des super-classes).
Stockage des points et droites (difficile)
Une fois l’ensemble d’éléments de repères programmé vous pouvez tester votre code et les
performances en utilisant ce fichier de test.
Ajout, comptage et parcours
La classe EnsembleElementRepere doit stocker des éléments de type Droite et Point. Il est à
noter que cet élément de stockage est de taille dynamique, on doit toujours pouvoir rajouter de
nouveau éléments. Cette classe doit être programmée en utilisant en interne un tableau de taille
fixe (rappel : création d’un tableau de taille 10, on écrit int[] t = new int[10]). Définissez
tout d’abord la méthode ajouter(ElementRepere e) qui permet d’ajouter un élément dans
l’ensemble. Ensuite, écrivez les méthodes int nombreElements(), int nombrePoints() et
int nombreDroites() qui retournent respectivement le nombre total d’éléments, de points
et de droites. Enfin définissez la méthode ElementRepere[] elements() qui permet de
récupérer un tableau sans aucune case vide contenant tous les éléments.
Sauvegarde des descriptions
Écrivez ensuite la méthode String toString(). Cette méthode doit retourner la description
de tous les éléments contenus dans l’ensemble, une ligne par élément. Enfin implémentez
la méthode void sauvegarder(String path) qui permet de sauvegarder la description,
retournée par String toString() de l’ensemble (astuce : utilisez la classe Java FileWriter).

Documents pareils