0% ont trouvé ce document utile (0 vote)
31 vues170 pages

Modélisation UML : Diagrammes statiques

ytre

Transféré par

madameghachem
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
31 vues170 pages

Modélisation UML : Diagrammes statiques

ytre

Transféré par

madameghachem
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Chapitre 3: Diagrammes statiques

3 Axes de modélisation d ’un système

Statique (ce que le système EST)


• diagramme de classes
• diagramme d’objets
• diagramme de composants
• diagramme de
déploiement
Dynamique
(comment le système
Fonctionnel
EVOLUE)
(ce que le système FAIT)
• diagramme de séquence
• diagramme de communication • diagramme de cas d’utilisation
• diagramme d’états-transitions
• diagramme d’activités
2
Les activités du projet

 Etude préalable : Analyse du contexte

 Analyse et spécification des besoins

 Analyse du problème ou métier ou système

 Conception de la solution

3
Analyse métier

Les besoins sont analysés selon le point de vue des développeurs


(et non pas celui du client).

 L’analyse se focalise sur ce qu’on doit réaliser (QUOI),

 L'analyse permet d'obtenir une vue logique du système

 Modéliser le système afin de le rendre plus compréhensible

4
UML

Point de vue fonctionnel


Point de vue Statique:
Diagrammes de classe
Point de vue dynamique

5
Les objets

 Les objets informatiques définissent une représentation abstraite


des entités du monde réel. Ils peuvent représenter des entités
concrètes ou des entités virtuelles.

 Une abstraction est un résumé qui met en avant les


caractéristiques essentielles et qui dissimulent les détails.

 Une abstraction se définit par rapport à un point de vue.

6
Exemples de caractéristiques

•Pour une voiture : la marque, la puissance, la couleur, le nombre de places


assises, …
•Le point de vue est exprimé par qui ? Le propriétaire, le mécanicien, le
vendeur, …
7
Classe

 Classe d’objets

 La classe sert à regrouper sous un même terme


générique les objets partageant les mêmes
caractéristiques et le même comportement.

 On dit qu'un objet est une instance d'une classe.

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

Une classe est composée:

 attributs

données dont les valeurs représentent l'état de l'objet

méthodes ou opérations

opérations applicables aux objets

Nom_de_la_classe

attribut1 : Type
attribut2 : Type

méthode1 ()
méthode2 ()

10
Les classes

Nom de classe Nom de classe


Nom de classe

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

 Une association indique que deux classes communiquent entre


elles (dans un sens ou dans les deux sens).

 Une association ne sous-entend aucune hiérarchie dans la


relation.

13
Diagramme de classe: Associations

14
Diagramme de classe: Associations

15
Cardinalité ou multipilicité des associations

Notation abrégée des multiplicités :

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

 Un objet (dit objet utilisateur) peut utiliser les services d’un


autre objet (dit objet utilisé) selon le sens de navigation indiqué
par l’association.

 Pour utiliser un service d’un objet, l’objet utilisateur envoie un


message à l’objet utilisé.

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

Une association peut avoir des attributs = 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

 Ce concept UML avancé n’existe pas dans les langages de


programmation objet, il faut donc le traduire en le
transformant en classe normale,

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

 Principe: hiérarchies de classes


 permet de gérer la complexité, en ordonnant les objets au sein d'arborescences de
classes,

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

 super-classe : classe plus générale reliée à une ou plusieurs


autres classes spécialisées (sous-classes) par une relation de
généralisation

 Les sous-classes héritent des propriétés de leur super-classe et


peuvent comporter des propriétés spécifiques supplémentaires

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.

La qualification se représente par un rectangle placé au niveau de la classe source du qualificatif.


31
Associations n-aires

 degré ou arité d’une association = nombre de classes participantes

Association unaire : relie 2 instances d'une classe


association binaire : relie 2 classes
 association ternaire : relie 3 classes
 association n-aire : relie n classes

32
Associations n-aires

 Exemple ternaire

 Pour un couple d’instances de la classe A et de la classe B,


il y a au min. r1 instances de la classe C et au max. r2 instances,
…
…

33
Contraintes sur les associations: contrainte {addOnly} (UML 1)

 La contrainte prédéfinie {addOnly} autorise l’ajout de nouveaux


