Ceci est une ancienne révision du document !
TD2 : Système de Gestion de Bibliothèque
Partie 1 : Classe de base (15 min)
Créez une classe Livre avec :
- Attributs privés : titre, auteur, isbn, disponible (boolean)
- Constructeur avec validation (ISBN ne peut pas être null/vide)
- Getters/setters appropriés
- Méthode emprunter() qui change le statut si disponible
- Méthode retourner() qui remet le livre disponible
- toString() bien formaté
Partie 2 : Héritage (10 min)
Créez une classe LivreNumerique qui hérite de Livre :
- Attribut supplémentaire : tailleFichier (en Mo)
- Constructeur approprié
- Redéfinition de toString()
- Les livres numériques sont toujours disponibles (redéfinir emprunter())
Partie 3 : Gestion des exceptions (10 min)
Créez une exception personnalisée LivreIndisponibleException et modifiez la méthode emprunter() pour la lancer quand nécessaire.
Partie 4 : Collection et gestion (15 min)
Créez une classe Bibliotheque avec :
- Une ArrayList<Livre> privée
- Méthode ajouterLivre(Livre livre) avec gestion des doublons (même ISBN)
- Méthode emprunterLivre(String isbn) avec gestion d'exceptions
- Méthode listerLivresDisponibles() qui retourne une liste filtrée
- Méthode rechercherParAuteur(String auteur)
Partie 5 : Tests unitaires (10 min)
Créez une classe BibliothequeTest avec les tests JUnit suivants :
- testAjouterLivre() : vérifier l'ajout normal et la gestion des doublons
- testEmprunterLivreDisponible() : vérifier qu'un livre disponible peut être emprunté
- testEmprunterLivreIndisponible() : vérifier que l'exception est bien lancée
- testLivreNumeriqueToujours Disponible() : vérifier que les livres numériques restent disponibles
- testRechercherParAuteur() : vérifier le filtrage par auteur
Annotations à utiliser : `@Test`, `@BeforeEach` (pour initialiser une bibliothèque de test)Assertions à utiliser : assertEquals(), assertTrue(), assertThrows()
Critères d'évaluation
- ✅ Encapsulation respectée
- ✅ Héritage correct avec redéfinition
- ✅ Constructeurs avec validation
- ✅ Exception personnalisée utilisée
- ✅ Collections manipulées correctement
- ✅ Tests unitaires pertinents et réussis
Diagramme UML