Projet Médiathèque
Une Médiathèque universitaire contient différents types de documents électroniques (articles,
livres, magazines…). Mais quel que soit le document, celui-ci possède un ISBN, un titre, un
tableau d’auteurs (au maximum 5 éléments de type String), un éditeur, une année d’édition et
un URL.
La médiathèque distribue des Kindles à ses clients pour accéder en ligne aux différentes
ressources de la médiathèque. Seuls les clients abonnés sont autorisés à accéder aux ressources
de la médiathèque.
Tous les clients de la médiathèque possèdent des comptes leur permettant de bénéficier de
plusieurs services (recherche de documents, historique des documents consultés, documents
favoris, documents recommandés, …). Pour pouvoir bénéficier de ces services les clients
doivent s’authentifier.
L’administrateur de la médiathèque est responsable de gérer les clients, les documents, les
kindles, les emprunts de kindles, etc.
Partie I : Conception
1. Proposer un diagramme de cas d’utilisation et un diagramme de classe pour la
médiathèque.
2. Générer les différentes classes composant le modèle du projet médiathèque
Par exemple, pour la classe Document.
1. Définissez les constructeurs
2. Assurez le principe d’encapsulation des attributs et définissez les accesseurs et
les modificateurs.
3. Quand un document est créé, il y aura des informations qui ne doivent pas être
changées. Quelles sont ces informations. Quels attributs devez-vous rajouter
pour interdire leur modification?
4. Définissez la méthode toString renvoyant la chaîne décrivant l’état d’un objet
document.
5. Définissez le destructeur d’un document permettant de rappeler l’état de celui-
ci et affichant un message qui informe l ‘utilisateur de la destruction de l’objet.
Parti 2 :
Dans la partie précédente on a défini une classe Document qui permet de modaliser tous les
types de documents qu’on peut avoir dans une médiathèque. On veut maintenant définir des
documents de natures diverses : des livres, des dictionnaires, des magazines…. A chaque livre
sont associés, en plus, un nombre de pages, un type et un tome. Un magazine se caractérise
aussi par une périodicité, un mois d’édition et finalement par un jour. Les dictionnaires ont,
eux, pour attributs supplémentaires une langue et un nombre de tomes. On voudrait pouvoir
manipuler les livres, les dictionnaires et les magazines au travers de la même représentation :
celle de Documents.
1. Définissez les classes Livre, Magazine et Dictionnaire étendant la classe Document.
Définissez pour chacune un constructeur permettant d’initialiser tous ses attributs.
2. Redéfinissez la méthode toString() dans les classes Livre, Magazine et Dictionnaire
pour qu’elle renvoie une chaîne de caractères décrivant un livre, une magazine ou un
dictionnaire, en plus de la description normale d’un document.
3. Définissez ensuite quelques classes supplémentaires, par exemple BandeDessinee,
Manga, DictionnaireBilingue, etc. avec des propriétés en plus. Pour chacune de ces
nouvelles classes, quelle classe étend-elle ?
4. Selon la conception que vous avez adopté dans le premier TP, compléter la définition
des différentes classes qui composent votre projets.
Partie 3 :
On veut maintenant définir une classe Médiathèque pour ranger tous nos documents et nos
emprunteurs. Il s’agit d’une classe contenant quatre collections : documents, adherents, kindles
et emprunts ainsi que des méthodes opérant sur celles-ci et une fonction main pour faire les
tests.
1. Donner la structure concrète la plus adéquate pour instancier les quatre collections.
2. Déclarer les quatre collections en se basant sur la syntaxe des génériques.
3. Définissez la classe Médiathèque ainsi qu’un constructeur initialisant les quatre collections.
4. Ajouter une méthode toString décrivant le contenu de la médiathèque.
5. Définissez les méthodes suivantes :
• getDocumentsByEditeur(String Editeur)
• getDocumentsbyISBN(String isbn)
• getDocumentsByAuteur(String auteur)
• getDocumentsByTitre(String titre)
• getEtudiantByCne(String cne)
• getProfesseurByCin(String cin)
• SupprimerDocument(String titre)
• SupprimerEtudiant(String cne)
• SupprimerProfesseur(String cin)
• AjouterDocument(Document d)
• AjouterAdherent(Adherent a)
• AjouterEmprunt(Emprunt e)
• ….
6. Dans la fonction main ajouter les instructions permettant à l’admin de réaliser ses différentes
tâches.