_______________________________________________________________________________________________________________
AGENDA ELECTRONIQUE
CONCEPTION
Construction d’un diagramme de classes
Etape 1 : constructions des schémas d’instances
On essaye de déterminer pour chaque cas d’utilisation :
- les instances qui se dégagent du CU
- les attributs des instances : noms et valeurs associées - les liens entre les instances
- les attributs des liens : noms et valeurs associées - le rôle des instances concernées par un lien
- les demandes de service à une instance : une flèche étiquetée par la requête pointe vers l’instance sollicitée ; l’ordre des sollicitations n’a pas d’importance
Par défaut (i.e. sauf mention explicite), le schéma indique l’état à la fin normale du CU.
Etape 2 : construction du diagramme de classe
On abstrait les schémas d’instances et on les rassemble dans un diagramme unique :
- abstraction des instances : classes
- abstraction des valeurs d’attributs : noms et types des valeurs associées - abstraction des liens entre les instances : associations, multiplicités et
rôles
- abstraction des attributs de liens : classes-associations - abstraction des demandes de service :
o La classe sollicitée se retrouve munie d’une opération correspondant à la requête.
o Cette opération est caractérisée par d’éventuels paramètres (quand la requête concerne une tierce instance), et par un éventuel type de résultat (quand la requête implique une réponse).
o Si la sollicitation concerne le lien (création, suppression du lien), on
peut envisager de mettre l’opération dans une classe-association
_______________________________________________________________________________________________________________
Exemple : l’agenda
Etape 1 : construction des schémas d’instances Cas d’utilisation Connexion :
Cas d’utilisation Création d’une personne :
Cas d’utilisation Modification d’une personne :
Cas d’utilisation Création d’un lieu :
zoe : Personne nom : Shmitt prénom : Zoé téléphones : 0298045763 0685885630 agenda
utilisateur OK
<<créer>>
gère utilise
utilisateur
agenda
OK connexion()
utilise
agenda
OK utilisateur
zoe : Personne nom : Shmitt prénom : Zoé téléphones : 0298457998 0685885630 modifNum(0298457998)
gère listePers()
max : Personne nom : Smith prénom : Max téléphones : 0299508932 gère
gère utilise
agenda
utilisateur OK
<<créer>>
gère utilise
bâtiment : N salle : 102 capacité : 40 salle1 : Lieu
Cas d’utilisation Modification d’un lieu :
Cas d’utilisation Création d’une réunion :
Cas d’utilisation Modification d’une réunion : modification du sujet
agenda
OK utilisateur
modifCapa(50) gère listeLieux()
gère
gère utilise
bâtiment : N salle : 102 capacité : 50 salle1 : Lieu
bâtiment : N salle : 103 capacité : 55 salle2 : Lieu
agenda
OK utilisateur
<<créer>>
gère utilise
bâtiment : N salle : 102 capacité : 40 salle1 : Lieu cours5 : Réunion date : 25/02/05 heure : 10h15 durée : 2h sujet : cours de MC
gère
a lieu dans
date : 04/03/05 heure : 10h15 durée : 2h sujet : cours de MC agenda
OK utilisateur
modifSujet(maths) gère réunions()
gère utilise
cours5 : Réunion date : 25/02/05 heure : 10h15 durée : 2h sujet : maths
Cours6 : Réunion
_______________________________________________________________________________________________________________
Cas d’utilisation Modification d’une réunion : modification du lieu
Cas d’utilisation Suppression d’un lieu :
date : 04/03/05 heure : 10h15 durée : 2h sujet : cours de MC
agenda
OK utilisateur
modifLieu(salle2) gère réunions()
listeLieux()
gère
gère utilise
cours5 : Réunion date : 25/02/05 heure : 10h15 durée : 2h sujet : maths
Cours6 : Réunion
bâtiment : N salle : 102 capacité : 50 salle1 : Lieu
bâtiment : N salle : 103 capacité : 55 salle2 : Lieu
gère gère
gère
a lieu dans
a lieu dans
agenda
OK utilisateur
utilisé?()
<<supprimer>>
gère listeLieux()
gère
gère utilise
bâtiment : N salle : 102 capacité : 50 salle1 : Lieu
bâtiment : N salle : 103 capacité : 55 salle2 : Lieu
Cas d’utilisation Participation à une réunion : inscription
Cas d’utilisation Participation à une réunion : annulation
Cas d’utilisation Participation à une réunion : liste des participants
agenda
OK utilisateur
inscrire(zoe) gère réunions()
listePers()
gère
gère utilise
cours5 : Réunion date : 25/02/05 heure : 10h15 durée : 2h sujet : maths
gère
zoe : Personne nom : Shmitt prénom : Zoé téléphones : 0298457998 0685885630 dispo?(cours5)
inscrire(cours5)
participe
agenda
OK utilisateur
annuler(zoe) gère réunions()
listePers()
gère
gère utilise
cours5 : Réunion date : 25/02/05 heure : 10h15 durée : 2h sujet : maths
gère
zoe : Personne nom : Shmitt prénom : Zoé téléphones : 0298457998 0685885630 annuler(cours5)
participe
agenda
OK utilisateur
participants() gère réunions()
utilise
cours5 : Réunion date : 25/02/05 heure : 10h15 durée : 2h sujet : maths
_______________________________________________________________________________________________________________
Cas d’utilisation Suppression d’une personne :
Cas d’utilisation Suppression d’une réunion :
agenda
OK utilisateur
zoe : Personne nom : Shmitt prénom : Zoé téléphones : 0298457998 0685885630
<<supprimer>>
gère listePers()
gère
gère utilise
cours5 : Réunion date : 25/02/05 heure : 10h15 durée : 2h sujet : maths
date : 04/03/05 heure : 10h15 durée : 2h sujet : cours de MC Cours6 : Réunion participe
participe gère
annuler (zoe)
annuler (zoe)
agenda
OK utilisateur
zoe : Personne nom : Shmitt prénom : Zoé téléphones : 0298457998 0685885630
<<supprimer>>
gère réunions()
gère
gère utilise
cours5 : Réunion date : 25/02/05 heure : 10h15 durée : 2h sujet : maths
participe
participe gère
annuler (cours5) annuler (cours5)
max : Personne nom : Smith prénom : Max téléphones : 0299508932 bâtiment : N
salle : 102 capacité : 50 salle1 : Lieu gère
a lieu dans
Cas d’utilisation Recherche sur les réunions : Personne :
Cas d’utilisation Recherche sur les réunions : Lieu :
agenda
OK utilisateur
zoe : Personne nom : Shmitt prénom : Zoé téléphones : 0298457998 0685885630 réunions()
gère listePers()
gère
gère utilise
cours5 : Réunion date : 25/02/05 heure : 10h15 durée : 2h sujet : maths
date : 04/03/05 heure : 10h15 durée : 2h sujet : cours de MC Cours6 : Réunion participe
participe gère
agenda
OK utilisateur
réunions() gère listeLieux()
gère
gère utilise
cours5 : Réunion date : 25/02/05 heure : 10h15 durée : 2h sujet : maths
date : 04/03/05 heure : 10h15 durée : 2h Cours6 : Réunion a lieu dans
a lieu dans gère
bâtiment : N salle : 102 capacité : 50 salle1 : Lieu
_______________________________________________________________________________________________________________
Cas d’utilisation Recherche sur les réunions : Sujet :
Cas d’utilisation Recherche sur les réunions : Intervalle :
date : 04/03/05 heure : 10h15 durée : 2h sujet : cours de MC agenda
OK utilisateur
sujet?(« cours de % ») gère réunions()
gère
gère utilise
cours5 : Réunion date : 25/02/05 heure : 10h15 durée : 2h sujet : maths
Cours6 : Réunion
sujet?(« cours de % »)
sujet?(« cours de % »)
date : 04/03/05 heure : 10h15 durée : 2h sujet : cours de MC agenda
OK utilisateur
date?(10/03, 30/03) gère réunions()
gère
gère utilise
cours5 : Réunion date : 25/02/05 heure : 10h15 durée : 2h sujet : maths
Cours6 : Réunion
date?(10/03, 30/03)
date?(10/03, 30/03)
Etape 2 : construction du diagramme de classe Version 1
Version 2
Réunion date heure durée sujet
bâtiment salle capacité Lieu a lieu dans
Personne nom prénom téléphones participe
créer() supprimer() modifSujet(sujet) modifLieu(Lieu) inscrire(Personne) annuler(Personne) sujet?(patron) : booléen date?(date,date) : booléen participants() : Personne[]
créer() supprimer() modifNum(entier) dispo?(Réunion) : booléen inscrire(Réunion)
annuler(Réunion) réunions() : Réunions[]
créer() supprimer() modifCapa(entier) utilisé?() : booléen réunions() : Réunions[]
1 0..N
0..N
0..N
Réunion date heure durée sujet
bâtiment salle capacité Lieu a lieu dans
Personne nom prénom téléphones participe
créer() supprimer() modifSujet(sujet) modifLieu(Lieu) sujet?(patron) : booléen date?(date,date) : booléen participants() : Personne[]
créer() supprimer() modifNum(entier) dispo?(Réunion) : booléen réunions() : Réunions[]
créer() supprimer() modifCapa(entier) utilisé?() : booléen réunions() : Réunions[]
1 0..N
0..N
0..N
inscrire() annuler()