Académique Documents
Professionnel Documents
Culture Documents
2 3
0 2
2 0
2 Diagramme de Séquences
Introduction Générale
Le Langage UML
Démarches associées
Diagramme de séquences
Les diagrammes de cas d'utilisation modélisent à QUOI sert le système, en
organisant les interactions possibles avec les acteurs.
1
Diagramme de séquences
Exemple ChangerPrixArticle
Responsable vente
Cas d’utilisation
Opérations nécessaires
ChangerPrixArticle(a,p)
ModifierPrix(P) dans le diagramme de
classes
Article
Diagramme de séquences correspondant
Prix : float
ModifierPrix(value: float) : void
Diagramme de séquences
Le diagramme de séquence utilise trois éléments de notation fondamentaux :
Objet
Ligne de vie
Message
Les objets O1 : C1 O2 : C2 O3 : C3
Un message
Temps Un autre message
Ligne de vie
L'ordre d'envoi d'un message est déterminé par sa position sur l'axe vertical du
diagramme ; le temps s'écoule "de haut en bas" de cet axe.
La disposition des objets sur l'axe horizontal n'a pas de conséquence pour la
sémantique du diagramme.
2
Diagramme de séquences
Message
Diagramme de séquences
Types de Message
Message Synchrone
L’invocation d’une opération est le type de message le plus utilisé en
programmation objet.
Dans la pratique, la plus part des invocations sont synchrones, l’émetteur reste
alors bloqué le temps que dure l’invocation de l’opération.
On peut associer aux messages d'appel de méthode un message de retour (en
pointillés) marquant la reprise du contrôle par l'objet émetteur du message
synchrone.
Si un objet A invoque une méthode d'un objet B, A reste bloqué tant que B
n'a pas terminé.
3
Diagramme de séquences
Types de Message
Objets
Message Synchrone
Message
synchrone
Diagramme de séquences
Types de Message
Message Asynchrone
Message
Asynchrone
4
Diagramme de séquences
Types de Message
Messages de création et destruction d’instance
La création d’un objet est matérialisée par une flèche qui pointe sur
le sommet d’une ligne de vie.
La destruction d’un objet est matérialisée par une croix qui marque
la fin de la ligne de vie de l’objet. La destruction d’un objet n’est
pas nécessairement consécutive à la réception d’un message.
Objet1 : Classe1
« create » Objet2 : Classe2
« destroy »
Diagramme de séquences
Syntaxe des Messages
Dans la plupart des cas, la réception d’un message est suivie de l’exécution d’une
méthode d’une classe.
<cond> est une condition sous forme d’expression booléenne entre crochets.
<iter> spécifie l’envoi séquentiel (ou en parallèle, avec ||) de plusieurs message.
On peut omettre cette spécification et ne garder que le caractère * (ou *||) pour
désigner un message récurrent envoyé un certain nombre de fois.
<var> est la valeur de retour du message, qui sera par exemple transmise en
paramètre à un autre message.
<msg> est le nom du message.
<par> désigne les paramètres (optionnels) du message.
5
Diagramme de séquences
Messages de retour
: Médiathèque
Client
Chercher("Tintin")
nbLivre = Chercher("Tintin"): 42
Diagrammes de séquences
Messages de retour
Retour d’un appel de procédure : le retour de procédure est implicite à la fin d’une
activation. Néanmoins, en cas d’envoie de messages asynchrones, il s’avère utile
pour montrer la fin de l’exécution d’une sous procédure et le renvoi éventuel de
paramètres (représenté par une flèche pointillée).
A B o:C o’ : C’
Val := calcul( )
retour
explicite
6
Diagramme de séquences
Fragments d’interaction combinés
Diagramme de séquences
Fragments d’interaction combinés
Un fragment combiné se représente par un rectangle dont le coin supérieur gauche
contient un pentagone. Dans le pentagone figure le type de la combinaison (appelé
opérateur d'interaction ).
: Classe1 : Classe2 : CLasse3
Acteur
Opérateur
7
Diagramme de séquences
Fragments d’interaction combinés
Les opérateurs fixant l’ordre d’envoi des messages : weak sequencing , strict
sequencing.
Diagramme de séquences
La condition d'exécution d'une des deux branches (l'équivalent du SI) peut être
explicite ou implicite.
[Developpez.com]
8
Diagramme de séquences
Fragments d’interaction combinés : Opérateur «alternative ou alt »
[Developpez.com]
Mhamed Saidane 1ère Ing - A.U. 2022 - 2023 17
Diagramme de séquences
[Developpez.com]
9
Diagramme de séquences
Fragments d’interaction combinés : Opérateur «break »
• L'utilisateur, lorsque le
distributeur lui demande son
code, peut choisir de rentrer
son code ou de consulter l'aide.
Si il choisit de consulter l'aide,
le flot d'interaction relatif à la
saisie du code est interrompu.
Les interactions de l'opérateur
break sont "exécutées".
[Developpez.com]
Diagramme de séquences
[Developpez.com]
10
Diagramme de séquences
Fragments d’interaction combinés : Opérateur «loop»
Diagramme de séquences
11
Diagramme de séquences
: Panier
Client
Passer Commande ()
Ref
S’authentifier
Ref
payer
Diagramme de séquences
: Panier
Client Client
Passer Commande ()
Ref PasserCommande
S’authentifier
« include » « include »
Ref
payer S’authentifier Payer
• Les inclusions et les extensions sont des cas typiques d’utilisation des opérateur de
référence.
Mhamed Saidane 1ère Ing - A.U. 2022 - 2023 24
12
Diagramme de séquences
Exemple :
Le diagramme de séquences suivant indique que lorsque l'utilisateur
se trompe trois fois de code, la carte est gardée et le distributeur se
remet en mode d'attente d'une carte.
Diagrammes de séquences
13
Diagrammes de séquences Interface / Système
14
Diagramme de séquences : Expression des besoins
Nouvelle-inscription
La secrétaire enregistre les caractéristiques d'un congressiste,
Le numéro d'inscription est généré par le système informatique,
La secrétaire lui associe ses activités scientifiques et culturelles.
Nouvelle-activité-scientifique
Une-Secrétaire Un-Congrès
: S ec r é ta ir e c : C o ng r és
a c ts : A c t-S c ie n tifiq u e a c tc : A c t-C u ltu r e lle
1 : n ou ve lle - insc r ip tio n ()
2 : c re er -fo r m ()
3 : sa isir-in fo -c o n g
(n ,p ,a ,d ) 4 : nu m := g e n e rer- nu m - insc r ip tio n ()
5 : c o ng := c r e er
(n,p ,a ,d ,nu m ) c o ng : C o ng r e ssiste
6 : lie r- c o ng (c o ng ,nu m )
7 : a ffic h e r-n u m -c o n g (n u m )
1 0 1 .. * : ch o ix -n o m -a c t-s c ie n t 1 1 : a c ts := u n e -a c t-sc ie n t?
(n o m ) (n o m )
b o u c le d ’in s c r ip tio n 1 2 : ra jo u t- c o ng res s iste
a u x a c t. s c ie n tifiq u e s
(c o ng ) 1 3 : lie r- c o ng
1 6 : d em a n d e-l-a c t- cu lt (c o ng )
1 4 : ra jo u t- a c t -sc ie nt
1 7 :{ n om } := n om -d e s-a c t-c u lt?
1 8 : a ffic h e r-a c t- c u lt ({n o m }) (a c ts )
1 5 : lie r- ac t-sc ie nt
1 9 * : ch o ix -n o m -a c t- cu lt (a c ts)
(n o m ) 2 0 : a c tc := u n e -a ct- c u lt?
b o u c le d ’in s c r ip tio n (n o m )
2 1 : ra jo u t- c o ng re ss iste 2 2 : [ nb p oss ib le > nb p a rtic ip a n ts ]
a u x a c t. c u ltu r e lle s
(c o ng ) lie r-c o ng ( c o ng )
2 3 : ra jo u t- a c t -c u lt
(a c tc )
2 4 : lie r- ac t-c u lt
Nouvelle-inscription (a c tc )
Mhamed Saidane 1ère Ing - A.U. 2022 - 2023 30
15
Diagramme de séquences : Exemple 2
Création d’un sondage (1)
Utilisateur Interface création de sondage Sondage Controller C: Catégorie T: Type Sondage
créer_sondage()
{C,T} := récupérer_information() {C} := récupérer_information()
{T} := récupérer_information()
générer_fomulaire()
afficher_formulaire()
remplir_champs(nomSondage…)
remplir_champs(contenuQuestion…)
remplir_champs(contenuReponse…) générer_champs_réponse()
remplir_champs(contenuReponse…) générer_champs_réponse()
A:=vérifierChampsObligatoires(nomSondage…)
[A] verifierValiditéChamps(dateEcheance)
B:= verifierValiditéChamps(dateEcheance)
loop
loop jusqu’à la fin de création des questions
[B]R:=créer_réponse(contenuRéponse…)R : Réponse
Q:=créer_question(contenuQuestion, { R }Q…)
: Question
S : Sondage
S :=créer_sondage( { Q } …)
envoyer des notifications
afficher sondage créé fermer_formulaire()
16