sio:bloc2:2a:td2

Ceci est une ancienne révision du document !


TD2 : Système de Gestion de Bibliothèque

Créez une classe Livre avec :

  1. Attributs privés : titre, auteur, isbn, disponible (boolean)
  2. Constructeur avec validation (ISBN ne peut pas être null/vide)
  3. Getters/setters appropriés
  4. Méthode emprunter() qui change le statut si disponible
  5. Méthode retourner() qui remet le livre disponible
  6. toString() bien formaté

Créez une classe LivreNumerique qui hérite de Livre :

  1. Attribut supplémentaire : tailleFichier (en Mo)
  2. Constructeur approprié
  3. Redéfinition de toString()
  4. Les livres numériques sont toujours disponibles (redéfinir emprunter())

Créez une exception personnalisée LivreIndisponibleException et modifiez la méthode emprunter() pour la lancer quand nécessaire.

Créez une classe Bibliotheque avec :

  1. Une ArrayList<Livre> privée
  2. Méthode ajouterLivre(Livre livre) avec gestion des doublons (même ISBN)
  3. Méthode emprunterLivre(String isbn) avec gestion d'exceptions
  4. Méthode listerLivresDisponibles() qui retourne une liste filtrée
  5. Méthode rechercherParAuteur(String auteur)

Créez une classe BibliothequeTest avec les tests JUnit suivants :

  1. testAjouterLivre() : vérifier l'ajout normal et la gestion des doublons
  2. testEmprunterLivreDisponible() : vérifier qu'un livre disponible peut être emprunté
  3. testEmprunterLivreIndisponible() : vérifier que l'exception est bien lancée
  4. testLivreNumeriqueToujours Disponible() : vérifier que les livres numériques restent disponibles
  5. testRechercherParAuteur() : vérifier le filtrage par auteur

Annotations à utiliser : `@Test`, `@BeforeEach` (pour initialiser une bibliothèque de test)Assertions à utiliser : assertEquals(), assertTrue(), assertThrows()

  • ✅ 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

Livre-titre: String-auteur: String-isbn: String-disponible: boolean+Livre(titre: String, auteur: String, isbn: String)+getTitre(): String+getAuteur(): String+getIsbn(): String+isDisponible(): boolean+emprunter(): void+retourner(): void+toString(): StringLivreNumerique-tailleFichier: double+LivreNumerique(titre: String, auteur: String, isbn: String, tailleFichier: double)+getTailleFichier(): double+emprunter(): void+toString(): StringBibliotheque-livres: ArrayList<Livre>+ajouterLivre(livre: Livre): boolean+emprunterLivre(isbn: String): void+listerLivresDisponibles(): List<Livre>+rechercherParAuteur(auteur: String): List<Livre>LivreIndisponibleException+LivreIndisponibleException(message: String)BibliothequeTest-bibliotheque: Bibliotheque+setUp(): void+testAjouterLivre(): void+testEmprunterLivreDisponible(): void+testEmprunterLivreIndisponible(): void+testLivreNumeriqueToujours Disponible(): void+testRechercherParAuteur(): voidExceptionRedéfinition :Les livres numériquesrestent toujours disponiblesException personnaliséelancée quand un livren'est pas disponiblehéritecontient10..*throwshériteteste

  • sio/bloc2/2a/td2.1757897563.txt.gz
  • Dernière modification : il y a 16 heures
  • de jcheron