:: Enseignements :: IMAC :: 2eme année :: 2008-2009 :: Programmation Objet avec Java ::
[LOGO]

Enums, collections


Exercice 1 - Enum

On souhaite que nos medias puissent avoir des versions spéciales :
  1. version collector : le prix est augmenté de 10%
  2. version solde : le prix est diminué de 50%
  3. version normale : pas de modification du prix
Chaque version peut donc influencer sur le prix, et on souhaite que le type de version apparaisse a coté du titre.
Par exemple pour le CD (gothique) de Marilyn Manson de Tiffany (gothique également) :
  1. version collector -> "Antechrist SuperStar *Collector Edition*"
  2. version solde -> "Antechrist SuperStar *Sale Edition*"
  3. version normale -> "Antechrist SuperStar"
Vous allez donc modifier AbstractMediaBuyable en lui ajoutant un enum Version, qui contient deux méthodes :
  1. String getExtension(), qui retourne l'extension a ajouter au titre
  2. double modifyPrice(double price), qui retourne la version modifiée du prix passé en parametre
Puis vous modifierez les méthodes getTitle() et getPrice() en conséquence, et ajouterez une méthode setVersion(Version version).

Exercice 2 - Collections : List

On s'interesse ici aux listes. JAVA contient deux implémantations intéressantes (pour vous) : LinkedList et ArrayList
  1. Faites un tableau (sur une feuille de papier, pas un [] ) comparant ces deux classes, sur les methodes implantées qui leur sont propres, et sur la difference de complexité pour les méthodes communes
  2. Remplacez votre LinkedLink dans Library par la classe de votre choix, en justifiant celui-ci

Exercice 3 - Collections : Set

  1. Quelles sont les différences entre un Set et une List ?
  2. De la meme façon que dans l'exercice précedent, comparez TreeSet et HashSet.
  3. Qu'apporte LinkedHashSet par rapport a HashSet?
  4. Que doit contenir un objet pour pouvoir etre ajouté à une hashmap?
  5. On souhaite faire un livre d'or pour les Library, ou on peut ajouter des messages, mais on n'autorise pas les doublons. Qu'utiliseriez vous pour stocker ces messages? Modifier Library pour qu'elle puisse avoir les méthodes addMessageInGoldBook(String message) et printGoldBook()
  6. Quelle classe utiliser pour que les messages soient affichés dans l'ordre alphabetique ?
  7. Quelle classe utiliser pour que les messages soient affichés dans l'ordre chronologique ?

Exercice 4 - Collections : Map

On souhaite pouvoir attribuer une note a chaque media de ....
  1. Quelles sont les différences entre une Map et un Set ?
  2. Quelles sont selon vous les classes interessantes pour vous implementant cette interface ?
  3. Modifier Library pour qu'elle puisse avoir les méthodes setNote(MediaBuyable media, double note) et getNote(MediaBuyable media)
  4. Modifier Library pour que la méthode setNote(MediaBuyable media, double note) gere des moyennes de notes, dans le cas ou plusieures personnes notent un meme media.