Chap. 1 : Introduction
Chap. 2 : Approche objet
Chap. 3 : Présentation d’UML
Chap. 4 : Diagramme de cas d’utilisation
Chap. 5 : Diagramme d’activité
Chap. 6 : Diagrammes de séquence
Chap. 7 : Diagramme de classes
Chap. 8 : Diagramme d’objets
Chap. 9 : Diagramme d’états-
d’états-transitions
S. MBARKI 2
CHAPITRE 1
Introduction
S. MBARKI 3
Le logiciel
S. MBARKI 5
Génie logiciel
Définition
Méthodes et outils de production en équipe d’un logiciel complexe et
à multiples versions
Logiciel : ensemble de documents d'analyse,
d'analyse, de conception et de
programmes et documents de tests.
Le génie logiciel comporte également des aspects de gestion de
projets pour maîtriser le coût du logiciel,
logiciel, ses délais et les risques
associés.. Le logiciel doit donner satisfaction aux clients.
associés
Programmation vs Génie logiciel
Programmation : activité personnelle
Génie logiciel : activité d’équipe
La partie programmation n’occupe qu’entre 10% et 30% de l’effort
total du cycle de vie.
S. MBARKI 6
Cycle de vie d’un logiciel
S. MBARKI 7
Les étapes du cycle de vie
Expression des besoins et analyse
Les fonctionnalités du système et les contraintes sont établies en
consultant les utilisateurs. Elles doivent être définies de façon
compréhensible à la fois pour les clients et les développeurs.
• Les besoins sont structurés par les cas d’utilisation.
• L’analyse sert à comprendre la forme interne du logiciel et est structurée
par la réalisation des cas d’utilisation en définissant les classes d’analyse.
Conception du système
Processus à plusieurs étapes et qui consiste à représenter les
diverses fonctions du système d’une manière qui permettra d’obtenir
un ou plusieurs programmes réalisant ces fonctions.
Met le point sur trois propriétés : Architecture du logiciel, structures
de données et le détail procédural
S. MBARKI 8
Les étapes du cycle de vie (suite)
Réalisation et tests unitaires
Réaliser un ensemble d’unités de programme écrites dans un
langage de programmation.
Les tests unitaires permettent de vérifier que les unités de
programme répondent à leurs spécifications
Tests d’intégration
On intègre les unités de programme et on réalise des tests
globales pour être sûr que les besoins ont été satisfaits
Maintenance
Plus longue étape du cycle de vie. Elle consiste à :
• Corriger les erreurs non découvertes lors des étapes précédentes
• Adapter le système aux nouveaux besoins
S. MBARKI 9
Cycle de vie (cascade)
Analyse
Conception
Réalisation
Tests
Maintenance
S. MBARKI 10
Cycle de vie (spirale)
Flexibilité
modification des spécifications = nouvelle itération
Processus adapté à la modélisation objet
S. MBARKI 11
CHAPITRE 2
Approche objet
S. MBARKI 12
Développement procédural
S. MBARKI 14
Inconvénients de l’approche procédurale
S. MBARKI 15
Structure d’un programme objet
objet1
Interaction
objet2
objet4 objet3
Interaction
S. MBARKI 16
Avantages du Concept Objet
En programmation procédurale, on a :
des données, qui sont passifs
Des fonctions, qui peuvent manipuler ces données
Un objet contient à la fois des propriétés et des
opérations qui manipulent ces propriétés.
un objet est actif
chaque objet est responsable de ses propres propriétés.
L’objet : est une entité fondamentale qui regroupe des
propriétés--opérations.
propriétés
S. MBARKI 18
Un objet a un état
S. MBARKI 19
L'encapsulation
Principe d'encapsulation :
Réunir à l’intérieur d’une même entité les données et
les méthodes
Abstraction des données : la structure d’un objet n’est
pas visible de l’extérieur, son interface est constituée
de messages invocables par un utilisateur, la réception
d’un message déclenche l’exécution de méthodes
Abstraction procédurale : du point de vue de
l’extérieur, on n’a aucune information sur la définition
de la méthode
S. MBARKI 20
L'agrégation
chassis
S. MBARKI 24
Méthodologies d'analyse et de conception
S. MBARKI 27
UML est un langage de modélisation
S. MBARKI 28
Modéliser toutes les vues du système
Le développement d’un
d’un système logiciel doit être abordé
selon différentes vues
Ces vues reflètent les attentes/besoins des différents
acteurs impliqués dans le développement du système
utilisateurs,
client,
analystes,
programmeurs,
chef du projet,
…
Ces vues seront prises en compte en se basant sur
divers diagrammes
S. MBARKI 29
Les diagrammes d'UML
S. MBARKI 30
Les diagrammes d'UML (suite)
S. MBARKI 31
Les diagrammes structurels d'UML :
vue d'ensemble
S. MBARKI 34
Les stéréotypes
Notation: <<
<<stéréotype
stéréotype>>
>>
S. MBARKI 35
Quelques stéréotypes standards d'une
classe
<<metaclass>>
Domaine ses instances
sont des <<interface>>
classes Transaction
<<exception>>
DivisionPar0
S. MBARKI 36
Cas des stéréotypes Entity, Boundary et
Control
Classe <<Entity
<<Entity>>
>>
Modélise la catégorie d'objets qui ont une durée de vie
importante dans le système
Classe <<Boundary
<<Boundary>>
>>
Modélise la communication des classes entity avec
l'extérieur du système (l'utilisateur)
Classe <<Control>>
Sert à coordonner les échanges de messages entre les
autres classes pour réaliser un Use case
S. MBARKI 37
Cas du stéréotype Utility
Classe <<Utility>>
Contient un ensemble d'attributs et de méthodes à accès
libre
Ces méthodes n’appartiennent à aucune instance
En général, ces méthodes offrent un ensemble de
fonctionnalités utiles dans plusieurs contextes:
• Fonctions mathématiques,
• Algorithmes de tri
• Algorithmes de recherche,
• Etc.
S. MBARKI 38
Les valeurs marquées
classe A
{auteur = Alami}
Attributs
Opérations
S. MBARKI 39
Les notes
Voir http://www.
Voir encrypt.doc doc.com
S. MBARKI 40
Les contraintes
+racineCarre
(valeur):reel
{valeur > 0}
S. MBARKI 41
Les commentaires
Classe C
Renvoie valeur contenu de la
^0.5 méthode
+racineCarre
(valeur):reel
S. MBARKI 42
Les packages
D’autres packages
S. MBARKI 43
Les packages (suite)
IHM
S. MBARKI 44
Les dépendances entre packages
Destination1
<<importe>>
Source
Destination 2
<<accède>>
S. MBARKI 45
CHAPITRE 4
Diagramme de cas d’utilisation
S. MBARKI 46
Définition (1)
Jacobson, 1992
« … une façon spécifique d’utiliser le système en utilisant
une partie de sa fonctionnalité. [Un use case] constitue
une séquence complète d’interactions qui a lieu entre un
acteur et le système »
Fowler, 1997
« … une interaction typique entre un utilisateur et un
système informatique … [qui] capture une fonction
d’intérêt pour l’utilisateur … [et qui] permet d’atteindre un
but discret pour l’utilisateur »
Rumbaugh et al, 1999
« …la spécification de séquences d’actions, pouvant
inclure des variantes ou des séquences d’erreur, qu’un
système, sous-
sous-système ou classe peuvent exécuter en
interagissant avec des acteurs extérieurs »
S. MBARKI 47
Définition (2)
S. MBARKI 48
Exemple (1)
S. MBARKI 49
Exemple (2)
S. MBARKI 50
Eléments de modélisation : Acteur (1)
Notation :
uc system
uc system
«actor»
Client
Client
Exemple d’acteurs :
Client, Repsésentant du service client, directeur de ventes,
ventes,
administrateur de bases de données,
données, matériel externe
externe,, système
externe,, …
externe
Tout acteur doit communiquer avec le système
S. MBARKI 52
Eléments de modélisation : Cas
d’utilisation (1)
Retirer argent
S. MBARKI 53
Description d’un cas d’utilisation (1)
Acheter un produit
Scénario principal :
1. Le client consulte le catalogue et choisit des articles
2. Le client passe au paiement
3. Le client remplit ses coordonnées et le mode de livraison
4. Le système affiche le prix total à payer, livraison incluse
5. Le client fournit les informations de sa carte bancaire
6. Le système vérifie si le client est autorisé
7. Le système confirme l’achat immédiatement
8. Le système envoie une confirmation par e-mail au client
Extensions :
3a: Le client est fidèle
.1: Le système affiche les informations (articles choisis, prix, facture)
.2: Le client accepte ou rectifie ces informations, passer à l’étape 6
6a: Le système n’autorise pas le client
.1: Le client introduit les informations d’une autre carte bancaire ou annule
l’opération
S. MBARKI 54
Description d’un cas d’utilisation (2)
Retirer argent
Télécharger un
fichier
Internaute
Client
effectuer un v irement
S. MBARKI 56
Relations entre cas d’utilisation (1)
Extension
Le Use Case est une spécialisation d’un autre Use Case plus
général. Le Use Case plus spécifique n’inclut pas
nécessairement tout le comportement du Use Case qu’il
spécialise
Elle associe un use case U1 à un use case U2 (flèche allant de
U1 à U2), spécifiant que le comportement de U1 peut être
occasionnellement inséré dans U2 et U1 peut s’exécuter de
manière autonome
S. MBARKI 57
Relations entre cas d’utilisation (2)
uc system
effectuer un v irement
«extend»
Vérifier solde
Client
S. MBARKI 58
Relations entre cas d’utilisation (3)
Inclusion
fonctionnalités additionnelles
uc system
effectuer un v irement
«include»
S'authentifier
Client
S. MBARKI 60
Relations entre cas d’utilisation (5)
Généralisation/Spécialisation
Un cas d’utilisation U1 est une généralisation d’un cas
d’utilisation U2 si U2 est un cas particulier de U1
La consultation d’un compte via internet est un cas particulier
de consultation
Cette relation ne se limite pas au diagramme de classe
uc system
Consulter compte
Client
Consulter v ia
Internet
S. MBARKI 61
Exemple de diagramme de cas
d’utilisation (Système de gestion de commandes)
uc system
Aj outer un client
«include»
S'authentifier
«extend»
«include»
Receptionniste
«include»
Aj outer une
commande
«include»
Facturer une
commande
Chauffeur
Comptable
S. MBARKI 62
Etude de cas
Système d’Inscription Automatique
Au début de chaque session, les étudiants demandent un
catalogue contenant une liste des cours disponibles durant la
session. Pour aider les étudiants dans leurs choix, des
informations sur chaque cours sont fournies (enseignant,
département, pré-
pré-requis, etc.). Le système permettra aux
étudiants de choisir 4 cours dans une session. En plus, chaque
étudiant choisit deux cours optionnels en cas d’annulation ou de
saturation d’un cours parmi les 4 précédemment choisis. Le
nombre d’étudiants dans un cours est entre 3 et 10. Un cours
contenant moins de 3 étudiants est annulé. Une fois le processus
d’inscription d’un étudiant est validé, le système envoie les
informations au système de paiement. L’étudiant peut donc payer
ses frais de scolarité.
Un enseignant peut indiquer les cours qu’il veut assurer, consulter
la liste des étudiants inscris dans un cours donné
S. MBARKI 63
Diagramme de cas d’utilisation
SIA
S. MBARKI 64
Acteurs
SIA
Etudiant
Enseignant
Système de paiement
Administrateur
S. MBARKI 65
Cas d’utilisation
SIA
S’inscrire à un cours
Choisir cours à assurer
Obtenir des informations sur un cours
Maintenir les informations sur enseignants
Maintenir les informations sur étudiants
Maintenir les informations sur les cours
Générer le catalogue
S. MBARKI 66
Diagramme de cas d’utilisation
SIA
uc system
Choisir cours à
assurer
Etudiant
Système de paiement
Générer catalogue
Maintenir les
information sur
étudiants
Maintenir Maintenir
informations sur informations sur
cours enseignants
Administrateur
S. MBARKI 67
CHAPITRE 5
Diagramme d’activité
S. MBARKI 68
Diagramme d’activité (1)
S. MBARKI 72
Flot de contrôle (2)
S. MBARKI 73
Action accept time event (1)
Etablir la paie
dernier
jour
ouvrable
du mois
S. MBARKI 74
Action accept time event (2)
Attendre
trois
jours
S. MBARKI 75
Actions send signal et accept event
(1)
Des activités peuvent impliquer des interactions avec des
personnes, systèmes ou processus externes :
Pour autoriser une transaction avec une carte de crédit,
crédit, On
procéde à la vérification avec l’émetteur (Banque
Banque)) par
l’intermédiaire de la société de carte de crédit (Visa,
MasterCard, etc).
Dans le diagramme d’activité,
d’activité, un signal est un message qui
peut être émis ou reçu :
Activité autorisation de carte de crédit : Le logiciel envoie une
requête à la société de la carte de crédit pour obtenir
l’autorisation de la transaction du client et le logiciel reç
reçoit la
résponse de la société de crédit.
crédit.
S. MBARKI 76
Actions send signal et accept event
(2)
Un signal reçu déclenche l’exécution d’une activité
Le receveur du signal sait comment réagir dès sa reception
mais ne sait pas quand le signal arrive (message asynchrone)
Exemple : L’arrivée d’une commande déclenche le processus
de traitement d’une commande
sd Dynamic View
Arrivée Traitement de la
commande commande
S. MBARKI 78
Exemple récapitulatif
sd Dynamic View
Appui Eclairer
bouton Eteindre
Affichage affichage
(lumière)
Attendre
2s
S. MBARKI 79
Flot d’objet (1)
:Commande :Commande
Comptabilisation
[ouverte] [envoyée]
S. MBARKI 80
Flot d’objet (2)
Add itm to
CheckOut
Cart
S. MBARKI 81
Flot d’objet (3)
Chercher Contacter
client client
Client Client
S. MBARKI 82
Branchement conditionnel
Constitution du panier de
la commande
Mémorisation de
l'env ironnement client
S. MBARKI 83
Synchronisation
sd Dynamic View
Un flot de contrôle
Expression d'une
peut suivre deux demande de crédit
chemins parallèles
(ouverture d’une
fourche ou fork) Recherche dans le
catalogue
Ev aluation du risque
client
rejoingnent dans
une fermeture de
Affichage de la réponse
synchronisation
(join)
S. MBARKI 84
Partition (1)
sd Dynamic View
Préparation de la
commande
Env oi de la
commande
:Commande
[ouverte]
:Commande
Comptabilisation
[envoyée]
S. MBARKI 86
Exemple 1 : Cafetière
S. MBARKI 87
Solution : Cafetière
sd Dynamic View
Chercher du
café
Mettre du
Serv ir le
café
café
Allumer la
cafetière
S. MBARKI 88
Exemple 2 : Traitement d’une
commande
Use case : “traitement d’une commande”:
commande”:
Recevoir une
commande
Vérifier Vérifier la
paiement quantité
Reapprov isionner
[rupture] le stock
Annuler la
commande [echec] [disponible]
Affecter la
quantité à la
[Il reste des articles ?] commande
[succes]
S. MBARKI 90
CHAPITRE 6
Diagramme de classes
S. MBARKI 91
Définition
Protected
(#)
Public
(+) Valeur par
défaut
S. MBARKI 96
Les attributs (suite)
S. MBARKI 98
Représentation des propriétés
class system
1
Date Commande Boolean
+dateLivr +prePay
0..1 * 1
+lignesComm *
{ordered}
LigneCommande
class system
2
Commande
0..x : optionnel
1 : un et un seul
x..* : multiple
m..n : borné
classe A 1 * classe B
* *
S. MBARKI 102
Les associations bidirectionnelles
S. MBARKI 103
Nom d’une association
emploi
Personne Société
travaille pour
Personne Société
S. MBARKI 104
Rôle d’une association
Personne
Chef Nom
NumAssurance
Supervise Adresse
Subordonné
S. MBARKI 105
Les opérations
Opérations public
S. MBARKI 107
Généralisation--spécialisation
Généralisation
Matériel
Informatique
Référence
Prix
S. MBARKI 109
Généralisation--spécialisation (suite)
Généralisation
voiture camion
tonnage
S. MBARKI 110
Généralisation--spécialisation (suite)
Généralisation
Impossible !!! C
Impossible !!!
B
Généralisation vs Composition
Généralisation = est un: un Window-
Window-avec-
avec-scrollbar est un
Window
Composition = a un: un Window-
Window-avec-
avec-scrollbar a un
scrollbar
S. MBARKI 111
Dépendance
Bibliothèque Livre
client fournisseur
S. MBARKI 112
Dépendances (suite)
Plusieurs stéréotypes :
la cible
instance de la cible
S. MBARKI 114
Composition (suite)
Appartement 1 * Chambre
S. MBARKI 115
Agrégation
S. MBARKI 116
Composition / Agrégation
Contenant--contenu
Contenant
• Le polygone contient des sommets
S. MBARKI 118
Interfaces
Deux notations :
S. MBARKI 119
Interfaces (suite)
S. MBARKI 120
Contraintes
S. MBARKI 121
Exemple de contraintes OCL
-laChambre 1
* -lesCLients
-directeur 1 Personne
-nom : String
-prénom : String -lesRésidents
-age : Integer
*
S. MBARKI 122
Exemple de contraintes OCL
S. MBARKI 123
Contraintes sur les associations
S. MBARKI 124
Contraintes sur les associations (suite)
Batterie
PC portable {ou exclusif}
Secteur
S. MBARKI 125
Classes association
Etudiant * * Travail
Classe
Evaluation association
note
Evaluation
Etudiant
1 * note * 1
Travail
S. MBARKI 127
Restriction des associations
0..1
Université n Etudiant Etudiant
S. MBARKI 128
Restriction des associations (suite)
A clé B
:B
:B :B
:B
:A :B
avec clé :B
:B
:B
S. MBARKI 129
Associations ternaires
Enseignant ∗ ∗ Salle
Séance
date
Heure
durée
S. MBARKI 130
CHAPITRE 7
Diagramme d’objets
S. MBARKI 131
Définition
de classes :
S. MBARKI 132
Représentation des objets
Objet simple
mazda mazda : Voiture : Voiture
Groupe d'objets
: Voiture
S. MBARKI 133
Représentation des liens
S. MBARKI 134
Les objets composites
1
Zone de texte
Représentation de l'objet composite
:Fenêtre
S. MBARKI 135
Similitudes entre les diagrammes d'objets
et les diagrammes de classes
passagers : Personne
: Bus
: Personne
: Destination
S. MBARKI 136
Relation de dépendance entre objets et
classes
Exemple :
ascHoriz : <<instance de>>
Ascenseur
Ascenseur
S. MBARKI 137
Diagramme d'objet : exemple
0..1 parent
Personne Métier
S. MBARKI 138
Exercices
Etude de cas :
Soit les règles de gestion :
un étudiant s’inscrit dans une et une seule filière.
Une filière est un ensemble de modules.
Un étudiant a une seule note dans un module donné
Un étudiant peut avoir plusieurs diplômes.
Un module est enseigné par un seul enseignant.
Un enseignant enseigne plusieurs modules.
L’administration comptabilise les absences.
S. MBARKI 140
Exercices
Exercice 5
Une école a décidé de bâtir des chambres (internat) et
des résidences à l’extérieur, un étudiant habite à l’internat
ou à la résidence mais pas aux deux.
Exercice 6
Soit le problème suivant : les étudiants d'une école
émettent des souhaits concernant des stages
un étudiant effectue au plus un stage
un stage est effectué au plus par un étudiant
un stage intéresse 0 ou plusieurs étudiants
un stage effectué par un étudiant doit être un stage
figurant dans les souhaits de cet étudiant
Exercice 7
Un ordinateur est composé d'un écran, d'un ou plusieurs
disques et différents périphériques
S. MBARKI 141
Exercices
public interface Observer {
public void update(Observable o);
}
public class Observable {
Collection observateurs;
public void notify()
notify() {
Iterator it = this.iterator
this.iterator();
();
while (it.hasNext())
it.hasNext()) {
((Observer) it.next
it.next()).update(
()).update(this
this);
);
}
}
public void addObserver(Observer
addObserver(Observer o) {
observateurs.add(o);
} ... }
public class Bilan extends Observable {
void setChange()
setChange() { notify();
notify();
} ... }
public class UIGraphe implements Observer {
public void update(Observable o) {
Bilan unbilan = (Bilan) o;
double compteResultat = unbilan.getCompteResultat();
unbilan.getCompteResultat();
... S.} MBARKI
... } 142
CHAPITRE 8
Diagramme de séquences
S. MBARKI 143
Pourquoi interaction/collaboration
d’objets
Les objets contiennent seulement les données et les
méthodes qui relèvent de leurs propres responsabilités
Ils ne connaissent rien sur les données d’autres objets
Pour obtenir le genre de fonctionnalités exigées d’un
système, les objets doivent travailler ensemble,
collaborer
Les objets collaborent en s’envoyant des messages
Seuls les objets liés entre eux (d’une manière ou d’une
autre) peuvent s’échanger des messages
S. MBARKI 144
Messages
S. MBARKI 146
Diagramme d’interaction
p:Person c:Company
Barre d’activation
Durée de vie
S. MBARKI 148
Rapport entre DC et DS
class system
Person Company
+employe +Employer
- -
1..* 1
+ assign(Departement) : void + ()
S. MBARKI 149
Différents types de messages
o1 o2
s im p le
p ro c e du re c a ll
r et u rn
m es s a g e to s e lf
S. MBARKI 150
Exemple de diagramme de séquence
• Consulter le client
S. MBARKI 151
Solution avec un contrôle centralisé
sd system
calculPrix()
getQuantité()
getArticle() :Article
getDetailsPrix()
calculPrixBase()
getInfosRemise()
calculRemise()
S. MBARKI 152
Commentaires
(un article)
“found message”
S. MBARKI 153
Solution avec un contrôle distribué
sd system
calculPrix()
calculPrix()
getPrix(quantité)
getMontantRemise(uneCommande) :double
getPrixBase()
montantRemise()
S. MBARKI 154
Commentaires
seul endroit
S. MBARKI 155
Message de type création
S. MBARKI 156
Itération,, condition
Itération
S. MBARKI 157
Exemple
procedure dispatch
foreach (lineitem
lineitem))
if (product.value
(product.value>10k)
>10k)
careful.dispatch
else
regular.dispatch
end if
end for
if (needsConfirmation
(needsConfirmation)) messenger.confirm
End procedure
S. MBARKI 158
Interaction frames
sd system
dispatch()
loop
[for each line item]
alt
[value>10000]
dispatch()
Frame [else]
dispatch()
operator
opt
[needsConfirmation]
confirm()
guard
S. MBARKI 159
Quand utiliser un diagramme de
séquence ?
Pour comprendre et représenter les comportements de
plusieurs objets dans un seul cas d’utilisation
Montre la collaboration entre les objets
Ne définit pas de façon précise le comportement
Pour représenter le comportement d’un objet dans
plusieurs cas d’utilisations :
Diagramme d’état
Pour représenter les comportements de plusieurs objets
dans plusieurs cas d’utilisations :
Diagramme d’activité
S. MBARKI 160
Exemple : gestion d’une bibliothéque
ep0:Emprunteur ex0:Exemplaire
bibliothecaire
emprunterLivre()
getNombreEmprunts()
n()
opt
[n<MAX] emprunter(ep0, date)
bloquer()
ajouterExemplaire(ex0)
S. MBARKI 162
Scénario : rendre un livre
sd bibliotheque
ex0:Exemplaire ep0:Emprunteur
bibliothecaire
rendreLivre()
rendre(dateActuelle)
getEmprunteur()
supprimerExemplaire(ex0)
debloquer()
S. MBARKI 163
Scénario : rendre un livre avec
pénalité
sd bibliotheque
ex0:Exemplaire ep0:Emprunteur
bi bl iothecai re
rendreLi vre()
rendre(dateActuelle)
getEmprunteur()
supprimerExemplaire(ex0)
debloquer()
getDateSortie()
ds()
opt penaliser()
[dateActuelle - ds >15]
S. MBARKI 164
Scénario : envoyer une lettre de
rappel
sd bibliotheque
ex0:Exempl ai re ep0:Emprunteur
bibl iothecaire
lettreRappel()
loop getEtat()
[pour chaque Exemplaire]
etat()
opt getEmprunteur()
[dateActuell e - ds > 15]
envoyerLettreRappel()
S. MBARKI 165
Scénario : approvisionnement
sd bibliotheque
:Bibliotheque
approvisionner()
loop
:Livre
creer()
setDescriptions()
loop
:Exemplaire
creer()
setDescriptions()
ajouterExemplaire()
ajouterLivre()
S. MBARKI 166
CHAPITRE 9
Diagramme d’états-
d’états-transitions
S. MBARKI 167
Définition
Au chômage
S. MBARKI 169
Changement d’états
Positif Négatif
déposer(somme)
S. MBARKI 170
Changement d’états
retirer(somme) déposer(somme)
retirer( somme )
Positif Négatif
déposer( somme )
S. MBARKI 171
Qu’est ce qu’un événement ?
S. MBARKI 172
Les quatre types d’événements en
UML
S. MBARKI 173
Exemple de “time Event” et “change
Event”
S. MBARKI 174
Notations relatives à un état
Etat initial
Etat final
S. MBARKI 175
Notions d’actions et d’activités
Action :
Atomique (ininterruptible
(ininterruptible,, instantanée)
Associée à une transition
Peut apparaître dans les clauses “entry” and “exit” au sein
d’un état
Activité :
A une certaine durée (interruptible)
Associée à un état
S. MBARKI 176
Exemples d’actions et d’activités
Actions
Go for dinner
Go to sleep
Go for breakfast
Go for lunch
Activité
Activit és:
Rest
Sleep
Take dinner
Take breakfast
Take lunch
S. MBARKI 177
Notations relatives à une transition
entre états
State-A Event(arguments)[condition]/action
State-B
S. MBARKI 178
Les états initial et final
Event(attribute)
Initial state State-B
Start State
End State
Start state
Obligatoire et un seul par diagramme
End state
Terminates a state machine
Optionnel,, plusieurs états sont possibles
Optionnel
S. MBARKI 179
Diagramme d’état d’une commande
[ not all items checked ] événement Item received [ some
/ get next item items not in stock ]
Action
[ All items checked && some
/ get first item Checking items not in stock ]
Waiting
do: check item
Condition
De garde
Dispatching deliver
Delivered
do: initiate delivery
S. MBARKI 180
Un état composite
S. MBARKI 181
Cas : annuler une commande
Solutions:
l’état “cancelled”
S. MBARKI 182
Solution 1 : plusieurs transitions vers
“cancelled”
[ not all items checked ] Item received[ some
/ get next item
items not in stock ]
deliver
Delivered
S. MBARKI 183
Solution 2 : un état composite avec
des sous états
Active
[ not all items checked ] Item received[ some
/ get next item items not in stock ]
deliver
Dispatching
do: initiate delivery Delivered
S. MBARKI 184
Diagrammes d’états concurrents de la
classe “Commande”
Commande”
authorization
order handling (voir diagramme
d’activité)
Authorizing [ payment not ok ]
Waiting do: check payment
[ payment ok ]
Checking Dispatching
Authorized Rejected
Delivered
S. MBARKI 185
Diagrammes d’états concurrents de la
classe “Commande”
Commande”
Cancelled
order handling
Waiting
Checking Dispatching
Delivered
authorization
Authorizing Authorized
do: check payment
Rejected
S. MBARKI 186
Diagrammes d’états concurrents de
la classe “Commande”
Commande”
Les deux statecharts “order handling
handling”” et “authorization
“authorization”” se
déroulent en parallèle
Si un des deux statecharts arrive à son état final, il doit
attendre, dans cet état, la fin de son statechart concurrent
L’état « cancelled » peut être atteint depuis chacun des états
du statechart « order handling »
L’état « delivered » (positionné exactement en face de la
ligne pointillée) est atteint automatiquement quand les deux
statecharts se trouvent tous les deux dans leur état final
respectif (transition de synchronisation)
L’état « Rejected » (distinct de « cancelled ») est atteint
depuis l’état « authorizing »
S. MBARKI 187
Complémentarité entre diagrammes
d’états et diagrammes d’interaction
Les diagrammes d’états apportent précision et exhaustivité
Ils permettent de valider et de compléter les diagrammes
d’interaction
Ils peuvent également inciter à créer de nouveaux
diagrammes d’interaction
Si une interaction met en jeu deux objets a et b instances de
classes A et B alors les diagrammes d’états des classes A et
B doivent forcément être cohérents avec cette interaction,
même s’ils intègrent de nombreux autres comportements
S. MBARKI 188
Exemple de cohérence entre
diagrammes d’états et diagrammes
d’interaction
[ autorisé ] / emprunter()
supprimCpyEmpr(c0)
Emprunteur
[délai dépassé] pénaliser()
Pénalisé
after 2 jours
S. MBARKI 189
Remarques
S. MBARKI 190