objets, mais pas leur suppression ni leur mise à jour.
 instances ajoutables mais non retirables.
Personne Liste
1..*
1

0..*
{addOnly}

Enfants

34
Contraintes sur les associations: contrainte {ordonné-ordered}

Indique que les objets seront ordonnés à chaque opération


de création, modification, suppression, …

Personne Compte
1 0..*
{Ordonné}

Les comptes d’une personne sont ordonnés

35
Contraintes sur les associations: contrainte {frozen} (UML 1)

 La contrainte prédéfinie {frozen} (readonly UML 2) interdit l’ajout, la suppression


ou la mise à jour de valeurs d’attribut ou de liens d’un objet vers les objets de la
classe associée, après l’initialisation du premier.

Personne
{frozen} 0..*
enfant
2
parent

36
Concept de classes d’objets

 Classe = Une classe est la description formelle d'un ensemble d’objets


ayant les mêmes propriétés (attributs) et le même comportement
(opérations).

 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.

 Objet = un concept qui a un sens dans le contexte du système à


modéliser

 une personne : le client « Mr …. »


 un objet concret : le livre intitulé « Initiation à… »
 un objet abstrait : le compte bancaire n° 1915233C

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.

3. Encapsulation: Par rapport à l’approche classique, l’approche objet se caractérise par le


regroupement dans une même classe de la description de la structure des attributs et de la
description des opérations. Ce regroupement des deux descriptions porte le nom
d’encapsulation données-traitements.

4. Polymorphisme: est la capacité donnée à une même opération de s’exécuter


différemment suivant le contexte de la classe où elle se trouve. Ainsi une opération
définie dans une super-classe peut s’exécuter de manière différente selon la sous-classe où
elle
39 est héritée.
Encapsulation

 L'encapsulation est un mécanisme consistant à:


1. rassembler les données et les méthodes au sein d'une structure
2. Protéger l'accès aux données

 L'encapsulation permet de définir des niveaux de visibilité des


attributs et des méthodes.

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.

•Package (~): accessible par tout le paquetage.

•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

Afin de s’assurer que le diamètre


soit le double du rayon, on peut
décider de donner le statut privé
aux attributs rayon et diamètre.

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:

 Le regroupement dans une même classe de la


description de la structure des attributs et de la
description des opérations.

48
Concept d'attribut

 Un attribut est une propriété, caractéristique d’un objet.


Par exemple :

 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 :

Visibilité attribut:type[= valeur initiale]

 Valeur initiale (facultative)

 Le type d’un attribut peut être :


 Un type de base : entier, réel, …
 Une expression complexe : tableaux, enregistrements, …
 Une classe

 Exemples d’attributs :
 - couleur : enum{Rouge,Vert, Bleu}
 # b : boolean = vrai
 - Client : Personne

50
Concept d'attribut

 Lorsqu’un attribut peut être dérivé ou calculé à partir


d'autres attributs, il est précédé d’un /.

 Par exemple, une classe « Rectangle » peut contenir les


attributs suivants :
 longueur : réel,
 largeur : réel, Rectangles
 /surface : réel. - Largeur : float = 10
- Longueur : float
- /Surface : float

51
Opération

 Une opération est une fonction applicable aux objets d’une


classe.

 Une opération permet de décrire le comportement d’un objet.

 Un service offert par la classe.

 Une méthode est l’implémentation d’une opération.


 En programmation O.O (java, C++) on parle de méthode

52
Concept d'opération et méthode

 Tout concept dynamique est modélisé en opération.


 ouvrirReservation( ) et fermerReservation( ) de la classe vol.

 Embaucher, Licencier et Payer sont des opérations de la classe Société.

53
Concept d'opération

La signature d’une opération comporte :


