Objectifs et mise en situation
L’objectif de ce système est d’informatiser le référencement des ouvrages d’une bibliothèque ainsi que la gestion des prêts. Les ouvrages incluent des romans (titre, auteur, éditeur) et des bandes dessinées (titre, dessinateur, éditeur). Le logiciel doit permettre au bibliothécaire de saisir, mettre à jour ou supprimer des ouvrages et des abonnés, de gérer les emprunts et retours, et d’envoyer des lettres de rappel pour les exemplaires non retournés dans les délais (4 jours pour les bandes dessinées, 2 semaines pour les romans). Une recherche par titre pour les œuvres et par nom ou prénom (sans distinction) pour les abonnés est également requise.
Remarque importante
Il est crucial de distinguer une œuvre d’un exemplaire : une œuvre peut avoir plusieurs exemplaires, et ce sont les exemplaires qui sont empruntés.
Analyse des besoins
1. Objectif du système
Automatiser la gestion des œuvres (romans et bandes dessinées), des abonnés et des prêts dans une bibliothèque.
2. Utilisateurs du système
Le bibliothécaire est le principal utilisateur.
3. Contextes d’utilisation
Interaction lors de : - La saisie ou la modification d’un ouvrage ou d’un abonné. - La gestion des emprunts et retours. - L’envoi de lettres de rappel. - La recherche d’une œuvre par titre. - La recherche d’un abonné par nom ou prénom.
4. Distinction œuvres/exemplaires et implications
Cette distinction permet de gérer plusieurs copies d’une même œuvre. Un exemplaire doit être associé à une œuvre et comporter des informations spécifiques (identifiant unique, date d’emprunt, état, etc.). Cela implique que le système doit : - Stocker les œuvres (métadonnées communes : titre, éditeur). - Stocker les exemplaires (liés à une œuvre, avec des attributs supplémentaires). - Traiter les emprunts/retours au niveau des exemplaires.
Conception avec une approche structurée (fonctionnelle)
5. Décomposition fonctionnelle
Structure arborescente suggérée :
Gestion des œuvres
- Saisie d’un roman
- Saisie d’une bande dessinée
- Modification d’une œuvre
- Suppression d’une œuvre
- Gestion des exemplaires (création, mise à jour, suppression)
Gestion des abonnés
- Saisie d’un abonné
- Modification d’un abonné
- Suppression d’un abonné
Gestion des prêts
- Emprunt d’un exemplaire
- Retour d’un exemplaire
- Vérification des délais de retour
- Génération des lettres de rappel
Recherche
- Recherche d’une œuvre par titre
- Recherche d’un abonné par nom ou prénom
6. Représentation des données
Proposition de tables :
- Œuvres (ID_œuvre, Titre, Type_œuvre [roman/BD], Éditeur)
- Exemplaires (ID_exemplaire, ID_œuvre, Date_emprunt, Date_retour_prévue, Date_retour_réelle, État)
- Auteurs (ID_auteur, Nom, Prénom) – pour les romans
- Dessinateurs (ID_dessinateur, Nom, Prénom) – pour les BD
- Abonnés (ID_abonné, Nom, Prénom)
- Prêts (ID_prêt, ID_exemplaire, ID_abonné, Date_emprunt, Date_retour_prévue, Date_retour_réelle)
7. Recherche d’une œuvre par titre
La fonctionnalité doit : - Prendre en entrée un titre partiel ou complet. - Interroger la table Œuvres pour trouver les correspondances. - Afficher les œuvres trouvées avec leurs détails (titre, type, éditeur). - Permettre de filtrer par type d’œuvre (roman ou BD). - Afficher les exemplaires disponibles pour chaque œuvre correspondante.
Conception avec une approche objet
8. Identification des objets et classes
- Classe Œuvre
- Attributs : ID_œuvre, Titre, Éditeur
- Méthodes : rechercherParTitre(), afficherDetails()
- Classe Roman (héritage de Œuvre)
- Attributs supplémentaires : Auteur (Nom, Prénom)
- Méthodes : emprunterRoman(), calculerDelaiRetour() (2 semaines)
- Classe BandeDessinée (héritage de Œuvre)
- Attributs supplémentaires : Dessinateur (Nom, Prénom)
- Méthodes : emprunterBD(), calculerDelaiRetour() (4 jours)
- Classe Exemplaire
- Attributs : ID_exemplaire, Œuvre (référence), Date_emprunt, Date_retour_prévue, Date_retour_réelle, État
- Méthodes : emprunter(), retourner(), vérifierDelai(), afficherEtat()
- Classe Abonné
- Attributs : ID_abonné, Nom, Prénom
- Méthodes : rechercherParNom(), afficherDetails(), emprunterExemplaire(), retournerExemplaire()
- Classe Prêt
- Attributs : ID_prêt, Exemplaire (référence), Abonné (référence), Date_emprunt, Date_retour_prévue, Date_retour_réelle
- Méthodes : créerPrêt(), clorePrêt(), vérifierRetard(), générerLettreRappel()
9. Schéma synthétique des classes
Relations : - Héritage : Roman et BandeDessinée héritent de Œuvre. - Collaboration : Exemplaire et Prêt collaborent pour gérer les emprunts.
10. Recherche d’une œuvre par titre (approche objet)
La méthode rechercherParTitre() de la classe Œuvre doit : - Accepter une chaîne de caractères (titre partiel ou complet). - Parcourir les instances de Œuvre et filtrer celles dont le titre correspond à la recherche. - Retourner une liste d’objets Œuvre trouvés. - Pour chaque œuvre, afficher ses exemplaires via la méthode afficherExemplaires() de la classe Exemplaire. - Gérer les cas sensibles (majuscules/minuscules) et les fautes de frappe.
Maintenance évolutive : Passage à une médiathèque
11. Impacts sur l’approche structurée
Ajout de :
- Table AlbumsMusicaux (ID_album, Titre, Interprète, Durée)
- Table DVD (ID_DVD, Titre, Réalisateur, Durée)
- Table ExemplairesMultimédia (ID_exemplaire, ID_œuvre, Type [CD/DVD], Date_emprunt, Date_retour_prévue, Date_retour_réelle, État)
- Table PrêtsMultimédia (ID_prêt, ID_exemplaire, ID_abonné, Date_emprunt, Date_retour_prévue, Date_retour_réelle)
Modification des règles de gestion :
- Délais de retour : 3 jours pour les CD, 2 jours pour les DVD.
- Ajout de fonctionnalités pour gérer les emprunts/retours des nouveaux types.
12. Impacts sur l’approche objet
Ajout de :
- Classe AlbumMusical (héritage de Œuvre)
- Attributs supplémentaires : Interprète (Nom, Prénom), Durée
- Méthodes : emprunterAlbum(), calculerDelaiRetour() (3 jours)
- Classe DVD (héritage de Œuvre)
- Attributs supplémentaires : Réalisateur (Nom, Prénom), Durée
- Méthodes : emprunterDVD(), calculerDelaiRetour() (2 jours)
- Classe ExemplaireMultimédia
- Attributs : ID_exemplaire, Œuvre (référence), Type [CD/DVD], Date_emprunt, Date_retour_prévue, Date_retour_réelle, État
- Méthodes : emprunterMultimédia(), retournerMultimédia(), vérifierDelaiMultimédia()
Modification des méthodes existantes :
- Extension de rechercherParTitre() pour inclure les albums et DVD.
- Ajout de vérifications spécifiques pour les délais des nouveaux types.
FAQ
1. Pourquoi distinguer une œuvre d’un exemplaire dans une bibliothèque ?
Cette distinction permet de gérer plusieurs copies d’un même livre ou média. Un exemplaire possède un identifiant unique et des informations spécifiques (état, date d’emprunt), tandis qu’une œuvre partage des métadonnées communes (titre, éditeur). Cela facilite la traçabilité des prêts et la gestion des stocks.
2. Quels sont les avantages de l’approche objet par rapport à l’approche structurée pour une médiathèque ?
L’approche objet simplifie l’ajout de nouveaux types de médias (CD, DVD) en utilisant l’héritage. Les classes AlbumMusical et DVD héritent de Œuvre, ce qui évite de dupliquer le code et permet une maintenance plus facile. Les règles spécifiques (délais d’emprunt) sont encapsulées dans les méthodes des sous-classes.
3. Comment implémenter la recherche par nom ou prénom sans distinction de casse ?
Utiliser une méthode comme rechercherParNom() qui convertit automatiquement les entrées en minuscules avant comparaison, ou stocker les noms/prénoms en minuscules dans la base de données. Par exemple, en SQL : SELECT * FROM Abonnés WHERE LOWER(Nom) LIKE LOWER('%nom%') OR LOWER(Prénom) LIKE LOWER('%prénom%');