Vous êtes sur la page 1sur 73

UML

Diagrammes de classes
et d’objets
Diagramme de classes
Permet de donner une vue statique du système
en terme de :
 Classes d'objets
 Relations entre classes
 Associations
 agrégation/composition
 héritage
La description du diagramme de classes est
centrée sur trois concepts :
 Le concept d’objets
 Le concept de classes d’objets comprenant des
attributs et des opérations
 Les différents types de relations entre classes.
Mohamed Ali HADHRI 100
Concept d'objet
Objet = un concept, abstraction ou une
chose autonome qui a un sens dans le
contexte du système à modéliser
 une personne : le client « El Alami M. »
 un objet concret : le livre intitulé
« Initiation à… »
 un objet abstrait : le compte bancaire
n° 1915233C
 …
Mohamed Ali HADHRI 101
Concept d'objet
Remarque
Un objet doit :
 Être autonome
 Avoir une signification dans le système
 En relation avec d'autres objets
Ne pas confondre "autonomie" avec
"indépendance"!!
Exemples
 Gestion de stock : Clients, Commandes, Articles, …
 Gestion scolaire : Étudiants, Modules, Filières, …
Mohamed Ali HADHRI 102
Concept d'attribut
Un attribut est une propriété, caractéristique
d’un objet; Par exemple
 un client a un nom, un prénom, une adresse,
un code client, …
 un compte bancaire a un numéro, un solde, …
Un attribut doit (généralement) avoir une
valeur atomique

Mohamed Ali HADHRI 103


Concept d'attribut
La description d’un attribut comporte :
Visibilité attribut:type[= valeur initiale]
Où :
Visibilité :
 + (publique, public) : visible par tous
 - (privée, private) : visible seulement dans la classe
 # (protégée, protected) : visible seulement dans la
classe et dans les sous-classes de la classe.
Nom d’attribut
Type de l’attribut
Valeur initiale (facultative)
Mohamed Ali HADHRI 104
Concept d'attribut
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
Mohamed Ali HADHRI 105
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 : Rectangles
- Largeur : float = 10
 longueur : réel, - Longueur : float
- /Surface : float
 largeur : réel,
 /surface : réel.

Mohamed Ali HADHRI 106


Concept d'attribut
On distingue deux types d'attributs :
Attribut d'instance :
 Chaque instance de la classe possède une valeur
particulière pour cet attribut
 Notation : Visibilité attribut:type[= valeur
initiale]
Attribut de classe
 Toutes les instances de la classe possède la même
valeur pour cet attribut
 Notation : Visibilité attribut:type[= valeur
initiale]
 Équivalent en C++, Java
Mohamed : static
Ali HADHRI 107
Concept d'attribut
Window
- taille : Rectangle = (100,100)
Attributs d'instances
- visibilité : boolean = true
- taille_defaut : Rectangle
Attributs de classes
- taille_max : Rectangle
+ <<Constructor>> Window ()
+ afficher () : void
Opérations d'instances
+ cacher () : void
+ getT aille_max () : Rectangle
Opérations de classes
+ getT aille_defaut () : Rectangle

Mohamed Ali HADHRI 108


Concept d'opération et
méthode
Une opération est :
un service offert par la classe
une fonction ou une transformation qui peut
être appliquée aux objets d’une classe.
permet de décrire le comportement d’un
objet. Par exemple, « Embaucher »,
« Licencier » et « Payer » sont des opérations
de la classe « Société ».

Mohamed Ali HADHRI 109


Concept d'opération et
méthode
Une méthode est
 l’implémentation d’un service offert par la
classe (opération).
 de différents types :
 accesseurs (get...): renvoie une information sur
l'état d'un objet (fonction)
 modifieurs (set...): modifie l'état de l'objet
(procédure)
 constructeurs: initialise une nouvelle instance

Mohamed Ali HADHRI 110


