Vous êtes sur la page 1sur 6

Page 1

Informatique & Mathmatiques Appliques


UNIVERSITE
JOSEPH FOURIER
Sciences, Technologie, Mdecine Informatique & Mathmatiques Appliques
UNIVERSITE
JOSEPH FOURIER
Sciences, Technologie, Mdecine Informatique & Mathmatiques Appliques
UNIVERSITE
JOSEPH FOURIER
Sciences, Technologie, Mdecine
Grenoble 1
IMA

Master Professionnel Comptence Complmentaire en Informatique
Programmation par Objets
Application de gestion dun vido club.
Philippe.genoud@imag.fr

Un vido club qui propose des films soit sur support DVD soit sur support cassette VHS veut informatiser son systme
de gestion des prts. Aprs une premire analyse une bauche dapplication Java a t labore, le diagramme de
classes qui a t conu vous est fourni en annexe 1.

Les classes suivantes sont dfinies :

La classe Ralisateur qui reprsente un ralisateur de films identifi par son nom et prnom (on suppose quil
nexiste pas deux ralisateurs de mme nom et prnom)

La classe Film qui reprsente un film, identifi par son titre et son ralisateur (il peut exister deux films de mme titre
mais alors les ralisateurs sont diffrents). Si le film est une nouveaut son tarif de location sera plus lev.

La classe Article qui reprsente les diffrents articles que le magasin propose la location (DVD et cassettes VHS).
Chaque article est identifi par un numro dinventaire unique.

La classe Article possde deux sous classes :

Dvd qui reprsente les articles de type DVD. Un Dvd possde les attributs suivants :
lindication si le DVD contient des bonus ou non (boolen)
le nombre de disques (entier)

Vhs qui reprsente les articles de type cassette VHS. Une cassette Vhs possde lattribut suivant :
le type de codage vido (PAL, SECAM, NTSC). Les valeurs possibles pour ce codage sont dfinies par
lnumration TypeVHS.

La classe Adherent qui reprsente un adhrent du vido club. Chaque adhrent possde les attributs suivants :
un numro dadhrent qui lidentifie de manire unique,
un nom
un prnom
une adresse

Les associations (relations) qui lient ces diffrentes classes sont les suivantes :

un ralisateur sont associs les films quil a raliss. La cardinalit de cette association est 0..*, ce qui signifie
quun ralisateur peut exister dans le systme sans que des films lui soient forcment associs et quil ny a pas
de limite au nombre de films qui peuvent lui tre associs.
un film est associ un ralisateur et un seul.
un film sont associs les articles qui lui correspondent. La cardinalit de cette association est 0..*, ce qui
signifie quun film peut exister dans le systme sans que des articles lui soient forcment associs, et quil ny
a pas de limite au nombre darticles qui peuvent lui tre associs.
un article est associ un film et un seul.
un article peut tre associ un adhrent du vido club. Cette association indique que larticle a t emprunt
par cet adhrent. La cardinalit de cette association est 0..1. Larticle est disponible si il nest pas associ un
emprunteur, et un article ne peut avoir au plus quun emprunteur.
Page 2
un adhrent sont associs les articles quil a emprunts. La cardinalit de cette association est 0..*, ce qui
signifie que (pour le moment) le systme nimpose pas de limite au nombre darticles quun adhrent peut
emprunter.

Patrick, un programmeur java, a commenc le dveloppement de cette application, mais il est tomb malade et na pu
achever le codage. On vous demande de reprendre son travail.

Question 1 : Ecrivez le code des classes Articles et Dvd. Les mthodes et constructeurs qui apparaissent sur le
diagramme de classes sont les suivants :

Le constructeur Article(Film f) cre un nouvel article pour le film f. Le numro dinventaire de larticle est fix
automatiquement en appliquant la politique suivante: les articles sont numrots de 1 n, n tant le nombre darticles
qui ont t crs. Lorsque un nouvel article est cr, le numro qui lui est attribu est n+1.

Les accesseurs getNumeroInventaire() et getFilm()retournent respectivement le numro dinventaire de
larticle et le film associ.

Laccesseur getEmprunteur() retourne ladhrent du vido club qui a emprunt le film, ou null si le film na pas
t emprunt.

La mthode void setEmprunteur(Adherent emprunteur) permet de dfinir lemprunteur de larticle. On
passera la valeur null cette mthode lorsque larticle est rendu au vido club.

La mthode String getDescription(boolean complete) retourne un chane de caractres dcrivant
larticle. Si le paramtre complete vaut true, la forme de cette chane est la suivante :
Numro dinventaire : 12345
Titre du film : Million Dollar Baby
Ralisateur : Clint Eastwood
Nouveaut : non
Disponible ou Emprunt par le membre n : 14

Si le paramtre complete vaut true, le titre du film et le nom du ralisateur ne sont pas inclus dans la chane
retourne.

La mthode double tarifLocation() retourne le tarif de location de larticle. Le tarif de location dpend de la
nature de larticle et si il sagit ou non dune nouveaut. Pour une cassette VHS, le tarif est de 1,50 major de 0,50
si le film est une nouveaut. Pour un DVD, le tarif de base est de 2 . Ce tarif est major de 0,50 si le DVD comporte
des bonus ou si il y a plusieurs disques et de 0,75 si il sagit dune nouveaut.

