Question 1 – Objectif du système
L'objectif du système est de gérer informatiquement une bibliothèque : référencer les ouvrages (romans et bandes dessinées), gérer les abonnés, gérer les prêts (emprunts et retours), envoyer des rappels pour les exemplaires en retard, et permettre des recherches sur les œuvres et les abonnés.
Question 2 – Utilisateurs du système
L'unique utilisateur identifié explicitement dans l'énoncé est :
- Le bibliothécaire : il gère les ouvrages, les abonnés, les prêts et effectue les recherches.
On peut aussi supposer implicitement les abonnés si une interface de consultation leur est offerte, mais cela n'est pas mentionné dans l'énoncé.
Question 3 – Distinction œuvre / exemplaire
Une œuvre est une entité abstraite (ex : le roman "Le Petit Prince" d'Antoine de Saint-Exupéry). Un exemplaire est un objet physique concret correspondant à une œuvre (ex : le 3e exemplaire du "Petit Prince" disponible en rayon).
Cette distinction est nécessaire car :
- Une bibliothèque peut posséder plusieurs exemplaires d'une même œuvre.
- C'est toujours un exemplaire qui est emprunté, pas l'œuvre.
- La recherche porte sur l'œuvre (par titre), mais la disponibilité dépend des exemplaires.
Implications sur la conception :
- Il faut deux entités distinctes dans le modèle :
Oeuvre et Exemplaire.
- Un
Exemplaire est lié à une Oeuvre (relation 1..* : une œuvre a un ou plusieurs exemplaires).
- La table/classe
Pret référence un Exemplaire, pas une Oeuvre.
Question 4 – Décomposition fonctionnelle (approche structurée)
SYSTÈME BIBLIOTHÈQUE
│
├── 1. Gestion des ouvrages
│ ├── 1.1 Saisir un nouvel ouvrage
│ ├── 1.2 Mettre à jour un ouvrage
│ └── 1.3 Supprimer un ouvrage
│
├── 2. Gestion des exemplaires
│ ├── 2.1 Ajouter un exemplaire
│ ├── 2.2 Supprimer un exemplaire
│ └── 2.3 Consulter la disponibilité
│
├── 3. Gestion des abonnés
│ ├── 3.1 Ajouter un abonné
│ ├── 3.2 Mettre à jour un abonné
│ └── 3.3 Supprimer un abonné
│
├── 4. Gestion des prêts
│ ├── 4.1 Enregistrer un emprunt
│ ├── 4.2 Enregistrer un retour
│ └── 4.3 Envoyer une lettre de rappel
│ ├── 4.3.1 Rappel BD (> 4 jours)
│ └── 4.3.2 Rappel Romans (> 14 jours)
│
└── 5. Recherche
├── 5.1 Recherche d'œuvre par titre
└── 5.2 Recherche d'abonné par nom/prénom
Question 5 – Représentation des données
Structures de données associées à chaque fonction :
- Ouvrage : {id_ouvrage, type (roman/BD), titre, editeur, auteur_ou_dessinateur}
- Exemplaire : {id_exemplaire, id_ouvrage (FK), état (disponible/emprunté)}
- Abonné : {id_abonné, nom, prénom, adresse, contact}
- Prêt : {id_pret, id_exemplaire (FK), id_abonné (FK), date_emprunt, date_retour_prevue, date_retour_effective}
La durée maximale de prêt est déterminée par le type d'ouvrage :
- Roman : 14 jours
- Bande dessinée : 4 jours
Question 6 – Identification des objets et classes (approche objet)
Objets identifiés : ouvrage, roman, bande dessinée, exemplaire, abonné, prêt, lettre de rappel, bibliothécaire.
Regroupement en classes :
Classe Ouvrage (abstraite)
- titre : String
- editeur : String
- dureeMaxPret : int
+ rechercher(titre) : Ouvrage
Classe Roman extends Ouvrage
- auteur : String
Classe BandeDessinee extends Ouvrage
- dessinateur : String
Classe Exemplaire
- id : int
- ouvrage : Ouvrage
- disponible : boolean
+ emprunter()
+ retourner()
Classe Abonne
- nom : String
- prenom : String
+ rechercher(nom_ou_prenom) : Abonne
Classe Pret
- exemplaire : Exemplaire
- abonne : Abonne
- dateEmprunt : Date
- dateRetourPrevue : Date
- dateRetourEffective : Date
+ estEnRetard() : boolean
+ genererRappel() : LettreDeRappel
Classe LettreDeRappel
- pret : Pret
+ envoyer()
Question 7 – Impact de l'évolution sur l'approche structurée
L'ajout d'albums musicaux et de DVD implique dans l'approche structurée :
- Modification de la structure de données
Ouvrage pour ajouter les types "album" et "DVD" avec leurs attributs spécifiques (interprète, réalisateur).
- Modification de toutes les fonctions qui traitent le type d'ouvrage (saisie, mise à jour, recherche, calcul de rappel).
- Ajout de nouvelles règles dans la fonction
4.3 Envoyer rappel : rappel album (> 3 jours), rappel DVD (> 2 jours).
- Impact fort : les modifications touchent de nombreuses fonctions déjà existantes → risque élevé d'introduire des bugs (code peu extensible).
Question 8 – Impact de l'évolution sur l'approche objet
L'ajout d'albums musicaux et de DVD dans l'approche objet :
- Il suffit de créer deux nouvelles classes qui héritent de la classe Ouvrage :
Classe Album extends Ouvrage
- interprete : String
(dureeMaxPret = 3 jours, hérité et redéfini)
Classe DVD extends Ouvrage
- realisateur : String
(dureeMaxPret = 2 jours, hérité et redéfini)
- Les classes
Exemplaire, Pret, Abonne et LettreDeRappel ne sont pas modifiées.
- La méthode
estEnRetard() utilise déjà dureeMaxPret de façon générique → fonctionne automatiquement.
- Impact faible : le principe d'ouverture/fermeture (Open/Closed Principle) est respecté → l'approche objet est bien plus extensible.