Concept d'opération et
méthode
La description 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é
Mohamed Ali HADHRI 111
Concept d'opération et
méthode
Exemples d'opérations :
Compte
- N°Compte : String
- Solde : float
- Client : Personne
+ <<Constructor>> Compte ()
+ Deposer (float somme) : void
+ Retirer (float somme) : float
+ AvoirSolde () : String

Mohamed Ali HADHRI 112


Concept de classes d’objets
Classe = ensemble d’objets ayant les mêmes
propriétés (attributs) et le même comportement
(opérations)
 tous les clients sont décrits par un nom, un prénom,
… et peuvent marcher, parler,courir, …
 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.
Mohamed Ali HADHRI 113
Concept de classes d’objets
Classe représentée par un rectangle à
trois parties :
 Partie 1 : Nom de la classe
 Partie 2 : Attributs (propriétés, champs)
 Partie 3 : Méthodes (fonctions, opérations)

Mohamed Ali HADHRI 114


Concept de classes d’objets
Compte
- N°Compte : String
- Solde : float = 100
# Client : Personne
+ <<Constructor>> Compte ()
+ Deposer (float somme) : void
+ Retirer (float somme) : float
+ AvoirSolde () : String

Mohamed Ali HADHRI 115


Concept de classe d'objets
On peut ne pas visualiser les attributs
et/ou les opérations, afin de ne pas
alourdir inutilement le schéma.
Nom de la classe Nom de la classe Nom de la classe Nom de la classe

Attributs Attributs Opérations

Opérations

Mohamed Ali HADHRI 116


Encapsulation, visibilité et
interface
Encapsulation est le mécanisme de
regrouper les attributs et les opérations
au sein d’une même entité (classe)
Ce regroupant permet d’empêcher
d’accéder directement aux données par
un autre moyen que les services
proposés (opérations)
Ces services offerts aux utilisateurs
définissent ce que l’on appelle
l’interface de la classe.
Mohamed Ali HADHRI 117
Encapsulation, visibilité et interface

Données
} •Partie statique, passive
•Partie cachée, privée

•Partie dynamique, comportementale


Traitement
•Partie visible, publique
•Interface avec l’extérieur

User

Mohamed Ali HADHRI 118


Méthodes et classes abstraites
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
Une classe est dite abstraite lorsqu’elle
définit au moins une méthode abstraite
FormeGéométrique
{abstract}
- abs : int
- ord : int
+ {abstract}surface () : double
+ getAbs () : int
+ getOrd () : int
+ ... () Mohamed Ali HADHRI 119
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 symbole
Forme

Mohamed Ali HADHRI 120


Package
Un package permet de regrouper des
classes, des interfaces et des packages.
Les classes, les interfaces et les
packages ne peuvent qu’un seul
package dans lequel ils sont regroupés

Mohamed Ali HADHRI 121


Package
Un package est représenté par un
rectangle possédant un onglet dans
lequel est inscrit le nom du package

Mohamed Ali HADHRI 122


Import des packages
La relation d’import permet à une classe
d’un package d’utiliser les classes d’un
autre package.
La relation est monodirectionnelle : elle
comporte un package source et un
package cible.

Mohamed Ali HADHRI 123


Import de packages
La relation d’import s’exprime avec une
flèche en pointillé
Dans l’exemple, la classe ‘Afficheur’ a
besoin des classes du package ‘Dessin’

Mohamed Ali HADHRI 124


Associations
Relation existant entre une, deux ou plusieurs
classes.
Une association porte un nom (signification)
Représentée par une ligne rectiligne

Mohamed Ali HADHRI 125


Associations
Remarques
une association fonctionne
(généralement) dans les 2 sens
(bidirectionnelle)
termes associés : Nom, Sens de lecture,
degré (arité), Multiplicité, Rôle,
navigabilité et le qualificateur

Mohamed Ali HADHRI 126


Associations
Nom et sens de lecture

Décrit la nature (signification) de


l’association
Montre la direction de lecture de
l’association

