TP de mise à niveau du DESS TNI

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:

Question 1:

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]);
		}
	}
}

Question 2:

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.

Question 4:

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.

Question 5:

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();