Visibilité opération(arguments type[=valeur initiale]):type de résultat

 Visibilité de l’opération (-, +, #)


 Nom de l’opération
 Liste des arguments avec leurs types et éventuellement leurs valeurs par défaut
 Le type du résultat retourné

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

 La signature d'une opération(ou prototype) correspond à la ligne de texte qui la


représente dans une classe ou une interface d'un diagramme de classes UML.

54
Concept d'opération

 de différents types :
 accesseurs ou sélecteurs(get...): renvoie une information
sur l'état d'un objet (fonction)

 modificateurs (set...): modifie l'état de l'objet


(procédure)

 constructeurs: initialise une nouvelle instance

55
Opérations- Les accesseurs-les modificateurs

 Les accesseurs et les modificateurs sont des méthodes


qui permettent d’accéder aux attributs, en lecture et en
écriture.

 En Java, par convention ils sont notés getAtt et setAtt


pour un attribut att. Leur signature est la suivante pour
un attribut att de type T :

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
+ ... ()

 Représentation d’une classe abstraite: italique ou mot clé {abstract} .


62
Classe abstraite

 Représentation d’une classe abstraite: italique ou mot clé {abstract} .

Classe abstraite
Activité
nom activité
montant

planifier ()

Classe concrète

Tennis Foot
lieu Entraineur

planifier() planifier()

63
Classe abstraite

 Le mécanisme des classes abstraites permet de définir des


comportements dont l'implémentation se fait dans les classes
filles.

 Une classe abstraite est une classe qui ne permet pas


d’instancier des objets.

 Une classe abstraite doit avoir au moins une sous-classe.

64
Classe abstraite

65
Cas particulier: Classe « Interface »

 Une interface est une classe spéciale dont toutes les


méthodes sont abstraites.

 Une interface se note en UML avec le stéréotype


<<interface>> ou le symbole

66
Interface

 Une classe d’interface permet de décrire la vue externe d’une


classe.

 La classe d’interface est une spécification et non une classe


réelle.

 La classe d’interface, identifiée par un nom, comporte la liste des


opérations accessibles par les autres classes.

 Le compartiment des attributs ne fait pas partie de la


description d’une interface.
67
Interface

 Seules des signatures de méthodes sont présentes dans les


interfaces.

 Le terme d’héritage n’est pas utilisé entre classes et interfaces : on


dit qu’une classe implémente ou réalise une interface,

 On parle de relation de réalisation entre une interface et une


classe qui l’implémente.

 Une classe qui réalise une interface doit définir le corps de toutes
ses méthodes abstraites.

68
Exemple

69
Interface

 Les interfaces servent à définir des contrats de service


à respecter par les classes réalisant l’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.

 Remarque: C++ permet l’héritage multiple


71
Interfaces fournies et requises

72
Paquetage- Package

 Les paquetages sont des éléments d'organisation des modèles.


 Ils regroupent des éléments de modélisation, selon des critères purement
logiques.
 Ils représentent le bon niveau de granularité pour la réutilisation.

 Structuration d’un modèle en packages:


 Forte cohésion: Cohérence (regroupement des classes selon la
sémantique)
 Les critères de regroupement peuvent être fonctionnel ou
d'implantation.
 Faible couplage: Indépendance (minimisation des relations entre classes de
packages différents)
73
Packages - dépendance
 Il y a dépendance entre deux packages quand une
association existe entre deux classes appartenant
respectivement à ces deux packages.

 Si l’association est bi-directionnelle la dépendance l’est


aussi: Dépendance mutuelle.

 Or, le concepteur objet doit faire la chasse aux


dépendances mutuelles ou cycliques, afin d’augmenter la
modularité,l’évolutivité et la réutilisation de son
application.

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

 Le polymorphisme signifie qu'une même opération peut se traduire


différemment selon l'objet sur lequel elle s'applique.

 C’est un mécanisme qui permet à une sous classe de redéfinir une


méthode dont elle a hérité tout en gardant la même signature de la
méthode héritée.

 Ainsi on peut avoir une méthode avec la même signature et des corps
différents (codes différents).

 Une opération abstraite est polymorphe.

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()

Rectangle Carre TriangleRectgle TriangleIsocele

CalculSurface() CalculSurface() CalculSurface() CalculSurface()

81
Polymorphisme et Surcharge

 Le polymorphisme n'est pas la surcharge

 La polymorphisme se fait par une sous-classe pour une méthode


définie dans la super-classe en fournissant la même signature.

 La surcharge se fait dans une classe pour une méthode existante


(héritée ou non) en fournissant une signature différente

82
Surcharge

 Une méthode qui surcharge une autre doit obligatoirement :


 Avoir le même nom de la méthode surchargée.
 Au sein d’une même classe avoir une signature différente : paramètres
différents en nombre, en types ou en ordre de ceux de la méthode
surchargée.

 La signature d'une méthode correspond aux types et nombre de


paramètres acceptés par celle-ci.

 On peut en effet écrire une méthode int add(int a, int b) et une


méthode float add(float a, float b) dans une même classe. Cette
possibilité s’appelle la surcharge.

83
Surcharge: Exemple
 L'exemple suivant est incorrect

float somme(float a,float b) {


return (a+b);
}
int somme(float a,float b) {
return ( (int) (a+b) );
}

 Il n'est pas possible d'avoir deux méthodes, de même nom,


dont tous les paramètres sont identiques.

84
 UML:
 Diagrammes d’objets

85
UML 2.0

86
RAPPEL DIAGRAMMES

Diagramme Statiques ou de Diagrammes Comportementaux ou


structures : Dynamiques :

•Diagramme de classes •Diagramme de cas d’utilisation


Class diagram Use case diagram
•Diagramme d’objets •Diagramme de collaboration
Object diagram (communication)
•Diagramme de composants Communication diagram
Component diagram •Diagramme de séquence
•Diagramme de déploiement Sequence diagram
Deployment diagram •Diagramme d’états-transition
•Diagramme de paquetages State Machine diagram
Package diagram •Diagramme d’activités
•Diagramme de structure composite Activity diagram
Composite Structure diagram •Diagramme global d’interaction
Interaction Overview diagram
•Diagramme de temps
Timing diagram
Version 2.X
87
Diagramme d’objets

Objectifs:
• Illustrer par un exemple concret un diagramme de classes.

• Faciliter la validation d’un diagramme de classes complexe


en présentant une ou plusieurs instanciation de celui-ci.

• Visualiser un instantané de l’état d’un système.

• Exprimer une exception en modélisant des cas particuliers.

88
Diagramme d’objets

 Représente les objets (instances de classes) et les liens


(instances de relations) à un instant donné.

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 Instance nommée de la classe voiture

golf Instance nommée d’une classe anonyme

golf:Voiture
Couleur = "bleu M " Spécification des attributs
Puissance = 7ch

:Voiture
Collection d’instance (tableau)

91
Diagramme d’objets

 Le nom d’un objet est souligné. Plusieurs représentations sont


possibles:
 Nom de l’objet: Classe
 Nom de l’objet
 :Classe

 La représentation des objets peut contenir les attributs significatifs.

92
Les caractéristiques fondamentales des objets

 L'identité

 L'état

 Le comportement

93
L'identité d’un objet

 Chaque objet a sa propre identité ;

 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.

 Dans le modèle relationnel, l’identité est donnée par une clé


primaire qui est unique pour chaque ligne de la table.

94
État & Comportement
 L’état d’un objet correspond aux valeurs de tous ses attributs à
un instant donné.

 Les propriétés sont définies dans la classe d’appartenance de


l’objet.

 Le comportement d’un objet est caractérisé par l’ensemble des


opérations qu’il peut exécuter en réaction aux messages
provenant des autres objets.

 Les opérations sont définies dans la classe d’appartenance de


l’objet.
95
Communication entre objets

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

• Il n’y a pas un diagramme de classes mais plusieurs, chacun


étant une évolution du précédent et une ébauche du suivant.

• Ce diagramme de classes est cohérent avec les autres


diagrammes (de séquences, de collaborations...). Il est en
permanence mis à jour diagramme après diagramme.

102
Diagrammes d’interaction

103
Modélisation UML:
Diagramme de séquence

104
Diagramme de séquence

• En général, un diagramme de séquence capture le


comportement d’un cas d’utilisation.

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:

 Diagramme de séquence système (phase de capture des besoins)


 Le système est une boîte noire
 Analyse d'un cas d'utilisation

 Diagramme de séquence d’analyse et de conception


 Le système est une boîte blanche
 Analyse d'un diagramme de classe

106
Diagrammes de Séquences d’analyse et de conception

 Définissent les interactions entre Objets (et acteurs) selon


un point de vue temporel,

 L’unité de communication entre objets s’appelle message.

o1 : C1 o2 : C2 o3 : C3

Les Objets
Un message

Temps Un autre message

Ligne de Vie

107
Représentation des objets

108
Diagramme de Séquence

 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

 Les diagrammes de séquences et les diagrammes d'état-


transitions sont les vues dynamiques les plus importantes
d'UML

109
MESSAGE

 Les messages sont représentés par des flèches placées le


long des liens qui unissent les objets.

 Lors de la réception d’un message, un objet devient actif,


marquant le traitement du message.

110
Eléments de base

 les acteurs peuvent également


communiquer avec des objets,
ainsi ils sont énumérés en
colonne.

 Une ligne de vie représente un


rôle (objet ou acteur) dans
l'interaction.

111
Diagramme de séquence
« sequence diagram »

nom de l’interaction

112
Période d’activité

 Représentée par une bande rectangulaire superposée à la


ligne de vie de l’objet.

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

 Un message synchrone bloque l’expéditeur jusqu’au retour


du destinataire. Le flôt de contrôle passe de l’émetteur au
récepteur.
 Typiquement : appel de méthode
 Si un objet A invoque une opération d’un objet B, A reste bloqué tant que
B n’a pas terminé.

 On peut associer aux messages d’appel de la méthode un


message de retour (en pointillés) marquant la reprise du
contrôle par l’objet émetteur du message synchrone.

116
Types de message

 Un message asynchrone n’interrompt pas l’exécution de


l’expéditeur. Le message envoyé peut être pris en compte
par le récepteur à tout moment ou ignoré.

 Typiquement : envoi de signal (message porteur d’information)

117
Types de message

 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.

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]

 Attribut: le nom d’un attribut pour stocker la valeur du retour.

 La syntaxe des arguments est la suivante :


 <nomParametre >=< valeurArgument >
 Valeur-argument
 nomParamètre

 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)

