Corrigé du BE1–2
Transcription
Corrigé du BE1–2
Corrigé du BE1–2 Équipe enseignante Revision : 1499 CSC 4002 Télécom SudParis Octobre 2015 Corrigé du BE1–2 Employé médiathèque ajouter catégorie client modifier catégorie client supprimer catégorie client inscrire client changer client de catégorie afficher caractéristiques client modifier caractéristiques client renouveler inscription client résilier client changer adresse client médiathèque consulter emprunts client Figure 1 : Diagramme de cas d’utilisation portant sur les clients 1 Corrigé-type Il s’agit de gérer dans un logiciel les prêts de documents dans une médiathèque. 1.1 Analyse de texte Pour trouver les acteurs, les fonctionnalités et les classes, on utilise la technique de l’analyse du texte qui décrit le problème posé. 1.2 Diagramme de cas d’utilisation Les personnes ayant accès aux fonctionnalités du système sont les employés de la médiathèque et les clients de la médiathèque. Ce sont les deux types d’« acteur » de ce système. Les différentes opérations qui leur sont accessibles ont été symbolisées dans deux diagrammes de cas d’utilisation. Dans les deux figures, nous lions les deux acteurs par une généralisation spécialisation pour indiquer que les employés de la médiathèque ont accès à toutes les fonctionnalités des clients, mais que l’inverse n’est pas vrai. Le premier sur la figure 1 est spécialisé dans les cas d’utilisation associés à la partie qui gère les clients dans l’application. Le second diagramme de cas d’utilisation sur la figure 2 représente les cas d’utilisation associés à la partie qui gère les documents et les emprunts dans l’application. Ces diagrammes sont utiles notamment pour trouver la classe Médiathèque (point d’entrée du système) et ses opérations. 1.3 Liste des classes candidates et de leurs attributs • Médiathèque • Catégorie de client • Client • Document • Audio (appelée « CD audio » dans le cahier des charges) • Vidéo (appelée « DVD » dans le cahier des charges) • Livre • Localisation • Fiche d’emprunt • Genre Télécom SudParis — Équipe enseignante — Octobre 2015 — CSC 4002 2 Corrigé du BE1–2 ajouter une audio Employé médiathèque ajouter un livre ajouter une vidéo rendre consultable document rendre empruntable document retirer document emprunter document restituer document trouver les emprunts en retard afficher les statistiques consulter catalogue documents client médiathèque Figure 2 : Diagramme de cas d’utilisation portant sur les documents Il est facile de voir la généralisation spécialisation Document qui contient les attributs communs à ses classes enfant : Audio, Vidéo et Livre. Concernant les clients, comme nous désirons qu’ils puissent changer de catégorie, nous préférons introduire une classe Catégorie de client et ne pas mettre de généralisation spécialisation pour la classe Client. En effet, si nous avions organisé les clients dans une hiérarchie de classes : Client en classe parente, et Abonné, Tarif réduit et Tarif Normal en classes enfants, alors pour changer un client de catégorie il aurait fallu le supprimer puis le recréer comme une instance d’un autre type. Cette dernière méthode n’est pas naturelle. Les attributs suivants sont repris de l’énoncé : • Médiathèque – nom : string – code : string – titre : string – auteur : string • Client – nom : string – prénom : string – année : string – empruntable : boolean • Genre – adresse : string – dateInscription : string – dateRenouvellement : string • CatégorieClient – nbEmpruntsMax : integer – cotisation : float – nom : string – nbEmprunts : integer • Audio – classification : string • Vidéo – coefTarif : float – durée : integer – coefDurée : float – mentionLégale : string • Document • Livre Télécom SudParis — Équipe enseignante — Octobre 2015 — CSC 4002 3 Corrigé du BE1–2 – nombrePage : integer • FicheEmprunt 1.4 – dateRappel : date • Localisation – dateEmprunt : date – salle : string – dateLimite : date – rayon : string Premières opérations des classes Les opérations suivantes sont reprises de l’énoncé : • Médiathèque – restituerDocument – ajouterCatégorieClient – trouverEmpruntsEnRetard – modifierCatégorieClient – afficherStatistiques – supprimerCatégorieClient – consulterCatalogueDocuments – inscrireClient • FicheEmprunt – changerClientCatégorie – afficherCaractéristiquesClient – modifierCaractéristiquesClient – renouvelerInscriptionClient – résilierClient – changerAdresseClient – consulterEmpruntsClient – ajouterAudio – ajouterLivre – calculer le tarif – vérifier les emprunts • Client – bloquer/débloquer – pouvoir emprunter – changer une adresse • Document – ajouterVidéo – localiser – rendreConsultableDocument – être empruntable – rendreEmpruntableDocument – retirerDocument – emprunterDocument • Vidéo – afficher la mention légale Comme indiqué dans l’introduction, la classe Médiathèque regroupe la plupart des opérations. D’un point de vue analyse, cette classe joue le rôle d’interface utilisateur pour le système (patron de conception « Façade »). 1.5 Diagramme de classes Le diagramme de classes obtenu lors d’une première analyse à partir de l’énoncé du problème est donné dans la figure 3. Dans ce diagramme : • les opérations ne sont pas mentionnées ; • l’absence de multiplicité sur les liens signifie une multiplicité « 1 » ; • les attributs dont le nom est souligné sont des attributs de classe (la valeur est commune à toutes les instances de cette classe), les autres attributs sont des attributs d’instance (chaque instance possède une valeur qui lui est propre). Le diagramme de classes de la figure 4 est celui que nous utilisons dans la suite des bureaux d’étude. C’est celui que nous obtenons en raffinant le premier diagramme de classes avec l’utilisation des concepts avancés des diagrammes de classes : • navigabilité des associations, Télécom SudParis — Équipe enseignante — Octobre 2015 — CSC 4002 4 Document Livre * concerner Vidéo duréeFilm:integer mentionLégale:string DURÉE:integer=2*7 TARIF:double=1.5 code:string titre:string auteur:string année:string empruntable:booléen=F /emprunté:booléen=F nbEmprunt:integer=0 * est rangé nombrePage:integer DURÉE:integer=6*7 TARIF:double=0.5 classification:string DURÉE:integer=4*7 TARIF:double=1.0 Audio * Genre nom:string nbEmprunts:integer=0 * 0..1 dateEmprunt:Date dateLimite:Date dateRappel:Date /dépassé:booléen /tarif:double * FicheEmprunt * Client * nom:string prenom:string adresse:string dateInscription:Date dateRenouvellement:Date nbEmpruntsEffectues:integer=0 nbEmpruntsDepasses:integer=0 nbEmpruntsEncours:integer=0 codeRéduction:integer concerner * posséder Médiathèque nom:string * * nomCat: string nbEmpruntsMax:integer cotisation:double coefTarif:double coefDurée:double codeReductionActif:boolean CategorieClient appartenir Localisation salle:string rayon:string Corrigé du BE1–2 Télécom SudParis — Équipe enseignante — Octobre 2015 — CSC 4002 Figure 3 : Diagramme de classes directement obtenu de l’analyse du cahier des charges 5 Corrigé du BE1–2 • composition, • attribut dérivé, • attribut de classe pour les statistiques, • classe abstraite, • interface. Comme indiqué lors du cours, vous n’êtes pas censé obtenir un diagramme avec ce niveau de précision. Le diagramme de classes comprend également une interface. Empruntable donne le comportement (ensemble d’opérations) des documents vis-à-vis de l’emprunt (le tarif et la durée de prêt en fonction du type de document). Télécom SudParis — Équipe enseignante — Octobre 2015 — CSC 4002 6 Télécom SudParis — Équipe enseignante — Octobre 2015 — CSC 4002 * Document nombrePage:integer nbEmpruntsTotal:integer=0 DURÉE:integer=6*7 TARIF:double=0.5 Livre concerner duréeFilm:integer mentionLégale:string nbEmpruntsTotal:integer=0 DURÉE:integer=2*7 TARIF:double=1.5 Vidéo * << interface >> Empruntable duréeEmprunt():integer tarifEmprunt():double code:string titre:string auteur:string année:string empruntable:booléen=F /emprunté:booléen=F nbEmprunts:integer=0 Audio classification:string nbEmpruntsTotal:integer=0 DURÉE:integer=4*7 TARIF:double=1.0 * Genre nom:string nbEmprunts:integer=0 est rangé * 0..1 dateEmprunt:Date dateLimite:Date dateRappel:Date /dépassé:booléen /tarif:double * Client * nom:string prenom:string adresse:string dateInscription:Date dateRenouvellement:Date nbEmpruntsEffectues:integer=0 /nbEmpruntsDepasses:integer=0 /nbEmpruntsEncours:integer=0 codeRéduction:integer enRetard:booleen * FicheEmprunt concerner * posséder Médiathèque nom:string * * nomCat: string nbEmpruntsMax:integer cotisation:double coefTarif:double coefDurée:double codeReductionActif:boolean CategorieClient appartenir Localisation salle:string rayon:string Corrigé du BE1–2 Figure 4 : Diagramme de classes complets 7