:: Enseignements :: Master :: M1 :: 2013-2014 :: Java Avancé ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | 5 fruits et légumes par jour |
Chaque exercice vient avec des tests unitaires JUnit qui
vous permettent de vérifier que votre implantation passe les tests.
Junit requiert un JAR qui n'est pas installé dans votre projet Java
par défaut. Le plus simple est de créer un test JUnit (New -> JUnit Test),
de sélectionner JUnit 4 et de laisser faire Eclipse qui vous proposera
d'installer le JAR Junit4.
L'autre solution est d'associer la librarie JUnit dans le build path du projet.
bouton droit -> Properties -> Java Build Path -> Add Library -> Libraries -> JUnit -> JUnit 4
Exercice 1 - Panier d'oranges
- Dans un paquetage fr.umlv.fruits, écrire une classe
Orange contenant 2 champs
price et
country représentant respectivement le prix (en cts d'euros de type long)
et le pays d'origine de l'orange (représenté par une chaîne de caractères).
- Écrire le constructeur prenant en paramètres les valeurs des champs
précédents.
Écrire aussi les méthodes getPrice() et getCountry().
-
Écrire une méthode toString() qui affiche les caractéristiques
de l'orange au format "Orange from France 1.45 euros".
Rappeler pourquoi faire appel à des getter dans le code
de toString est dangereux.
À quoi sert l'annotation @Override ? Doit-on l'utiliser dans ce cas ?
- Faire en sorte qu'il ne soit pas possible de créer des oranges
avec un prix négatif
- Écrire une classe
Basket permettant de stocker des instances de la classe
Orange. En interne, ces oranges seront stockées à l'aide d'une
java.util.ArrayList.
Rappelez la différence entre un tableau et une
ArrayList.
Utiliser la syntax diamand (diamond syntax) pour initializer l'ArrayList.
La classe Basket possède une méthode add
qui permet d'ajouter une orange dans le panier
ainsi qu'une méthode d'affichage
(de debug, pas besoin de faire ressortir votre coté artistique ici).
- Écrire une méthode getPrice permettant de connaître la valeur d'un panier; ce
dernier correspond à la somme des valeurs des oranges qu'il contient.
- Ecrire une méthode findFirstItemByCountryqui prend en paramètre
un pays et retourne la première Orange de ce pays.
Que doit-on faire si il n'y a pas d'Orange de ce pays ?
-
Vérifier que findFirstItemByCountry ne lève pas une exception dans
le code suivant.
Basket basket = new Basket();
basket.add(null);
basket.findFirstItemByCountry("Swiss");
Où se situe l'erreur ?
Corriger votre code.
- Modifier la méthode d'affichage pour afficher le contenu ligne à ligne
(penser au StringBuilder). La sortie devra être
de la forme suivante:
Orange Espagne 0.9
Orange Floride 0.7
Exercice 2 - Référence, comparaison d'objets
Exercice 3 - Panier de fruits
On souhaite maintenant ajouter d'autres types de fruits à notre panier.
- Ecrire une classe
Banana contenant un unique champ
country représentant le pays d'origine de la banane.
- On considère ici que la valeur d'une banane est fixée et unique à 50 centimes (constante).
Apportez les modifications nécessaires.
- Quels changements dans votre hiérarchie des classes s'imposent
pour pouvoir ajouter des
Banana à votre panier ?
Effectuez les.
- Écrire une méthode void boycottOrigin(String country) dans la
classe Basket qui retire du panier tous les fruits dont l'origine
est passée en argument.
Le code suivant doit fonctionner :
Basket b = new Basket();
b.addFruit(new Orange("France", 80));
b.addFruit(new Orange("Espagne", 80));
b.addFruit(new Orange("Floride", 90));
b.boycottOrigin("France");
© Université de Marne-la-Vallée