La condition précédée le message et elle est délimitée par


des crochets (Si .. Alors)

Objet_1 Objet_2 Objet_3

[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)

Objet_1 Objet_2 Objet_3

* [condition]: Message

125
Fragments combinés (UML 2)

 Représenté par un rectangle dont le coin supérieur gauche


contient un pentagone.

 Nous utilisons des fragments combinés pour représenter :


 Des alternatives,
 Des options,
 Des boucles
 Des références

126
Fragments

Tant que x>0 faire

Si x>0 alors

Si x<0 alors

127
Balance= solde du compte
128
129
Opérateur opt

sd print( f : File )

self:PrintServer f:File :Printer

isCmprsd=isCompressed()

opt [isCmprsd]

decompress()

print(f)

130
131
Boucle

132
133
134
135
Utilisation des diagrammes de séquence

 Description des cas d’utilisation (diagrammes de séquence système)


 A chaque cas d’utilisation, on associe un diagramme de séquence pour
montrer comment se déroulent les interactions entre les acteurs et le
système pour réaliser le cas.

 Modélisation de l’ interaction entre les objets suite à une sollicitation du


système
 Description d’une interaction: Pour montrer comment les objets à
l’intérieur du système interagissent entre eux.

 Spécification d’un algorithme


 Depuis UML 2.0 avec les fragments combinés (boucles, tests, par...), on
