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).