:: Enseignements :: ESIPE :: E4INFO :: 2012-2013 :: Java Avancé ::
[LOGO]

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.

Exercice 1 - Panier d'oranges

  1. 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).
  2. Écrire le constructeur prenant en paramètres les valeurs des champs précédents. Écrire aussi les méthodes. getPrice() et getCountry() .
  3. Écrire une méthode toString() qui affiche les caractéristiques de l'orange au format "Orange from France 1.45 euros".
    À quoi sert l'annotation @Override ? Doit-on l'utiliser dans ce cas ?
  4. Faire en sorte qu'il ne soit pas possible de créer des oranges avec un prix négatif
  5. É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).
  6. É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.
  7. 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 ?
  8. Pourquoi le test testWithNull ne passe pas ? Que peut'on faire ? (2 solutions) Quelle est la meuilleur des solutions ? Comment doit-on modifier le test ?
  9. 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
    
Les tests JUnit de cet exercice sont OrangeTest.java et BasketTest.java.

Exercice 2 - Référence, comparaison d'objets

Exercice 3 - Panier de fruits

On souhaite maintenant ajouter d'autres types de fruits à notre panier.
  1. Ecrire une classe Banana contenant un unique champ country représentant le pays d'origine de la banane.
  2. On considère ici que la valeur d'une banane est fixée et unique à 50 centimes (constante). Apportez les modifications nécessaires.
  3. Quels changements dans votre hiérarchie des classes s'imposent pour pouvoir ajouter des Banana à votre panier ?
    Effectuez les.
  4. Finalement, on souhaite que certains fruits puissent avoir un prix discount sur une étiquette, remplaçant alors la valeur usuelle. Pour ce faire, le fruit se voit doté d'une étiquette (classe Ticket) précisant le prix de ce dernier (en l'absence d'étiquette, le prix est la valeur normale). Apportez les changements néccessaires à la prise en compte de cette nouvelle contrainte.
  5. É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"); 
    					

Les tests JUnit de cet exercice sont Orange2Test.java, Basket2Test.java, BananaTest.java et TicketTest.java.