Académique Documents
Professionnel Documents
Culture Documents
Semestre 5
Département d’informatique
1
Plan du cours
6
Notation unifiée UML
HOOD
• diagramme de classes
• diagramme d’objets
• diagramme de composants
• diagramme de déploiement
Dynamique
(comment le système
EVOLUE) Fonctionnel
(ce que le système FAIT)
• diagramme de séquence
• diagramme de collaboration • diagramme de cas d’utilisation
• diagramme d’états-transitions • diagramme de collaboration
• diagramme d’activités
• Les objets du monde réel nous entourent, ils naissent, vivent et meurent.
• Exemples d’abstractions
– Une carte routière
– Un nombre complexe
– Un téléviseur
– Une transaction bancaire
– Une porte logique
– Une pile
– Un étudiant
• Exemples
– Pour un signal électrique : l’amplitude, la pulsation, la phase, …
– Pour une voiture : la marque, la puissance, la couleur, le nombre de
places assises, …
– Pour un étudiant : le nom, le prénom, la date de naissance, l'adresse,
…
• Le comportement
– décrit les actions et les réactions d’un objet
– regroupe toutes les compétences d’un objet
– se représente sous la forme d’opérations (méthodes)
• Tout objet possède une identité qui lui est propre et qui le caractérise
• L’identité permet de distinguer tout objet de façon non ambiguë,
indépendamment de l’état
• Il est possible de définir une contrainte d’unicité
• Une clé primaire dans une base de donnée relationnelle est une manière de
réaliser l’identité (en l’insérant dans l’état)
• Les objets
– ne vivent pas en ermites
– Les objets interagissent les uns avec les autres
– Les objets communiquent en échangeant des messages
• Catégories de messages :
• La classe
– est une description abstraite d’un ensemble d’objets
– peut être vue comme la factorisation des éléments communs à un
ensemble d’objets
– décrit le domaine de définition d’un ensemble d’objets
• Les objets sont regroupés dans des classes qui les décrivent de manière abstraite
• Opérations / méthodes
– Opération : service qui peut être demandé à n’importe quel objet de
la classe.
– Méthode : implémentation d’une opération.
– Chaque opération non abstraite d’une classe doit avoir une méthode
qui fournit un algorithme exécutable comme corps (cet algorithme
est donné dans un langage de programmation ou dans du texte
structuré).
• simplifié
–Uniquement le nom de la classe NomClasse
•intermédiaire NomClasse
–Nom de la classe attribut1 NomClasse
–Nom des attributs, ou des opérations attribut2
attribut3 attribut1
… attribut2
•complet attribut3
–Nom de la classe …
–Noms des attributs
–Noms des méthodes Opération1
Opération2
…
•Attributs :
–Type
–Valeurs par défaut
–Degré de visibilité NomClasse
–Caractéristique - Attribut1 : type1
•Opérations : # Attribut2 : type2 = valeur2
–Signature # /Attribut3 : type3
…
–Degré de visibilité
–Caractéristique + Opération1 (arg1, arg2,…) : type4
# Opération2 () : void
…
Nom de classe
Attributs
Opérations( )
• Attribut
<visibilité> <nomAttribut> : <type> = <valeur par défaut>
• Opération
<visibilité> <nomOpération> (listeParamètres) : <typeRetour>
Paramètre
<nom> : <type> = <valeur par défaut>
+ Attribut publique
# Attribut protégé
- Attribut privé
+ Opération publique
# Opération protégée
- Opération privée
• Attribut
• type de base (entier, booléen, caractère, tableau…)
integer, double, char, string, boolean, date, time, void
• Au niveau analyse, pas d’attribut instance d’une classe (on utilise
une association)
• Au niveau conception, on décide quelles associations peuvent être
représentées par des attributs
• Opération
• Type quelconque (de base ou classe)
Voiture
- Marque : string
- Modèle : string
- Turbo : boolean = false
+ Démarrer ()
+ Rouler ()
+ Freiner ()
Voiture
- Marque : string
- Modèle : string
- Turbo : boolean = false
- NbRoues : int = 4
- NbInstances = 0
+ Démarrer ()
+ Rouler ()
+ Freiner ()
+ IncrémenterNbInstances ()
voiture voiture
immatriculation + immatriculation : string
couleur + couleur : string
marque + marque : string
puissance # puissance : int attributs
poids # poids : int types
date - date : Date
propriétaire - propriétaire : string
demarrer + demarrer()
arreter - contact() : bool
conduire + conduire(a : string = « kenitra », b : string) méthodes
voiture vendre + vendre(prix : float) prototype
Niveaux d’accès
Classe non documentée Classe documentée Classe détaillée
UML 46
pr. LAASSIRI Jalal / Dept 46
Attributs et opérations dérivés
• Notation : /nomAttribut
• Propriété redondante, dérivée d’autres propriétés déjà allouées
• En conception, un attribut dérivé peut donner lieu à une opération qui
encapsulera le calcul effectué
Commande Commande
Numéro Numéro
PrixHT PrixHT
TVA TVA
/PrixTTC /PrixTTC
CalculerPrixTTC ()
UML 48
pr. LAASSIRI Jalal / Dept 48
Les relations entre classes
• L’association
• L’agrégation
• La généralisation
Classe1 Classe2
Université Étudiant
Enseignant ◇ Étudiant
Cours
Début
Fin
• Représentation au moyen d’une
classe
+ contrainte qui exprime que
les multiples branches de
l’association s’instancient Salle
simultanément en un même lien
<< assoc. Ternaire>>
Cours
Enseignant Étudiant
Début
Fin
Une association qualifiée met en relation deux classes sur la base d’un attribut
spécifique appelé « clé »
* 1..n
Banque numCompte Personne
52
pr. LAASSIRI Jalal / Dept 52
Nommage des associations
NomAssoc >
Classe1 Classe2
Emploie >
Société Personne
• Le rôle décrit comment une classe voit une autre classe à travers une
association
• Une association a par essence 2 rôles, selon le sens dans lequel on la
regarde
• Usage : Forme nominale
Rôle1
Classe1 Classe2
Rôle2
Société Employeur
Personne Parent
Employé
Personne
Directeur
Société Personne Enfant
Employé
UML 55
pr. LAASSIRI Jalal / Dept 55
Exemples
Peintre Tableau
1 peint 1..n
{ordonnée}
Personne Armée
militaire
{sous-ensemble}
général
Personne Licence
enseignant
{ou-exclusif}
étudiant
56
pr. LAASSIRI Jalal / Dept 56
Multiplicité
Rôle1 m2
Classe1 Classe2
m1 Rôle2
Valeur : signification :
1 Un et un seul
0..1 Zéro ou un
M .. N De M à N (entiers naturels)
* De zéro à plusieurs
0 .. * De zéro à plusieurs
1 .. * D'un à plusieurs
*
Société SonEmployeur
1 SesEmployés Personne
Classe A Classe B
Clé
• Exemple :
* Case
Échiquier
Ligne 1 Case
Échiquier
Colonne
SesÉtudiants *
Étudiant * SesMatières
Matière
Moyenne
• Représentation simplifiée
• Agrégation
CoPropriétaire 0..*
Personne ◇ 1..* Immeuble
Immeuble
• Composition
Voiture
◆
1
Moteur Voiture Moteur
◆
* 1
Cylindre Carburateur
◇ ◇
• Qualité d’une association qui permet le passage d’une classe vers une autre
• Par défaut, on peut naviguer dans les 2 sens
• On peut cependant limiter la navigabilité :
• ExempleClasse
: 1 Classe 2
Une instance d’utilisateur peut accéder à des instances
de Mot de passe, mais pas l’inverse.
Utilisateur
détenteur * Mot de passe
1 clef
+ GetNom () : string
+ GetDescription () : string
+ GetPoids () : float
+ GetPrixHT () : float
+ GetTauxTaxe () : float
+ GetPrixTTC () : float
+ GetTauxFrancs () : float
+ GetPrixTTCFrancs () : float
+ GetSesPaniers () : ensemble(PANIER)
+ CalculerPrixTTC () : void
+ CalculerPrixTTCFrancs () : void
• Gérer la complexité
Arborescences de classes d’abstraction croissante
• Généralisation : Super-classes
• Spécialisation : Sous-classes
Classe plus
Super-classe générale
Classe plus
Sous-classe
spécialisée
Véhicule
Transmission
Continue Discrète
Animal
Carnivore Herbivore
A A
A
Impossible !!!
C
BC Impossible !!!
Animal
Station Protection
Nourriture
Bipède Quadrupède Herbivore Carnivore A plumes A poils A écailles
Lapin
CompteBancaire
Généralisation Spécialisation
crédit : nombre
débit : nombre
déposer(nombre)
retirer(nombre)
donner-solde
CompteÉpargne
taux :nombre
calculer-intérêts
• Classe qui ne peut avoir aucune instance directe ; on écrit son nom en italique
Forme
-Nom : string
+Calc-surface()
+Get-nom()
Forme
-Nom : string
+Calc-surface()
+Get-nom()
Rectangle Cercle
-Longueur : real -Rayon : real
-Largeur : real
+Calc-surface()
+Calc-surface()
Opération
polymorphe
• Ils modélisent les instances d’éléments qui apparaissent sur les diagrammes de
classe.
• Ils montrent un ensemble d ’objets et leurs relations à un moment donné.
– Instances nommées
:Cercle
– Instances avec valeurs d’attributs
bouton3:Rectangle
Nom : string=“bouton-poussoir”
Longueur : real=13.5
Largeur : real=3.2
• Une association est une abstraction des liens qui existent entre les objets
instances des classes associées
• Les associations se représentent de la même manière que les liens.
Une association
Université Étudiant
MohamedV : Université
Un lien
Latifa : Étudiant
enseigne
Enseignant Matière
* 1..*
Laassiri:Enseignant
Génie-Logiciel:Matière
Housni:Enseignant Réseaux:Matière
BD:Matière
Azami:Enseignant
Monopoly
<<include>>
Monopoly
<<include>>
Monopoly
<<extend>>
UML 119
pr. LAASSIRI Jalal / Dept 102
Exemple
Client distant
<<extend>>
Virement
Client <<include>>
<<include>>
UML 120
pr. LAASSIRI Jalal / Dept 103
Exemple 2 : La CBM
CBM
<<include>> <<extend>>
Passer une commande
Employé
urgente
Enregistrer un nouveau client
Système : CBM
Acteur primaire : l’employé de la coopérative
Objectif : enregistrer une commande de livres
Précondition : le libraire existe
Scénarios :
1 - l’employé vérifie la solvabilité du libraire
2 - l’employé vérifie l’existence du livre
3 - l’employé précise la quantité
Exception :
1a - le libraire n’est pas solvable (l’employé est informé)
2a - le livre n’existe pas (l’employé est informé)
COMMANDE LIBRAIRIE
1
*
LIVRE EDITEUR
Système : CBM
Acteur primaire : l’employé de la coopérative
Objectif : enregistrer une commande de livres
Précondition : le libraire existe
Scénarios :
1 - l’employé vérifie la solvabilité du libraire
* une instance de commande est créée
2 - l’employé vérifie l’existence du livre
* un lien entre l'instance de commande et
une instance de livre est créé
3 - l’employé précise la quantité
* la quantité est ajoutée (classe associative)
Exception :
1a - le libraire n’est pas solvable
* un message est affiché
2a - le livre n’existe pas
* un message est affiché
saLibrairie
COMMANDE LIBRAIRIE
1
numéro nom
date adresse
commande (libr) solvabilité
ajouterLivre (livre) isSolvable ()
LIGNE DE COMMANDE
quantité
putQuantité (qt)
sesLivres *
LIVRE EDITEUR
ISBN sesLivres nom
Titre * adresse
getTitre () getLivre (titre) : LIVRE
• Comporte :
– des objets dans une situation donnée
– les liens qui relient les objets qui se connaissent
– les messages échangés entre les objets, représentés le long de ces
liens
COMMANDE LIBRAIRIE
2. commande (libr)
6. ligneDeCommande () 5. ajouterLivre (livre) 1. isSolvable ()
7. putQuantité(qt)
4. getTitre ()
LIVRE EDITEUR
saLibrairie
COMMANDE LIBRAIRIE
1
numéro nom
date sesCommandes adresse
commande (libr) * solvabilité
ajouterLivre (livre) isSolvable ()
sesLibrairies
*
* sesEditeurs
sesLivres *
LIVRE EDITEUR
ISBN sesLivres nom
Titre * adresse
getTitre () getLivre (titre) : LIVRE
Acteur :
Objet :
:nom
Ligne de vie : nom:Classe
Bande d’activation :
Envoi de message :
Création dynamique : Message()
kill()
UML 136
pr. LAASSIRI Jalal / Dept 117
LAASSIRI
pr. LAASSIRI
Jalal
Jalal / Dept
LAASSIRI
pr. LAASSIRI
Jalal
Jalal / Dept
LAASSIRI
pr. LAASSIRI
Jalal
Jalal / Dept
Convention graphique
Branchement conditionnel :
obj1:Classe obj2:Classe
Récursivité :
if x cas1()
else cas2()
endif
msg()
8: M8
A B C
M1
3: M3 M2
5: M5
C
A M3
1: M1
4: M4 M4
10: M10
2: M2 M5
6: M6
9: M9
7: M7 M6
M7 M8
B
M9
M10
temps temps
appelant ligne appelé : Client : Cmd : Article
décroche
tonalité getValue
numérote getPrice
numérote
unA:ClasseA unB:ClasseB
toto:Acteur1
meth1(…)
message
meth2 (…)
SonTruc boolean
retour
•type
•nom d'une instance
msg()
UML 147
pr. LAASSIRI Jalal / Dept X
Types de messages(2/2)
msg()
msg()
148
pr. LAASSIRI Jalal / Dept X
pr. LAASSIRI Jalal / Dept
LAASSIRI
pr. LAASSIRI
Jalal
Jalal / Dept
Notation : création, destruction
unA : ClasseA
toto:Acteur
meth1 (…)
ClasseB (…)
: ClasseB
unB
X
Création
Arrive sur la classe
Suppression Pas de nom d'instance au début
renvoie tj l'instance créée
1 * sesEditeurs
sonLivre
LIVRE EDITEUR
ISBN sesLivres nom
titre * adresse
getLivre (titre) : LIVRE
1. getDate()
2. getInfosLdC
COMMANDE LIBRAIRIE
3. getQuantité()
4. getTitre()
LIVRE EDITEUR
getDétailCommandes()
getSesCommandes()
sesCommandes
getDétailCommande()
getDate()
date
sesLdC
getDétailLigne()
getLivre()
sonLivre
getTitre()
Pour chaque
titre
ligne de com.
getQuantité()
sesCommandes saLibrairie
COMMANDE LIBRAIRIE
* 1
numéro nom
date sesCommandes adresse
commande (libr) * solvabilité
ajouterLivre (livre) isSolvable ()
getDetailCommande() sesLibrairies
getDetailComma
ndes() *
sesLdC
*
LIGNE DE COMMANDE
quantité CBM
putQuantité (qt)
getDétailLigne()
1 * sesEditeurs
sonLivre
LIVRE EDITEUR
ISBN sesLivres nom
titre * adresse
getLivre (titre) : LIVRE
Ahmed:Responsable
getDétailCommandes()
getSesCommandes()
getDate()
date
getSesLignes()
Pour chaque
commande sesLdC
getQuantité()
quantité
getLivre()
Pour chaque ldc
de chaque com. sonLivre
getTitre()
titre
{date +{titre,quantité}}
sesCommandes saLibrairie
COMMANDE LIBRAIRIE
* 1
numéro nom
date sesCommandes adresse
commande (libr) * solvabilité
ajouterLivre (livre) isSolvable ()
sesLibrairies
getDetailComma
ndes() *
sesLdC
*
LIGNE DE COMMANDE
quantité CBM
putQuantité (qt)
1 * sesEditeurs
sonLivre
LIVRE EDITEUR
ISBN sesLivres nom
titre * adresse
getLivre (titre) : LIVRE
des états :
initial
final
Intermédiaires
- ex : mineur et majeur
des transitions
induisant un changement d'état
- ex : naissance, anniversaire…
• Exemple :
En alerte
entry/allumer lampe alerte
do/sonnerie toutes les 5 ''
4ème sonnerie/appel poste de garde
exit/éteindre lampe alerte
Action à l'entrée
En alerte
entry/allumer lampe alerte
Action interne
do/sonnerie toutes les 5 ''
4ème sonnerie/appel poste de garde
exit/éteindre lampe alerte Action à la sortie
événement
EN-VEILLE EN-ALERTE
do : détecteur do : sonnerie
sous tension détectionPb / envoyer message
poste de surveillance
activité
action
activité
• Transition automatique
• lorsque qu'il n'y a pas de nom d'événement sur une transition, il est
sous-entendu que la transition aura lieu dès la fin de l'activité.
événement 2/action
état 1 état 2
alarm off
• Action interne, le contexte de l'activité est préservé (on ne sort pas de l'état)
event1 / action1
État composite
do/a1 do/a2
do/a3 do/a4
do/a5 do/a6
Chercher le café
Mettre un filtre
Remplir le
réservoir d'eau
Mettre du café Prendre une tasse
Allumer la cafetière
Le café passe
servir
pr. LAASSIRI Jalal / Dept 186
Diagrammes d’activités
Recette simplifiée : commencer par casser le chocolat en morceaux, puis le faire fondre.
En parallèle, casser les œufs en séparant les blancs des jaunes.
Quand le chocolat est fondu, ajouter les jaunes d’oeuf.
* Les diagrammes de déploiement peuvent montrer des instances de noeuds (un matériel
précis), ou des classes de nœuds.