Object, Délégation, Structure simple, exception

Exercice 1 - Une bibliothèque

Une bibliothèque contient des livres. Nous représenterons les bibliothèques par des objets instances de la classe Library qu'il nous faudra écrire. On trouvera en attribut de la classe un tableau de références sur des instances de Book.
On définira dans la classe Library :

  1. un attribut permettant de stocker un nombre maximum de livre ainsi qu'un constructeur, qui prend en paramètre le nombre maximum de livres que peut contenir la bibliothèque (sa capacité)
  2. une méthode int capacity() retournant la capacité de la bibliothèque
  3. une méthode void add(Book b) qui ajoute un livre dans la bibliothèque.
    Que doit-on faire si la bibliothèque est pleine ?
  4. Ecrire votre propre exception LibraryIsFull.
  5. Ecrire un main créant une bibliothèque permettant de stocker deux livres et ajouter trois livres dans celle-ci. Modifier votre main pour afficher dans le cas ou la bilothèque est pleine le message suivant "library is full".
  6. On souhaite continuer à lever une exception dans add mais éviter que l'utilisateur soit obligé d'écrire un bloc try/catch dans le main. Comment doit-on faire ?
    Modifier la déclaration de l'exception LibraryIsFull et la déclaration de la méthode add en conséquence.
  7. une méthode int size() retournant le nombre de livres contenus dans la bibliothèque
  8. une méthode boolean contains(Book book), indiquant si un livre est contenu ou non dans la bibliothèque
  9. une méthode String toString(), qui affiche l'ensemble des livres contenus dans la bibliothèque.

A quoi sert l'annotation java.lang.Override ?
Comment peut-on l'utiliser sur la méthode toString ?

Exercice 2 - Bibliothèque infinie

Ecrire la classe Library2 possédant les mêmes méthodes que Library mais dont la taille de la bibliothèque s'agrandie à la demande.
Utiliser pour cela la classe java.util.ArrayList.
Expliquer la présence de warnings.