:: Enseignements :: ESIPE :: E4INFO :: 2008-2009 :: Java Avancé ::
[LOGO]

Examen de Java sur machine (2h)


Exercice 1 - Closure

Le but de cette exercice consiste à compléter la classe Functions pour que la classe puisse compiler sans changer le code déjà présent.

  1. Dans un premier temps, nous allons uniquement nous intéresser aux deux premiers 'samples'. Ecrire le code du type Function ainsi qu'une méthode apply dans la classe Functions pour que les deux samples compilent.
    Noter qu'il n'y a qu'une seule méthode apply dans la classe Functions et que celle-ci doit être la plus générique possible.
  2. Nous nous intéressons maintenant aux samples 3 et 4. Ecrire le code du type Function2 ainsi qu'une méthode aggregate dans la classe Functions pour que ces deux samples compilent.
    De la même façon, il n'y a qu'une méthode aggregate.

Exercice 2 - CoupleSet

Le but de cette exercice est d'implanter une version spécifique des Set dans le cas où l'ensemble ne peut contenir que deux éléments au maximum (zero au minimum).
L'implantation devra respecter les principes suivant:
  • L'implantation ne devra pas utiliser de tableaux ou de collections pour stocker ses élements. Penser à une façon plus compacte de représenter les choses.
  • Penser que vous implantez un ensemble, pas une liste.
  • Si l'ensemble doit contenir plus de deux éléments, une exception IllegalStateException devra être levé.
  • Il n'est pas possible d'ajouter null dans l'ensemble, la méthode utilisée pour cela devra lever une exception IllegalArgumentException.
  • Il est possible de tester si l'ensemble contient null il faudra alors dire que l'ensemble ne contient pas null en envoyant la bonne valeur de retour mais pas lever d'exception. De la même façon, il est possible de supprimer null de l'ensemble, il faudra alors dire que l'ensemble ne contient pas null mais pas lever d'exception.
  • L'iterateur devra avoir une sémantique snapshot.

  1. Implanter la classe CoupleSet
  2. Dupliquer votre classe CoupleSet en la renomant en SortedCoupleSet et modifier l'implantation pour que celle-ci respecte l'interface SortedSet.
Pour verifier que votre implantation respecte bien ce qui est demandé, vous pouvez lancer les tests JUnit suivant: