L'examen est composé de deux exercices indépendants qui peuvent être traités dans l'ordre que vous voulez.
Rappel: vous devez configurer le workspace d'Eclipse (File > Switch WorkSpace) pour
qu'il corresponde au répertoire EXAM présent dans le home
de votre session de TP noté.
Attention à bien lire le sujet en entier.
On souhaite calculer des statistiques sur un tableaux d'entiers de façon paresseuse,
c'est à dire, calculer les statistiques sur le tableau au moment (et pas avant) où un utilisateur demande les statistiques avec la méthode
getStat pour la première fois. Et si l'on appelle
getStat une autre fois, les statistiques ne devraient pas être recalculées.
En fait, ici, ce que l'on veut, c'est une contrainte plus forte:
une fois qu'un objet
java.util.IntSummaryStatistics a été renvoyé par
la méthode
getStat, tous les appels suivant à la méthode
getStat
doivent renvoyer exactement le même objet
java.util.IntSummaryStatistics
(au sens de ==).
Note: pour votre culture, le langage Scala a un mot clé nommé
lazy qui provoque exactement ce comportement. C'est ce que l'on souhaite le simuler en Java.
Comme c'est un examen de concurrence et pas de Java, on vous fournit le
code qui calcule les statistiques, mais qui n'est pas
thread safe:
LazyStat.java.
Les tests JUnit pour toutes les questions de l'exercice sont dans la classe
LazyStatTest.java.
Attention, les tests sont volontairement simples pour que vous puissiez les lire (mais ne couvrent pas forcément toutes les erreurs possibles).
Ils peuvent reporter des erreurs sur la console au lieu de reporter les erreurs dans la partie graphique.
Donc un test passe s'il est vert
et qu'il ne fait pas d'erreur sur la console.
"Le Juste Prix",
The price is right en anglais, est un jeu télévisé ou plusieurs candidats s'affrontent pour gagner un article (dont le prix n'est pas connu par les candidats). Chaque candidat propose un prix et le candidat qui indique le prix le plus proche du prix réel d'un article gagne cet article.
Dans cet exercice, vous devez implanter la même mécanique de jeu avec une thread simulant un candidat.
Les tests JUnit pour toutes les questions de l'exercice sont dans la classe
ThePriceIsRightTest.java.
Attention, les tests sont volontairement simples pour que vous puissiez les lires.
Ils peuvent reporter des erreurs sur la console au lieu de reporter les erreurs dans la partie graphique.
Donc un test passe s'il est vert
et qu'il ne fait pas d'erreur sur la console.
Quelques indications: