Design Pattern - Eclipse
Le but de ce TD est de vous familiariser avec l'utilisation
de l'IDE Eclipse
Exercice 1 - Perspective/Vue, Completion et Template
- Lancer eclipse.
- Créer un projet java nommé "eclipsedemo"
(utiliser le premier icône de la barre d'outil)
- Une fois le projet créer, il est possible de voir toutes
ces propriétés en utilisant le menu contextuel sur l'item correspondant
au projet dans l'arbre de la vue package explorer.
- Par défaut, le projet java met à la racine du projet les sources et les classes.
Modifier les paramétre de création d'un projet java
(dans Window/Preference/Java/Build Path)
pour mettre les sources dans "src" et les classes dans "classes"
pour les futures projets créés.
- Modifier ensuite le projet courant :
(sur le projet courant, menu contextuel propertier/Java Build Path)
pour avoir la même organisation (regarder les onglets Source et Libraries)
Expliquer ce qu'est une vue, un éditeur et une perspective ?
- Créer dans le projet un package "fr.umlv.eclipsedemo"
- Créer une classe "HelloEcdlipse" possèdant une méthode "main" dans ce package
(Penser à sauver la classe)
- Par défaut, lors de la création d'une classe et d'une méthode
éclipse rajoute des commentaire. Modifier les paramétres par défaut pour
retirer ceux-ci (dans Window/Java/Code style/Code templates)
- Supprimer la méthode main.
Créer celle-ci en utilisant la completion: taper main puis ctrl + espace.
- Ecrire un code affichant "hello eclipse" dans la console.
(essayer de taper sysout puis ctrl + espace)
- Que se passe-t'il si lorsque l'on survol avec la souris un appel de méthode
(comme println) en maintenant la touche controle appuyée.
- Ajouter un template (Window/Preference/Java/Editor/Templates/)
nommé "logdebug" qui affiche le nom de la classe et de la méthode.
(eclipse1.png)
- Dans un terminal, exécuter la classe "HelloEclipse"
(attention, les classes sont dans le répertoire "classes")
Expliquer pourquoi il n'est pas nécessaire de compiler avec eclipse ?
Exercice 2 - Quickfix et Refactor
- Dans le même projet, dans le package "fr.umlv.eclipsedemo",
Créer une classe "Stack" implantant les méthodes :
"boolcan isEmpty()"/"push(Object o)"/"Object pop()"
en utilisant en interne un ArrayList.
(au cas où cela serait trop dure : cliquer ici)
- Créer un package "fr.umlv.eclipsedemo.util"
déplacer la classe Stack dans le package créé (par exemple par Dnd).
- écrire une classe "Main" dans le package "fr.umlv.eclipsedemo"
contenant une méthode "main" créant une pile (Stack) utilisant les méthodes isEmpty/push/pop
utiliser les quickfix pour résoudre l'import.
(cliquer sur l'icône dans la marge ou ctrl-1)
Expliquer la différence entre l'auto-completion et le quickfix ?
- Changer le code de la classe "Main" par celui-ci
- Extraire l'interface "IStack" à partir de la classe "Stack"
(Refactor/Extract Interface...)
- Modifier la classe "Main" pour introduire "IStack" là ou il faut
- Renommer l'interface "IStack" en "Stack" et la classe "Stack" en "StackImpl"
en vérifiant à chaque fois les changements sur la classe "Main"
- Génerer la javadoc (Project/generate javadoc) dans un répertoire docs
Exercice 3 - Style de codage
Eclipse permet de paramétrer le style de code
Aller dans Window/Preference/Java/Code Style/Code Formater
et créer un nouveau formateur à partir du formateur Java Convention.
Modifier votre formateur pour qu'il :
- n'utilise pas de tab
- indente de 2 espaces
- indente les switch et les cases dans les switch
- utilise les assignements dit "compact", pas d'espace
avant et après une assignation
- ni est pas d'espace juste après les if/for/while/switch/synchronized/catch et avant la parenthèse ouvrante
Appliquer le style créer à l'ensemble des sources du projets
(Contextuel/Source/Format ou Ctrl-i)
Exercice 4 - Exécuter et débugger
- Executer le code de la classe "Main"
(Run/Run As/Java Application ou Conxtuelle/Run As/Java Application)
- Demander à la machine virtuel d'afficher les réclamation d'objet
par le GC, pour cela ajouter l'argument -verbose:gc pour la machine virtuelle.
(Run/Run... et Arguments/VM arguments)
- Ajouter un argument sur la ligne de commande
- Compiler le code pour qu'il ne marche pas avec les versions antérieurs
à la version 1.3
(Window/Preference/Java/Compiler/Compliance and classfiles ou
sur le projet Contextuel/Properties/Java Compiler/Compliance and classfiles)
- Expliquer pourquoi le code va quand même planter sur une VM 1.3
et changer le "Main" en conséquence (2 changements).
- Faite exéctuer la classe "Main" par la machine virtuelle 1.4
(Window/Preference/Java/Installed/JRE) déclarer le J2SDK1.4
Puis (Run/Run... et JRE).
Expliquer comment faire pour écrire du code valable pour un environnement
java ayant une version inférieur à un environnement donné ?
- Revener à la machine virtuelle 1.5 et
placer un point d'arrêt sur la première ligne de la méthode "main()"
(sur la barre à côté du code Contextuel/Toggle breakpoint)
- Faite exécuter votre programme par le debugger
(Run/Debug... ou Run/Debug/Java Application)
Noter le changement de perspective
- Vérifier la valeur des arguments
(vues Variables)
- Avancer pas à pas dans le programme
(éditeur Debug icône Step Into)
et changer la valeur du résultat de parseInt()
(double click sur la variable "count")
- Laisser le programme terminer
Exercice 5 - Paramétrer le compilateur
Aller dans Window/Preference/Java/Compiler ou Properties/Java Compiler,
écrire un exemple de code pour chaque option permettant de tester celle-ci :
- Dans Style :
- Dans Advanced :
- Access to a non-accessible member of enclosing type
- Interface method conflicts with protected 'Object' method
- Dans Unused Code :
- Parameter is never read
- Parameter is never read (check overriding ...)
- Hidden catch block
Enfin, paramétrer le compilateur pour qu'il soit le plus strict possible
par rapport au code que vous ecrivez normalement.
Exercice 6 - Utiliser Ant
Recopier le fichier build.xml
- Dans External Tools (Run/External Tools/External Tools...),
créer une nouvelle configuration ant utilisant le fichier
- lancer le script
- lancer uniquement la compilation
- Pourquoi ne peut-on lancer l'exécution sans la compilation ?
- Changer pour que la règle par défaut lance l'exécution.
- Ajouter une règle (target) pour générer la documentation javadoc
(le manuel est ici : http://ant.apache.org/manual/
puis regarder ant task/core tasks)
Pourquoi on utilise ant plutôt que makefile ?
Exercice 7 - Utiliser le JDK1.5
Après avoir mis en place le support de la version 1.5, nous allons tester
les quelques nouveautées de cette version.
- for each
- utilisation de type paramétré
- méthode paramétré et varargs
- Auto-[un]boxing
- Enumération et covariance
- Import static
- Annotation
Exercice 8 - Installer une bibliothèque externe
On souhaite utiliser pour le projet la bibliothèque ASM
(http://asm.objectweb.org/).