Média et médiathèque
Guillaume Wisniewski
[Link]@[Link]
Novembre 2017
1 Les médias
On souhaite développer une application permettant de gérer une médiathèque qui
contient des livres, des CDs et des DVDs. Chacun de ces média sera naturellement
modélisé par une classe.
Tous les médias sont décrits par un titre et un nom d’auteur. Les utilisateurs peuvent
donner leur avis sur la qualité d’un média en leur attribuant une note comprise entre 0
et 5. Il est possible :
— de représenter un média par une chaine de caractères (méthode toString). Le
format de cette représentation est :
"Titre" par Auteur
— de donner son avis sur le média grâce à la méthode vote(int note), note devant
être comprise entre 0 et 5.
— d’obtenir la moyenne des votes reçus par la méthode moyenneNotes(). Si le média
n’a reçu aucune note, cette méthode renvoie 0.
Les DVD possède une caractéristique supplémentaire permettant la gestion des zones
(une zone est décrite par un entier compris entre 0 et 8, la zone 0 indique que le DVD
est lisible dans toutes les zones). La méthode readable(int[] zones) renvoie true si
le DVD est lisible dans une des zones passées en paramètre, false sinon.
La description du CD comporte également le format du contenu décrit par une chaine
de caractères ("CD musical", "OGG", ou "MP3"). La méthode toString est modifiée
pour indiquer le format et renvoie, par exemple :
"Some Kind Of Trouble" par James Blunt [CD musical]
La description des livres ne comporte aucun élément particulier.
1 Donnez le code de la classe Livre
2 On souhaite maintenant développer la classe CD. Comme cette classe comportera
de nombreuses méthodes communes avec la classe Livre, on souhaite introduire
une classe mère générique , Media.
1
— Modifiez la classe Livre pour qu’elle hérite d’une classe Media et réorganisez
votre code de manière à tirer profit de cette nouvelle organisation.
— Écrivez le code de la classe CD.
3 Donnez le code de la classe DVD.
Remarque : dans tous les constructeurs, le premier paramètre correspondra au nom
de l’auteur, le second au titre.
2 Gestion des recherches simples
Dans une classe Mediatheque, la base de données de la médiathèque est une ArrayList
de Medium.
4 Écrivez une méthode add(Media m) qui permet d’ajouter un média à la collection.
5 Écrivez une méthode filtre(String critere, String valeur qui retourne un
ArrayList<Media> contenant l’ensemble des média vérifiant le critère passé en
paramètre. Ce critère peut porter :
— sur l’auteur ;
— sur le titre ;
— sur le type de média (on pourra utiliser l’instruction nomObjet instanceof
nomClasse qui retourne true si l’objet nomObjet est une instance de la classe
nomClasse ou de l’une de ses classes filles)
Toutes les comparaisons ne tiendront pas compte de la casse. Par exemple : [Link]("titre",
"ToTo") renverra l’ensemble des média dont le titre en minuscule est toto et
[Link]("media", "CD") renverra l’ensemble des CD de la collection.