:: Enseignements :: Master :: M1 :: 2013-2014 :: 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.
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

Les tests JUnit de cet exercice sont OrangeTest.java et BasketTest.java.

  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".
    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 ?
  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. 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.
  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
                   

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

Exercice 3 - Panier de fruits

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

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. É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");