Vous êtes sur la page 1sur 2

ROB4 – POO

TP3 : médiathèque

Contraintes et remise des TPs

— Indentez vos fichiers (Eclipse peut le faire pour vous !).


— La correction tiendra compte de la briéveté des méthodes que vous écrivez (évitez les
fonctions de plus de 25 lignes) ; n’hésitez pas à découper une méthodes en plusieurs
sous-méthodes (privées) plus courtes.
— Vos classes et méthodes doivent être documentées en utilisant JavaDoc, et vos mé-
thodes (hors accesseurs et autres méthodes triviales) doivent avoir des tests unitaires
JUnit.
— Pour l’UML, vous pouvez utiliser le logiciel UMLet (http://www.umlet.com/) ou
l’outil en ligne http://www.draw.io/.
— Les noms de classe commencent par une majuscule.
— Les noms de méthodes et d’attributs commencent par une minuscule.
— La convention de nommage des accesseur est getNomAttribut() et setNomAttribut(...).
— Utilisez un projet Eclipse par TP avec comme nom de projet TPX_nom1_nom2 pour
le TP numéro X, et un package par exercice (ou série d’exercices dépendant les uns
des autres).
— Pour le rendu, placez les schémas UML et autre documents à rendre éventuellement
dans le répertoire du projet puis faites une archive tar.gz 1 de l’ensemble du réper-
toire du projet (dans votre workspace).
— Le rendu est à déposer sur Moodle au plus tard 15 min après la fin du TP (un rendu
par binome).

Cahier des charges

Dans ce TP, on se propose de construire un logiciel permettant de gérer une base de don-
nées de DVD, CD audios et livres. Une fois dans la base de données, un medium (DVD, CD
ou livre) peut être prêté à un ami, dans ce cas, l’utilisateur veut connaître le nom de cet ami et
pouvoir lister les livres qu’il a prêté. Il s’agit bien sûr d’un exercice qui permet d’appréhen-
der facilement le concept d’héritage : face à un tel problème il serait plus pertinent d’utiliser
une véritable base de donnée (type sqlite, mySQL, Oracle, etc.).
Les opérations demandées par votre client sont les suivantes :
— ajouter un médium (livre, CD, DVD) en précisant son titre, son auteur, sa date de
parution et ses caractéristiques propres (nombre de pages et éditeur pour un livre,
durée et nombre de morceaux pour un cd, durée pour un DVD) ;
— lister tous les médias (tous supports confondus) produits par un auteur donné (atten-
tion, un même auteur peut avoir produit, par exemple, un CD et un DVD) ;
— supprimer un medium identifié par un titre et un auteur ;
— supprimer tous les médias produits par un auteur donné ;
1. Pour faire une archive tar.gz : tar cvzf mon_archive.tar.gz mon_repertoire

ROB4 – POO 1 TP
— noter un médium identifié par son titre et son auteur comme prêté à un ami dont le
nom est précisé ;
— compter le nombre de medias prêtés.
Il n’est pas demandé d’interface utilisateur, sauf dans la toute dernière partie du sujet.
Les opérations doivent dans un premier lieu simplement être implémentées par des mé-
thodes (d’une classe Mediatheque par exemple), qui seront testées par des tests.

1 Modélisation UML (6 points)

Proposez un diagramme de classes pour modéliser ce logiciel. Vous devez exploiter l’hé-
ritage et préciser toutes les méthodes et attributs qui vous semble utiles pour répondre au
cahier des charges. Afin de stocker les objets dans la médiathèque, vous devez utiliser un
attribut de type ArrayList (voir TP précédent).

2 Programmation (9 points)

Après avoir fait valider votre modélisation par l’enseignant, programmez le logiciel en
Java.
Attention : toutes les classes concrètes (non-abstraites) doivent être accompagnées de
tests (tests unitaires JUnit ou fonction main avec des tests).

3 Extension (2 points)

Modifiez votre modélisation et votre code pour ajouter un médium « article de maga-
zine » avec comme caractéristique propre (en plus de celles communes à tous les médias) le
nom du magazine, le numéro du magazine et l’intervalle des pages.

4 Interface texte (3 points)

Afin de compléter notre logiciel, on veut pouvoir entrer dans le terminal chaque medium
que l’on ajoute à la bibliothèque. Pour lire une chaîne de caractères, on peut utiliser le code
suivant :
/ / en en−t e t e de f i c h i e r
import j a v a . u t i l . * ;
// ....
/ / dans v o t r e code
Scanner sc = new Scanner ( System . i n ) ;
System . o u t . p r i n t l n ( "entier ?" ) ;
i n t x = sc . n e x t I n t ( ) ;
System . o u t . p r i n t l n ( "chaine ?" ) ;
i n t y = sc . n e x t ( ) ;

Modifiez votre modélisation puis votre code pour pouvoir entrer des médias de cette ma-
nière. Attention, n’oubliez pas de faire en sorte que toutes les données spécifiques à chaque
médium soient entrées. Essayez de proposer une solution élégante « dans l’esprit de la pro-
grammation objet » qui nécessite le minimum de modifications lors de l’ajout de nouveaux
types de médias.

ROB4 – POO 2 TP

Vous aimerez peut-être aussi