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.
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",101);
bibli.ajouterAdherent(ad);
ad = new Adherent("Marie","Dubois");
bibli.ajouterAdherent(ad);
int n=4;
Document[] d = new Document[n];
d[0] = new Livre("Misérables","Hugo V.");
d[1] = new Journal("Dr Dobbs","september",2003);
d[2] = new BD("Thorgal: La galère noire","Van Hamme", "Rosinsky");
d[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 document. Dans la classe Adhérent, ces méthodes sont définies ainsi:
void emprunter(Document doc){...}
void rendre(Document doc){...}
Attention: un document ne peut être emprunté que si 1) il est empruntable, 2) 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();