# EXO-JAVA-Collections ## Contexte Vous devez développer une application de gestion de bibliothèque permettant de gérer un catalogue de livres et leurs emprunts. ## Objectifs 1. Créer une classe `Livre` représentant un livre avec ses caractéristiques 2. Implémenter une classe `Bibliotheque` utilisant les collections Java 3. Gérer les emprunts de livres à l'aide d'une Map 4. Tester toutes les fonctionnalités ## Spécifications techniques ### Classe Livre - Attributs : - ISBN (String) : identifiant unique du livre - Titre (String) - Auteur (String) - Année de publication (int) - Disponibilité (boolean) - Méthodes : - Constructeurs - Getters/Setters - equals() et hashCode() basés sur l'ISBN - toString() pour l'affichage ### Classe Bibliotheque - Utiliser une List pour stocker tous les livres - Utiliser une Map pour gérer les emprunts (ISBN → Date d'emprunt) - Méthodes à implémenter : - ajouterLivre(Livre livre) - supprimerLivre(String isbn) - rechercherLivre(String isbn) - emprunterLivre(String isbn) - rendreLivre(String isbn) - getLivresDisponibles() - getLivresEmpruntes() ## Contraintes - Utiliser les génériques Java - Gérer les cas d'erreur (livre non trouvé, déjà emprunté, etc.) - Documenter le code avec des commentaires JavaDoc - Écrire des tests unitaires complets ## Livrables 1. Code source complet 2. Documentation JavaDoc 3. Exemple d'utilisation dans une classe Main ou App - Respect des bonnes pratiques Java