dispose de tout le nécessaire pour représenter n’importe quel
algorithme.

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

Par une seule association, plusieurs messages passeront.


139 diagramme de communication (nommé diagramme de collaboration dans UML 1)
UML 2

Diagrammes de communication
(collaboration UML 1)
140
Diagramme de communication

 Le diagramme de communication constitue une autre


représentation des interactions que celle du diagramme de
séquence.

 Le diagramme de communication met plus l’accent sur l’aspect


spatial des échanges que l’aspect temporel.

 Ce diagramme est une autre représentation des scénarios des


cas d’utilisation qui met plus l’accent sur les objets et les
messages échangés (la communication)

 Représente les interactions entre objets.

141
Exemple

142
Diagrammes de communication

 Différences avec diagrammes de séquence


 pas d’axe temporel
 temps modélisé par numérotation

143
Exemple : Appel téléphonique

1. Décrocher 4.1b. Sonnerie


:Appelant 2. Tonalité :Ligne 5. Décrocher :Appelé
3. Numérotation 6.1b. Arrêt sonnerie
4.1a. Tonalité sonnerie
6.1a. Arrêt tonalité

NB. 6.1a et 6.1b pour deux messages envoyés en même temps.

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]

 Exemple : réservation d’articles

1. commander(n, item) 2. vérifier(n, item)