Le constructeur Dvd(Film f, int nbDisques, boolean bonus) cre un nouvel article de type DVD. f est
le film associ ce Dvd, nbdisques le nombre de disques que contient le coffret, bonus indique si le Dvd contient des
bonus (true) ou non (false).

Les accesseurs hasBonus() et getNbDisques()retournent respectivement les valeurs des attributs bonus et
nbDisques.

La mthode String toString() de la classe Dvd retourne un chane de caractres dcrivant le Dvd. La forme de
cette chane est la suivante :

DVD (1 disque avec bonus)
Numro dinventaire : 12345
Titre du film : Million Dollar Baby
Ralisateur : Clint Eastwood
Nouveaut : non
Disponible ou Emprunt par le membre n : 14

La mthode double tarifLocation() de la classe Dvd retourne le tarif de location du Dvd.

Page 3
Question 2 : Ecrire le code de la classe Film (voir annexe 2).

Question 3 : Pour grer lensemble des articles du vido club il est dcid dcrire une classe Inventaire qui
propose les mthodes suivantes :

Article findArticle(int noInventaire) qui retourne larticle de numro dinventaire noInventaire si le
vido club possde un article avec ce numro, null si il nexiste pas darticle ce numro.

int nouveauDvd(Film f, int nbDisques, boolean bonus) qui permet de crer un nouvel article de
type Dvd et de lajouter linventaire. Cette mthode retourne le numro dinventaire de larticle cre.

int nouveauVhs(Film f, TypeVhs type) qui permet de crer un nouvel article de type Dvd et de lajouter
linventaire. Cette mthode retourne le numro dinventaire de larticle cre.

void supprimerArticle(int noInventaire) qui permet de retirer de linventaire larticle de numro
noInventaire. Si il nexiste pas darticle ce numro la mthode est sans effet. Si larticle a t emprunt, il ne peut tre
retir de linventaire. Dans ce cas une exception de type ArticleException avec le message article emprunt
est lance. La classe ArticleException est une classe dexceptions qui a t dveloppe pour ce projet. Sa
javadoc vous est fournie en annexe 3.

a) Quelle structure de donnes proposez-vous dutiliser pour stocker les articles de linventaire ? Justifiez votre
rponse.

b) Quelle modification faut-il apporter la classe Film pour permettre la suppression dun article ? Ecrivez le
code ajouter la classe Film.

c) Ecrivez le code de la classe Inventaire.

d) Ecrivez un petit programme qui permet de tester la classe Inventaire. Ce programme excute les traitements
suivants :

Creation dun inventaire (vide au dpart)
Cration dun objet ralisateur r
Cration dun objet film f associ r
Ajout linventaire dun premier dvd associ f, no1 son numro dinventaire
Ajout linventaire dun second dvd asoci f, no2 son numro dinventaire
Ajout linventaire dune cassette vhs associe f, no3 son numro dinventaire
Cration dun adhrent a.
Emprunt du dvd no1 par a

Affichage sur la console de la liste des articles associs f

Suppression du second dvd (no2) de linventaire
Suppression premier dvd (no1) de linventaire. Cette suppression doit chouer car le dvd est emprunt.

Affichage sur la console de la liste des articles associs f
Page 4


Annexe 1
Diagramme de
classes de
lapplication
VidoClub
Page 5
Annexe 2 : spcification des constructeurs et mthodes de la classe Film

/**
* Cration d'un film
* @param titre le titre du film
* @param r le ralsateur du film
*/
public Film (String titre, Realisateur r)

/**
* @return le titre du film
*/
public String getTitre ()

/**
* @return le ralisateur du film
*/
public Realisateur getRealisateur ()

/**
* fixe la valeur de l'attribut nouveaut
* @param val true si le film est une nouveaut, false sinon
*/
public void setNouveaute(boolean val)

/**
* @return true si le film est une nouveaut
*/
public boolean isNouveaute()

/**
* cration d'un nouveau dvd et ajout de celui-ci la liste des
* articles de ce film
* @param nbdisques nombre de disques du DVD
* @param bonus
* @return l'objet Dvd cre
*/
public Dvd nouveauDvd (int nbdisques, boolean bonus)

/**
* cration d'une nouvelle cassette vhs et ajout de celle-ci la liste
* des articles de ce film
* @param type le type de codage vido
* @return l'objet vhs cre
*/
public Vhs nouveauVhs (TypeVHS type)


/**
* nombre d'articles pour ce film
* @return le nombre d'articles
*/
public int getNbArticles()

/**
* recherche parmi les articles pour ce film un Dvd disponible
* @return un dvd disponible (non emprunt) ou null si aucun
*/
public Dvd dvdDisponible ()

/**
* recherche parmi les articles pour ce film un Dvd disponible
* @return un dvd disponible (non emprunt) ou null si aucun
*/
public Vhs vhsDisponible ()

@Override
public String toString()

/**
* renvoie un iterateur sur les articles associs ce Film
* @return iterateur sur les articles du film
*/
public Iterator<Article> iterator()


Page 6

Vous aimerez peut-être aussi