Modélisation UML : Diagrammes statiques
Modélisation UML : Diagrammes statiques
Conception de la solution
3
Analyse métier
4
UML
5
Les objets
6
Exemples de caractéristiques
Classe d’objets
8
Modélisation objet
Voiture FIAT-UNO-17
Numéro de série : Int 233434 : Numéro de série
Poids : double 1500 kg : Poids
Immatriculation : String 8864 YF 17 : Immatriculation
Kilométrage : double 33 000 : kilométrage
Démarrer ()
Arrêter()
Rouler()
Renault-Clio-17 Peugeot-206-75
5323454 : Numéro de série 3434 : Numéro de série
1500 kg : Poids 1700 kg : Poids
64 YFT 17 : Immatriculation 8634 YGG 75 : Immatriculation
23 000 : kilométrage 15 000 : kilométrage
9
Modélisation objet
attributs
méthodes ou opérations
Nom_de_la_classe
attribut1 : Type
attribut2 : Type
…
méthode1 ()
méthode2 ()
…
10
Les classes
Attributs
Attributs
Opérations
Nom de classe
11
Diagramme de classe: relations
Les relations inter-classe qui sont couramment utilisées sont :
Association
Héritage
Agrégation
Composition
12
Diagramme de classe: Associations
13
Diagramme de classe: Associations
14
Diagramme de classe: Associations
15
Cardinalité ou multipilicité des associations
1 ⇔ 1..1 (exactement 1)
* ⇔ 0..* (0 ou plusieurs)
n ⇔ n .. n (exactement n)
1..* ⇔ 1 ou plusieurs (1 ou plus)
0..1 ⇔ 0 ou 1 (au plus un)
1..100 ⇔ entre 1 et 100
2,4,5 ⇔ 2, 4 ou 5
16
Diagramme de classe: Associations
17
Diagramme de classe: Associations
18
ASSOCIATION : caractéristiques
19
Association à navigabilité restreinte
Par défaut, une association est navigable dans les deux sens.
Indique qu'un objet de la classe cible peut être atteint par un objet de la classe
source au travers de l'association.
Si la relation est entre les classes A et B et que seulement B est navigable, alors
on pourra accéder à B à partir de A mais pas vice versa.
Exemple:
Commandes Clients
1..*
1
•On doit être en mesure de savoir le client qui a fait la commande et non toutes les commandes
d’un client.
•La classe commande doit avoir un champ faisant référence à la classe client.
20
Classe association
Les classes association sont utiles quand il y a des attributs qui sont pertinents à
l’association, mais à aucune des classes impliquées.
21
Classe association
22
23
A B
Relation d’Agrégation
Agrégat Agrégé
L'agrégation peut être assimilée à une appartenance - faible -.
La suppression de A n’implique pas la suppression de B.
L'élément agrégé peut être partagé.
Représente une association asymétrique: une des classes joue le rôle d'agrégat
et l'autre classe joue le rôle d'agrégé.
Cardinalité quelconque.
24
Relation de Composition
Il s'agit d'une appartenance forte. La vie de l'objet composant est liée a celle de son
composé. Aussi appelée « agrégation forte ».
Une relation de composition est indiquée par une ligne avec un losange rempli.
Les cycles de vies des composants et de l'agrégat sont liés : si l'agrégat est détruit , ses
composants le sont aussi.
A un même moment, une instance de composant ne peut être liée qu'à un seul agrégat.
la non-présence des valeurs de multiplicités est synonyme de 1..1.
25
Relation d’Héritage
Elle présente une classe spécifique comme descendante d'une classe plus générique.
Spécialisation Généralisation
étendre les propriétés factoriser les propriétés
d'une classe, sous groupe de classes sous
forme de sous-classes forme de super-classe
En UML, un héritage est représenté par une ligne en tirets, terminée par une flèche évidée.
26
Relation d’Héritage
27
EXEMPLE
28
Types de relation entre classes
29
Les contraintes
30
Relation- Qualification
Un qualificatif sur une association permet de sélectionner un sous-ensemble dans
l’association (cela n’a de sens que pour une cardinalité *).
Par exemple, à partir d’une banque et d’un numéro de compte, on sélectionne un unique
compte.
Ou bien, à partir d’une banque et d’un numéro de compte, on sélectionne au plus 2
personnes.
32
Associations n-aires
Exemple ternaire
33
Contraintes sur les associations: contrainte {addOnly} (UML 1)
0..*
{addOnly}
Enfants
34
Contraintes sur les associations: contrainte {ordonné-ordered}
Personne Compte
1 0..*
{Ordonné}
35
Contraintes sur les associations: contrainte {frozen} (UML 1)
Personne
{frozen} 0..*
enfant
2
parent
36
Concept de classes d’objets
Exemple: Tous les comptes bancaires ont un numéro, un solde, … et sur lesquels on
peut déposer ou retirer l'argent, ou les consulter.
Un objet est instance d’une classe, et le fait de créer un objet d'une classe
est dite instanciation.
37
Concept d'objet
Un objet doit :
Avoir une signification dans le système
En relation avec d'autres objets
Exemples
Gestion de stock : Clients, Commandes, Articles, …
Gestion scolaire : Étudiants, Modules, Filières, …
38
Concepts de base de la modélisation Orientée Objet
1. Abstraction: Une abstraction est un description qui met en avant les caractéristiques
essentielles et qui dissimulent les détails.
2. Héritage
Organisation en hiérarchies de classes (super-classe et sous-classe)permettent de gérer
la complexité,
L'héritage évite la duplication des informations et favorise la réutilisation.
40
Encapsulation
41
42
Encapsulation: Niveaux de Visibilité
Il existe quatre niveaux de Visibilité définissant les droits d'accès aux attributs et aux
opérations ou méthodes. Les modificateurs d’accès sont:
•Publique (+): Signifie que cet élément pourra être accédé par n’importe quel objet.
•Protégée (#): Signifie que cet élément ne pourra être accédé que par des objets instances
de la même classe ou d’une de ses sous-classes.
•NB: valable pour UML et c++ oui. Pour java : classes filles et package
•Privée (-): Signifie que cet élément ne pourra être accédé que par des objets instances de
la même classe.
•Remarque:
•En java et c#: on parle de classe publique. En UML et c++, il n’y a pas cette notion.
•Par défaut, la visibilité est publique.
43
Remarque: Règle d’accès
Pour Java (source [Link]
Pour C++, par défaut l’accès aux membres d’une classe est private.
Alors que pour les données struct c’est public.
44
Les modificateurs dans les langages O.O
45
Exemple 1: Visibilité et encapsulation
46
Exemple 2: Visibilité et encapsulation
Compte
- N°Compte : String
- Solde : float = 100
# Client : Personne
+ <<Constructor>> Compte ()
+ Deposer (float somme) : void
+ Retirer (float somme) : float
+ AvoirSolde () : String
47
Encapsulation:
48
Concept d'attribut
un client a un nom
nom, un prénom
prénom, une adresse
adresse, un code
client, …
un compte bancaire a un numéro, un solde, …
49
Concept d'attribut
La description d’un attribut comporte :
Exemples d’attributs :
- couleur : enum{Rouge,Vert, Bleu}
# b : boolean = vrai
- Client : Personne
50
Concept d'attribut
51
Opération
52
Concept d'opération et méthode
53
Concept d'opération
C o m p te
- N °C o m p te : S tri n g
- S o ld e : flo a t = 1 0 0
# C lie n t : P e rso n n e
+ < < C o n stru c to r> > C o m p te ()
+ D e p o se r (f l o a t so m m e ) : vo id
+ R e ti re r (f l o a t so m m e ) : flo a t
+ A v o i rS o l d e () : S t ri n g
54
Concept d'opération
de différents types :
accesseurs ou sélecteurs(get...): renvoie une information
sur l'état d'un objet (fonction)
55
Opérations- Les accesseurs-les modificateurs
56
57
Constructeurs et destructeurs
•Un constructeur est une opération particulière d’une classe qui permet de créer des instances
de cette classe.
•Un destructeur est une opération particulière qui permet de détruire une instance de cette
classe.
•En UML, pour préciser qu’une opération est un constructeur ou un destructeur, on place
devant l’opération les stéréotypes <<create>> (ou constructor) ou <<destroy>> (ou
destructor).
•Contrairement à c++, il n'y a pas de destructeur en java et en c#. Les objets sont supprimés du tas
par le "ramasse-miettes" lorsqu'ils ne sont plus réferencés.
58
Attribut/Opération de classes
Attribut/opération d’instances
Window
- taille : Rectangle = (100,100)
- visibilité : boolean = true Attributs d'instances
- taille_defaut : Rectangle
- taille_max : Rectangle Attributs de classes
+ <<Constructor>> Window ()
+ afficher () : void
+ cacher () : void Opérations d'instances
+ getTaille_max () : Rectangle
+ getTaille_defaut () : Rectangle Opérations de classes
Les attributs de classe deviennent des membres statiques en Java et en C++ (static).
En UML : les attributs et méthodes de classe sont soulignés.
59
Attribut/Opération de classes
Attribut/opération d’instances
[Link] statiques: On peut ainsi les utiliser sans avoir une instance
créée.
60
Exemple
public class Livre {
private static int nbLivres = 0 ;
private String titre ;
private String auteur ;
private int id ;
...
public Livre(String titre, String auteur) {
[Link] = titre ;
[Link] = auteur ;
id = ++nbLivres ;
}
...
public static int getNombreTotalDeLivres() {
return nbLivres ;
}
...
Remarque
Final61static: C'est alors une constante de classe; Final: C’est une constante d’instance
Classe abstraite
Une classe abstraite est une classe dont l'implémentation n'est pas
complète: Elle contient au moins une méthode abstraite.
Une méthode est dite abstraite si on connaît son entête, mais pas la
manière dont elle peut être réalisée.
FormeGéométrique
{abstract}
- abs : int
- ord : int
+ {abstract}surface () : double
+ getAbs () : int
+ getOrd () : int
+ ... ()
Classe abstraite
Activité
nom activité
montant
planifier ()
Classe concrète
Tennis Foot
lieu Entraineur
planifier() planifier()
63
Classe abstraite
64
Classe abstraite
65
Cas particulier: Classe « Interface »
66
Interface
Une classe qui réalise une interface doit définir le corps de toutes
ses méthodes abstraites.
68
Exemple
69
Interface
70
Héritage multiple
une classe peut hériter de plusieurs super-classes = héritage multiple
Dans la plupart des langages actuels (c’est notamment le cas de Java, C#, PHP), il n’est
possible pour une classe d’hériter que d’une seule classe parente (abstraite ou non), mais
d’implémenter plusieurs interfaces.
72
Paquetage- Package
74
Exemple
Réservations
Vol
Client
nom Prénom CompagnieAerinne
adresse nom
tél
e-mail
numéro
1..*
{frozen} 1 Propose
a effectué
0..* 0..1
départ
Réservation Vol Aéroport
dateDepart 0..* 1
date concerne heureDepart nom
arrivée
numéro dateArrivee
0..* 1
heureArrivee 0..* 1
Annuler( ) {frozen}
Confirmer( ) ouvrirVol( ) escale
fermerVol( )
0..*
0..* 0..*
concerne
{ordered}
1 InfosEscale
Passager heureArrivee Ville
heureDepart nom
nom Prénom
75
Il faudrait limiter l’association à un seul sens.
76
Concepts de base de l’O.O
Abstraction
Héritage
Encapsulation
Polymorphisme
77
Polymorphisme
Ainsi on peut avoir une méthode avec la même signature et des corps
différents (codes différents).
78
Qu’est-ce que le polymorphisme ?
Un même message peut ainsi déclencher des traitements différents
selon l’objet auquel il fait appel.
- Débrayer
- Passer la
première
- Accélérer
Voiture - Embrayer
Demarrer()
Feu
changer (Vert)
Velo
- Pédaler
Demarrer()
79
Polymorphisme-Exemple1
Une opération n’est pas polymorphe si elle est déclarée comme une
opération feuille (leaf), en java (final) .
80
Polymorphisme-Exemple 2
Polygone
CalculSurface()
Quadrilatere Triangle
CalculSurface() CalculSurface()
81
Polymorphisme et Surcharge
82
Surcharge
83
Surcharge: Exemple
L'exemple suivant est incorrect
84
UML:
Diagrammes d’objets
85
UML 2.0
86
RAPPEL DIAGRAMMES
Objectifs:
• Illustrer par un exemple concret un diagramme de classes.
88
Diagramme d’objets
89
Exemple: Gestion des commandes client
diagramme de classes et d’objets
article
client commande comporte>
1 Passe une> 0 .. * 1 .. *
*
Ligne-Cmd
Photosmart500
1:
lignecmd :article
RAM 512MO
2: :article
CMD003 lignecmd
:commande 3:
lignecmd
CMD007 Compaq tabletPC
:commande 4:
:article
lignecmd
Ali Tunsi:client
CMD015
5: Dell Lat400
:commande lignecmd
:article
Mohamed
Ali:client
90
Diagramme d’objets
:Voiture Instance anonyme de la classe voiture
golf:Voiture
Couleur = "bleu M " Spécification des attributs
Puissance = 7ch
:Voiture
Collection d’instance (tableau)
91
Diagramme d’objets
92
Les caractéristiques fondamentales des objets
L'identité
L'état
Le comportement
93
L'identité d’un objet
Deux objets sont distincts même si toutes les valeurs de leurs attributs
sont identiques.
Dans le modèle objet, l’identité est implicite. Chaque objet est une
instance d’une classe qui reçoit , lors de sa création une identité
propre et unique.
94
État & Comportement
L’état d’un objet correspond aux valeurs de tous ses attributs à
un instant donné.
Message B
Une application, en orienté
Message A objet, est une société d'objets
Objet 1
collaborant.
L'unité de communication
Objet 2 entre les objets est le
message
Message C
Message E
Donc, l'achèvement d'une
tâche par une application
repose sur la communication
entre les objets qui la
Objet 4
Objet 3 composent.
Message D
96
État & Comportement
Cet objet est caractérisé par la liste de ses attributs et
son état est représenté par les valeurs de ses attributs :
n° employé : 1245,
nom : Durand,
qualification : ingénieur,
lieu de travail : site N.
Son comportement est caractérisé par les opérations
qu’il peut exécuter.
entrer dans l’organisme,
changer de qualification,
changer de lieu de travail,
sortir de l’organisme.
97
Objet composite
98
Objet composite
99
Chapitre 4: Diagrammes dynamiques
UML 2.0
101
Remarque
102
Diagrammes d’interaction
103
Modélisation UML:
Diagramme de séquence
104
Diagramme de séquence
105
Diagramme de séquence
Un diagramme de séquences est un moyen de capturer le
comportement des objets et acteurs du système selon un point
de vue temporel.
Deux types:
106
Diagrammes de Séquences d’analyse et de conception
o1 : C1 o2 : C2 o3 : C3
Les Objets
Un message
Ligne de Vie
107
Représentation des objets
108
Diagramme de Séquence
109
MESSAGE
110
Eléments de base
111
Diagramme de séquence
« sequence diagram »
nom de l’interaction
112
Période d’activité
O b j e t_ 2 O b j e t_ 1
M e ssa g e _ 1
113
Activation d’un objet
114
Synchronisation des messages
115
Types de message
116
Types de message
117
Types de message
118
Création et destruction d’objets
119
Diagramme de séquence
120
Messages
121
Syntaxe d’un message
[attribut= ] <nomSignalouOpération>[(listeArgument, )][: valeur-retour]
Exemples :
appeler("Capitaine Hadock", 54214110)
afficher(x,y)
initialiser(x=100)
Dans le cas de signaux, les arguments correspondent aux attributs du signal
122
Traitement alternatif (UML 1)
[condition]: Message
123
Alternative – Itération (UML 1)
o:C o1 : C 1 o2 : C2
[cond] message1
messages conditionnés
[non cond] message2
o:C o1 : C 1
Itération d’un message
* message1
message2
.
.
.
124
Itération (UML 1)
* [condition]: Message
125
Fragments combinés (UML 2)
126
Fragments
Si x>0 alors
Si x<0 alors
127
Balance= solde du compte
128
129
Opérateur opt
sd print( f : File )
isCmprsd=isCompressed()
opt [isCmprsd]
decompress()
print(f)
130
131
Boucle
132
133
134
135
Utilisation des diagrammes de séquence
136
UML 2.0
137
Une association entre des classes correspond à une
structure statique. C’est également le support de la
collaboration entre les objets des classes.
asso
message 1 message 2
message 3 asso message 3
message 2 message 1
Diagrammes de communication
(collaboration UML 1)
140
Diagramme de communication
141
Exemple
142
Diagrammes de communication
143
Exemple : Appel téléphonique
144
Diagrammes de communication
Éléments d’une interaction
Instances
qui collaborent avec d'autres objets en échangeant des
informations :Classe Objet:Classe
Représentés par
liens
qui sont des supports de messages
Représentés comme des associations
messages
déclenchant les opérations
Indiqués par des flèches
145
Diagrammes de communication
Mêmes types contraintes que pour les diagrammes de
séquence
Itération : *[condition]
Conditions : [condition]
146
Diagrammes de communication
Les objets crées ou détruits au cours d’une interaction
peuvent respectivement porter les contraintes :
{Nouveau}
{Détruit}
<<{Détruit}>> <<{Nouveau}>>
Objet_1 Objet_2
147
Exemple : Ascenseur (Séquence)
148
Exemple Ascenseur (Diagramme de
communication)
149
UML 2
150
UML 2
151
Diagramme d’états transitions
152
Diagramme d’états transitions
153
Diagramme d’états transitions
154
Exemple
155
Diagramme d’états transitions
156
Diagramme d’états-transitions
Etat A Etat B
Disponible Réservée
157
Diagrammes d'états-transitions: Objectifs
158
Diagrammes d'états-transitions
159
Diagrammes d'états-transitions
160
Etat d’un objet
• Plusieurs façons de définir un état.
161
Etat d’un objet
personne En activité
Plus de 60 ans
société do: travailler
nom
prénom est
* n° SIREN
age employée 0..1 nom
Perte
adresse par
téléphone dC.A.
’emploi A la retraite
Implantation Licenciement Embauche
code postal
Plus de 60 ans
Au chômage
162
163
UML : DIAGRAMME D’ETATS-TRANSITIONS
ETATS SPECIAUX:
• 2 états prédéfinis :
• état de démarrage : obligatoire, unique
• état de fin : optionnel, peut-être multiple
ETAT 1 ETAT X
164
165
Transition
166
Les événements
167
Notion de garde
• Une garde est une condition booléenne qui permet ou non le déclenchement d’une
transition lors de l’occurrence d’un événement.
Evénement [condition]
A B
Disponible En réparation
168
Garde
Sinistre [nombreSinistres = 5]
En cours Résiliée
170