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

Examen de Java Avance


Quelques conseils avant de commencer, prenez le temps de lire entièrement le sujet, si vous ne comprenez pas quelque chose essayez de faire un dessin, si des tests JUnits ne compilent pas, cela veut dire que la signature de votre méthode n'est pas la bonne (il n'y a pas de méthode surchargée dans le sujet à part celles de l'API bien sûr), si un test JUnit ne marche pas et que vous ne comprenez pas pourquoi, relisez la doc de la méthode que vous devez implanter plutôt que d'écrire la méthode pour qu'elle passe le test.

Exercice 1 - MultiMap

Le but de cet exercice est d'implanter une MultiMap, qui est une sorte de Map mais qui accepte plusieurs valeurs pour une même clé pourvu que les valeurs soient différentes. En fait, on peut voir une MultiMap comme une Map dont les valeurs sont des Set.
Une MultiMap ne devra jamais stocker null que cela soit en tant que clé ou en tant que valeur.

L'interface de fr.umlv.exam1.MultiMap est la suivante

  • La méthode size renvoie le nombre total de couples insérés dans la MultiMap. Notez que le nombre de clés de la MultiMap sera toujours inférieur ou égal à size.
  • La méthode get prend en paramètre une clé et renvoie un ensemble contenant l'ensemble des valeurs qui ont pour clé la clé recherchée. Si la clé demandée ne possède aucune valeur, la méthode get devra renvoyer un ensemble vide.
  • La méthode put ajoute un couple clé/valeur à la MultiMap, si le couple clé/valeur existe déjà la méthode renvoie false sinon la méthode ajoute la valeur dans l'ensemble des valeurs associées à la clé et renvoie vrai.

On appelera MultiMapImpl le nom de classe implantant l'interface MultiMap et celle-ci ne devra en aucun cas être visible par un utilisateur externe, pour cela, MultiMapImpl devra être implantée en tant que classe interne de la classe MultiMaps qui elle contiendra un ensemble de méthodes statiques permettant de créer des MultiMap.

Le test JUnit est ici MultiMapTest.java et vous avez aussi besoin de la classe FakeSet.java. Attention, cette classe utilise son propre package fr.umlv.exam1.test et non pas celui de MultiMap.