TP Programmation par objets - Java, Licence Informatique, Sept-Déc 2003, Université de Montpellier II
Enseignant
resp : Jacques Ferber,
L'objectif de ce TP est de réaliser un exemple plus complet et global, en partant d'un diagramme UML jusqu'à la réalisation finale en Java. L'exemple ne contient pas de difficulté particulière, si ce n'est qu'il faut bien comprendre l'héritage et comment on passe d'une représentation UML à un code Java.
On désire réaliser un programme permettant de gérer une
petite bibliothèque municipale. Pour cela on a analysé qu'on
avait besoin d'une classe Bibliotheque
, d'une classe Adherent
et
d'un ensemble de classes de Document
qui présentent les caractéristiques
suivantes:
Cet ensemble de critères a donné lieu à la réalisation du diagramme UML suivant:
Ecrire les classes Java correspondant à ce diagramme. Définir
des méthodes toString
permettant de visualiser ces objets
convenablement.
Ecrire les méthodes ajouterAdherent
et ajouterDocument
dans Bibliotheque
.
Les relations multiples entre les entités doivent être représentées comme des attributs de type java.util.Vector.
Pour tester ces
classes, ajouter dans la classe Bibliotheque
, une méthode initiale
de la manière suivante:
class Bibliotheque { ... public static void main(String[] args){ Bibliotheque bibli = new Bibliotheque(); Adherent ad = new Adherent("Jean", "Dupond"); bibli.ajouterAdherent(ad); ad = new Adherent("Marie","Dubois"); bibli.ajouterAdherent(ad); int n=4; Document[] docs = new Document[n]; docs[0] = new Livre("Misérables","Hugo V."); docs[1] = new Journal("Dr Dobbs",10,2003); // 10 représente le mois de septembre docs[2] = new BD("Thorgal: La galère noire","Van Hamme", "Rosinsky"); docs[3] = new Livre("Systèmes multi-agents","Ferber J."); for (int i=0;i<n;i++ ){ System.out.println("document "+d[i]); bibli.ajouterDocument(d[i]); } } }
Ecrire le code des méthodes permettant de gérer l'emprunt et le rendu d'un livre. Dans la classe Adhérent, ces méthodes sont définies ainsi:
void emprunter(Livre l){...}
void rendre(Livre l){...}
Attention: un livre ne peut être emprunté que s'il n'est pas déjà emprunté par un adhérent.
Dans la classe Bibliothèque, donnez le code de la méthode
Document[] chercherDocument(String titre)
qui retourne, sous la forme d'un tableau de document, tous les documents dont le titre contient la chaîne <titre>. La taille du tableau de documents correspond au nombre de documents trouvés.
Note:
il existe une méthode indexOf(String str)
qui retourne l'index
de la première occurrence de la sous-chaîne str
dans la chaîne
courante, et –1 si str n'est pas une sous-chaîne de la chaîne
courante.
Donnez l'ensemble des méthodes permettant à la bibliothèque de lister l'ensemble de ses documents avec leurs caractéristiques (c'est à dire d'imprimer dans le flux de sortie les attributs des documents) et, lorsqu'il s'agit d'un livre, de lister ses adhérents éventuels.
Pour
lancer ce listing il suffira d'envoyer un message listerDocuments()
à la
bibliothèque:
Bibliotheque bibli; ... bibli.listerDocuments();