C.
RECANATI
IHM Java
Master 1,
2005
Environnement en F206-F207 au 10/02/2005 :
On utilise un java de /usr/local. Pour vérifier que votre environnement est correct, tapez :
% which
java
depuis une console ou un terminal.
1. Si ça ne convient pas, vous pouvez modifier votre fichier .bashrc
à l’aide de la variable
JAVA_HOME = /usr/local/jdk1.5.0
[ on dispose aussi ici de /usr/java/j2sdk1.4.2_02 ou /usr/java/jdk1.5.0 ...]
puis export PATH=$JAVA_HOME/bin:$PATH
export MANPATH=$MANPATH:$JAVA_HOME/man
2. Pour utiliser eclipse, prendre le jdk1.5.0 de /usr/local et ajouter le répertoire/usr/local/eclipse à votre PATH.
3. On compile et on exécute avec
% javac fichier.java ® fichier.class
% java fichier [arg1 ... argN]
Exercice 1:
Pour améliorer l’affichage de messages d’erreurs ou de tests, écrire une méthode getClassName(Object o) qui retourne la chaine du nom de la classe de l’objet sans le chemin complet du package. Tester cette méthode avec des objets java disponibles dans les packages standards.
F On peut récupérer le nom
complet de la classe d’un objet avec getClass et getName
puis rechercher dans la chaîne ainsi obtenue l’index qui correspond
à la dernière apparition du caractère ‘.’ dans
la chaîne (utiliser lastIndexOf). En extraire alors grâce
à substring la
sous-chaîne recherchée (elle commence à l’index
trouvé + 1).
Exercice 2: le but de cet exercice est de créer une application qui mémorise un ensemble de points tirés aléatoirement et les affiche selon différents modes (sous forme de petits ronds, de petites croix, ou comme un polygone). On s’en servira ensuite dans un autre TP.
Un point sera une instance de la classe java.awt.Point. L’ensemble de points sera mémorisé dans un vecteur ensPts de la classe principale. Un champ mode (de type entier) de cette classe principale indiquera le mode d’affichage des points. Il y aura trois modes d’affichage différents, définis par des constantes nommées :
- rond : les points seront dessinés sous forme de petits ovales;
- croix : les points seront dessinés sous forme de croix ;
- poly : le polygone joignant les points sera dessiné ;
1) Ecrire une interface
définissant les constantes pour le mode d’affichage dans un
fichier séparé. Se servir de cette interface dans
l’application pour initialiser le champ mode d’une instance
de l’application à rond.
2) Ecrire une méthode initAleatoire prenant trois paramètres: nb, le nombre de points que l’on souhaite stocker, et la largeur et la hauteur du cadre qui englobera les points. initAleatoire crée nb Points dont les coordonnées (positives) se situent dans le cadre indiqué, et les stocke dans le vecteur ensPts de la classe principale.
F Pour le tirage aléatoire des points, on trouvera dans la classe Math la méthode random() qui retourne un double compris entre 0.0 et 1.0. et la méthode round(double a) qui retourne l’entier long le plus proche de a.
Exercice 3: le but de cet exercice est de tester et vérifier des objets File.
1) Ecrire une classe Test qui crée un objet File MonRep avec l’instruction
File monRep = new File
(«…/jdk1.3/src/java/io») ;
teste et imprime s’il s’agit ou non d’un répertoire.
Elle crée ensuite un nouvel objet File avec
File monFichier = new File
(monRep,«File.java») ;
et imprime si ce fichier existe, si on peut le
lire, et si on peut écrire dedans.
2) Modifier le code
précédent pour que l’application lise le nom du
répertoire et celui du fichier en argument du
programme.
3) Ecrire une classe permettant d’obtenir la liste de tous les fichiers d’un répertoire et de consigner la date de leur dernière modification.
F utiliser les méthodes getAbsolutePath, getName et getParent pour imprimer les informations sur l’objet File répertoire initial. Récupérer ensuite un tableau de File contents avec la méthode listFiles et imprimer les éléments de ce tableau en indiquant à chaque fois s’il s’agit ou non d’un répertoire, et en donnant la date de leur dernière modification (créer un objet Date à partir de contents[i].last-Modified() ).