:: Enseignements :: Master :: M1 :: 2009-2010 :: Java Avancé ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Des fourmis dans mon panier |
Il est conseillé de se référer à l'aide sur
Ant et
JUnit.
Exercice 1 - Travail de fourmi
Compléter le script ANT suivant. Le but final est de faire la compilation et l'exécution du code de test
(i.e. votre
main) de votre paquetage
fr.umlv.fruits. Pour plus d'informations, regarder du côté de
cette aide et du
manuel en ligne
.
- Qu'effectue la
target
compile ?
Que doit-on faire si le répertoire
classes n'existe pas ?
Créer une
target
prepare pour cela et indiquer que la
target
compile dépend de la
target
prepare.
- Ecrire une
target
clean qui efface l'ensemble des
.class générés.
- Ecrire une
target
run qui exécute le code de test.
- Ecrire une
target
jar qui crée un jar exécutable correspondant au code de test.
Pour tester votre jar :
java -jar fruits.jar
- Ecrire une
target
all qui sera la target par défaut et qui lancera la compilation ainsi que la
création du jar.
Exercice 2 - Egalité de paniers
On souhaite maintenant ajouter la possibilité de tester l'égalité des
paniers.
- Pourquoi devez vous redéfinir la méthode
equals plutôt que de définir une méthode ad-hoc ?
- Ecrire une première version de la redéfinition de la méthode
equals de votre classe
Basket qui se contente de faire appel à la méthode
equals des
ArrayList utilisées dans votre implémentation.
Le résultat obtenu est-il satifaisant ?
- Modifiez votre code afin de trier la liste après chaque insertion d'un nouveau fruit.
Cette solution impose que les fruits soient comparables 2 à 2.
En quoi les critères de comparaison de fruits suivants ne sont pas acceptables ?
- l'ordre alphabétique sur le nom du fruit
- l'ordre alphabétique sur l'origine du fruit
- l'ordre alphabétique sur une combinaison du nom du fruit et de son origine
Proposez une meilleure solution afin que la comparaison de deux Fruits conduisent, lors du tri de l'ArryList, à une liste
toujours ordonnée de la même façon quelque soit l'ordre d'insertion des éléments dans la liste.
- On se propose d'implémenter deux autres solutions utilisant des
ArrayList et de les comparer. Pour chacune des solutions suivantes, implémentez la et
calculez sa complexité pire cas sur le scénario proposé plus haut en considérant n ajouts suivis d'un appel à equals.
Pour optimiser votre implémentation, pensez
à ne pas retrier le panier si ce dernier l'est déjà (e.g. utilisation d'un FLAG).
- Trier la liste à chaque comparaison des paniers.
- Insérer les éléments directement à la bonne position (voir du côté des
itérateurs).
- Que deviennent les complexités des différentes solutions si on entrelace des ajouts et des appels à equals ?
- Quels seraient les effets sur la complexité si on utilise une LinkedList plutôt qu'un ArrayList ? Réfléchir en classe et implémenter à la maison.
Exercice 3 - JUnit (A la maison)
- Suivez les instructions décrites dans l'aide JUnit.
- Exportez vos package sous la forme d'un jar sans les sources.
- Proposez un ensemble de tests JUnit pour vérifier l'implémentation d'un de vos collègues en utilisant son fichier jar.
- Ajouter à votre script ANT une
target
junit afin de pouvoir lancer les tests JUnit.
© Université de Marne-la-Vallée