Mohamed Ali HADHRI 127


Associations
Rôle d’une association

Décrit le rôle d’une classe dans une


association

Mohamed Ali HADHRI 128


Associations
Rôle d’une association

Utile surtout dans deux cas :


 Lorsqu’on a plusieurs associations entre
deux classes avec des rôles différents
 une relation réflexive : relation entre deux
instances d’une même classe
Personne
Pilote Personne
Avion 0..4
femme

Passager
0..1
mari

Mohamed Ali HADHRI 129


Associations
Classe association
Une association peut avoir des attributs = classe-association

Mohamed Ali HADHRI 130


Associations
Classe association
Les classes association sont utiles quand il y a
des attributs qui sont pertinents à
l’association, mais à aucune des classes
impliquées.
Personne Entreprise
1..*
0..1

Emploi
- Période : int
- Salaire : float

Mohamed Ali HADHRI 131


Associations
 degré 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

Mohamed Ali HADHRI 132


Associations
Multiplicité = nombre de participations d’une classe dans une
association
 indiquée à chaque extrémité d’une association
 sous la forme min..max
 min, max = 0, 1, *
 Exemple général

 Exemple concret

Mohamed Ali HADHRI 133


Associations
 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,
Mohamed Ali HADHRI 134
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

Mohamed Ali HADHRI 135


Association
Navigabilité

Une association est par défaut


bidirectionnelle.
Commandes Clients
1..*
1

Cependant, il peut être utile de se limiter à


une seule direction  association navigable

Mohamed Ali HADHRI 136


Association
Navigabilité (Exemple)

Spécification : on doit être en mesure de savoir


le client qui a fait la commande et non toutes les
commandes d’un client
Conception :
Commandes Cl ients
1..*
1

Implémentation : la classe commande doit avoir


un champ faisant référence à la classe client

Mohamed Ali HADHRI 137


Association
Navigabilité (Exercice)

Un étudiant peut avoir jusqu’à 5 copies


d’examens. À un étudiant sont
associées ses copies d’examens, mais
on ne doit pas autoriser l’accès à
l’auteur de la copie (notamment avant
la correction des copies)

Mohamed Ali HADHRI 138


Qualification d'une association
La qualification d’une association
permet de restreindre la multiplicité
d’une association.
La qualification se représente par un
rectangle placé au niveau de la classe
source du qualificatif.

Mohamed Ali HADHRI 139


Qualification d'une association
Exemple : une banque contient plusieurs
comptes, d'où le diagramme :
Banque Compte
1 1..*

Par contre, si on connaît le N°Compte, il y a un et un seul


compte, on obtient alors :

Compte
Banque NCompte
1 1

Mohamed Ali HADHRI 140


Qualification d'une association
Exercice
Un avion est composé de plusieurs
sièges, mais dans une rangée il y a
seulement quatre sièges.

Mohamed Ali HADHRI 141


Agrégation
Type particulier d’association dans
laquelle :
 Classe agrégat (composé), classes agrégée
(composant)
 Entre les deux, il existe une relation de type
« est composé de »
Agrégat Agrégée

Mohamed Ali HADHRI 142


Agrégation
Les parties (les composants) sont séparables
de L’agrégat (le tout)
La suppression d’une équipe n’implique pas la
suppression des personnes qui la composent

Mohamed Ali HADHRI 143


Agrégation
Titre

Un agrégat (composé) peut être multiple.


0..1

1..1

Destinataire E-Mail Fichier


1..* 0..*
* 0..*

Ici, on exprime qu'un fichier peut être attaché à un email (ou a


plusieurs, ou même à aucun) et qu'un email peut (ou non)
1..1
attacher (contenir une copie) une ou plusieurs fichiers.

0..1

Texte

Mohamed Ali HADHRI 144