:Client :Vendeur :Stock
4. livrer(n, item) 3. [disponible]réserver(n, item)

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

Diagramme d’états transitions

150
UML 2

151
Diagramme d’états transitions

 Décrivent le comportement complet du système ou d’un composant


du système (une classe) à la différence des diagrammes d’interactions
ou de séquences qui décrivent des cas d’utilisation (scénarios).

 Niveau macroscopique (cahier des charges) : comportement d’un


système complexe.

 Niveau microscopique (Analyse et conception) : comportement d’un


objet (classe) complexe.

152
Diagramme d’états transitions

 L’enchaînement de tous les états caractéristiques d’un objet


constitue le diagramme d’état.

 Le formalisme des diagrammes d’états est celui des automates à


états finis.
 des multigraphes (liens multiples) étiquetés, les sommets étant les états, les arcs
étant étiquetés.

153
Diagramme d’états transitions

 Les diagrammes d’états sont basés sur 3 notions :

 Etat d’un objet (situation d’un objet)


 Transition/événement
 Comportement des objets (leurs actions et leurs activités).

154
Exemple

155
Diagramme d’états transitions

Présenter les séquences possibles d’états qu’un objet peut prendre


au cours de son cycle de vie en réaction à des événements.

156
Diagramme d’états-transitions

• Les états sont reliés par des connexions unidirectionnelles appelées


transitions.

•Ex : place de parking

Etat A Etat B

Disponible Réservée

157
Diagrammes d'états-transitions: Objectifs

•Les diagrammes d'états-transitions permettent d'effectuer une


vérification du système :

•On déclenche un événement, et on observe les changements d'états


des objets du système.

•En cas d'incohérence, il faut recommencer l'analyse.

158
Diagrammes d'états-transitions

 Toutes les classes ne nécessitent pas un diagramme


d’états.

 S’utilise pour la modélisation de certaines classes:


 Les classes qui ont un comportement dynamique
complexe.

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

Diagramme de classes Diagramme d ’états-transitions

•Les personnes ne possèdent pas toutes un emploi et se trouvent, à un moment


donné, dans un des états suivants : en activité, au chômage, à la retraite
•L’état d ’une personne donnée est déterminé selon son âge et la présence ou non
d’un lien vers une société.

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

Création de l’objet Fin de vie de l’objet

ETAT 1 ETAT X

164
165
Transition

 Une transition représente le passage instantané


d'un état vers un autre.

 Une transition est déclenchée par un événement.

 Un événement est une information instantanée.

166
Les événements

• Il existe quatre types d’évènements:

•Evènement sur condition(de changement): changement d’une


condition booléenne
•Ex: le feu est vert
•Evènement temporel: Epuisement d’un délai temporel ou occurrence
d’une certaine date ou heure.
•Après (15s)
•Quand (date = ‘11-01-2011’)
•Réception d’un signal envoyé par un autre objet.
•Ex: « Bouton souris = down »
•Demande d’opération ou de méthode

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

•Ex: Objet Voiture de location


•Pour que la transition soit franchie il faut que l’évènement survienne et que la condition
soit vraie.
Retour [bon état] Retour [mauvais état]
Loué

Disponible En réparation

168
Garde

• la condition porte sur des informations accessibles de l ’objet : paramètres,


attributs
• les gardes doivent être mutuellement exclusives

• Exemple police d’assurance:

Sinistre [nombreSinistres = 5]
En cours Résiliée

Sinistre [nombreSinistres < 5]


PoliceAssurance
- nombreSinistres
+signer()
+faireDemande(motif)
169 +déclarerSinistre()
• formée d ’un une ou plusieurs opérations de la classe

170

Vous aimerez peut-être aussi