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