Composition
La composition est un cas particulier d’une
agrégation dans laquelle la vie des composants
(élément) est liée à celle de l’agrégat (composé) : si
l’agrégat est détruit (ou déplacé), ses composants le
sont aussi.
D’un autre côté, et contrairement à l’agrégation, une
instance de composant ne peut être liée qu’a un seul
agrégat.
La composition se représente par un losange noir
(plein).

Mohamed Ali HADHRI 145


Composition

 la suppression d’un objet agrégat entraîne la


suppression des objets agrégés
Mohamed Ali HADHRI 146
Composition
Un document est composé de plusieurs
paragraphes, qui, à son tour, est composé de
plusieurs phrases
Remarquer la propagation des opérations
(copie, suppression,…)

Mohamed Ali HADHRI 147


Généralisation / Spécialisation et
héritage
La généralisation est la relation entre une
classe et une ou plusieurs de ses versions
raffinées.
On appelle la classe dont on tire les précisions
la super-classe et les autres classes les sous-
classes.
C’est une relation de type « est un (is a) » ou
« est une sorte de ».
La notation utilisée pour la généralisation est
le triangle
Mohamed Ali HADHRI 148
Généralisation / Spécialisation et héritage
 généraliser = mettre en facteur des classes  « super-classe »
 spécialiser = décrire de nouveaux détails  « sous-classes »

 comparable à une association de type « est un, is a,


kind of »
 une sous-classe hérite des attributs et opérations de sa
Mohamed Ali HADHRI 149
super-classe (classe mère)
Généralisation / Spécialisation et
héritage

La classe spécialisée (sous-classe)


hérite les méthodes et les attributs de
la classe générale (super-classe)
peut ajouter ses propres attributs et
méthodes.
peut redéfinir le comportement d’une
méthode.

Mohamed Ali HADHRI 150


Généralisation / Spécialisation et
héritage
Compte
- N°Compte : String
- Solde : float
+ <<Constructor>> Compte ()
+ Déposer (float Somme) : void
+ Retirer (float Somme) : float
+ AvoirSolde () : String

CompteEpargne
- Taux : float
+ AvoirSolde () : String

Mohamed Ali HADHRI 151


Généralisation / Spécialisation et
héritage
Remarques
La généralisation et la spécialisation sont
deux façons pour voir la même relation, top-
down (spécialisation) ou bottom-up
(généralisation).
L'héritage est l’implémentation de la relation
de la généralisation/spécialisation.
Une classe peut hériter de plusieurs classes,
on parle alors d’un héritage multiple.

Mohamed Ali HADHRI 152


Généralisation / Spécialisation et
héritage
Personnes
- Code : int
- Nom : String
+ <<Constructor>> Personnes (int Code, String Nom)
+ getNom () : String
+ getInf () : String

Spécialisation Super classe, classe mère


Etudiants
Généralisation
- Salaire : float
+ <<Constructor>> Etudiants (int Code, String Nom, float Salaire)
+ getInf () : String
+ getSalaire () : float

Employes
Sous classes - Filiere : String

Classes filles + <<Constructor>> Employes (int Code, String Nom, String Filiere)
+ getInf () : String

Classes dérivées + getFiliere ()


Mohamed Ali HADHRI : String
153
Généralisation / Spécialisation

 une classe peut hériter de plusieurs super-classes


= héritage multiple

Mohamed Ali HADHRI 154


Généralisation / Spécialisation
 polymorphisme = opérations de même nom,
polymorphisme = comportement spécifique

Mohamed Ali HADHRI 155


Contraintes sur les associations
Concepts avancés des associations
Permettent d’imposer des règles à respecter
lors du passage à l’implémentation
Il est possible d’attribuer toutes sortes de
contraintes à une association
Les contraintes sont représentées entre
accolades et peuvent être exprimées dans
n’importe quel langage (y compris OCL)

Mohamed Ali HADHRI 156


Contraintes sur les associations
Les contraintes (prédéfinies) souvent
utilisées :
 {ordonné}
 {sous ensemble}
 {xor}
 {addOnly}
 {frozen}

Mohamed Ali HADHRI 157


Contraintes sur les associations
contrainte {ordonné}

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

Mohamed Ali HADHRI 158


Contraintes sur les associations
contrainte {sous-ensemble}

Indique qu’une collection est incluse dans une


autre
Nécessite la présence d’au moins deux
relations
Parent d’élève
Ecole Personnes
1..*
{sous-ensemble}
Délégué

1..*

Les personnes qui jouent le rôle de délégué font partie des


personnes qui jouent le rôle de parents d’élèves

Mohamed Ali HADHRI 159


Contraintes sur les associations
contrainte {xor}
Indique que parmi un groupe d’associations, une seule
est valide à la fois
Un PC Portable est alimenté soit à partir d’une
batterie, soit à partir d’un secteur Batterie

PC Portabl e 1
{xor}

1 Secteur

Mohamed Ali HADHRI 160


Contraintes sur les associations
contrainte {addOnly}

La contrainte prédéfinie {addOnly} autorise


l’ajout de nouveaux objets, mais pas leur
suppression ni leur mise à jour.

Personne Liste
1..*
1

0..*
{addOnly}

Enfants

Mohamed Ali HADHRI 161


Contraintes sur les associations
contrainte {frozen}

La contrainte prédéfinie {frozen} interdit l’ajout,


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

Personne
{frozen} 0..*
enfant
2
parent

Mohamed Ali HADHRI 162


Contraintes sur les associations
Exercices

Modéliser sous forme de diagrammes de classes :


1. Le président d’un comité doit être membre du
comité
2. Une personne qui soumit un article à un
journal ne peut pas évaluer son propre article

Mohamed Ali HADHRI 163


Contraintes sur les associations
Exercices

Modéliser sous forme de diagrammes de classes :


1. Un véhicule est composé d’au moins 2 roues.
Le nombre de roues d’un véhicule ne peut
pas varier
2. Les employés de l’hôtel n’ont pas le droit de
prendre une chambre dans le même hôtel.

Mohamed Ali HADHRI 164


Contraintes sur les associations
Exercices

Une personne
Est née dans un pays (ce pays ne peut
être modifiée)
A visité un certain nombre de pays,
dans un ordre donné, et que le nombre
de pays visités ne peut que croître
Aimerait encore visiter toute une liste
de pays, et que cette liste est
ordonnée. Mohamed Ali HADHRI 165
Exemple de diagramme de classes
(Distributeur Automatique de Banque : DAB)

Mohamed Ali HADHRI 166


Diagramme d’objets
Représente les objets (instances de
classes) et les liens (instances de
relations) à un instant donné
Peut être utilisé pour :
 Illustrer le modèle de classes en montrant
un exemple qui explique le modèle
 Préciser certains aspects du système
 Exprimer une exception en modélisant des
cas particuliers
 Etc.
Mohamed Ali HADHRI 167
Diagramme d’objets
Le nom d’un objet est souligné
 Nom : Classe
 Nom
 :Classe

Mohamed Ali HADHRI 168


Diagramme d’objets
Exemple :
Une entreprise emploie au moins deux
personnes
Une personne travaille dans au plus
deux entreprises

Mohamed Ali HADHRI 169


Diagramme d’objets
Exemple
Entreprise
:Entreprise e1:Entreprise

0..2

2..*

Personne
:Personne p1:Personne p2:Personne p3:Personne p4:Personne

Mohamed Ali HADHRI 170


Etapes pour établir un diagramme
A partir d’une description du système :

1. Identifier un premier ensemble de classes candidates


2. Identifier les associations et les attributs
3. Identifier les généralisations
4. Lister les traitements, choisir les opérations
5. Vérifier le modèle obtenu
a. Supprimer les transitivités
b. S’assurer que le schéma répond à la demande

6. Itérer jusqu’à satisfaction …

Mohamed Ali HADHRI 171

Vous aimerez peut-être aussi