Cours UML DC

Télécharger au format ppt, pdf ou txt
Télécharger au format ppt, pdf ou txt
Vous êtes sur la page 1sur 73

Diagrammes de classes et

d’objets

ABDERRAHIM BEN BOUNA


[email protected]
BTS DSI Lycée Hassan II Marrakech.
1
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.

2
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
…

3
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, …

4
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

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

6
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

7
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

8
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 : static

9
Concept d'attribut
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

10
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é ».

11
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
12
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é

13
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

14
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.
15
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)

16
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

17
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

18
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.

19
Encapsulation, visibilité et interface

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

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

User

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

21
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

22
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

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

24
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.

25
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’

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

27
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

28
Associations
Nom et sens de lecture
Décrit la nature (signification) de l’association
Montre la direction de lecture de l’association

29
Associations
Rôle d’une association
Décrit le rôle d’une classe dans une association

30
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
Pilote Personne Personne
Avion 0..4
femme

Passager
0..1
mari

31
Une association peut avoir des attributs = classe-association

32
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

33
 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

34
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

35
 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,
…
…

36
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

37
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

38
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 Clients
1..*
1

Implémentation : la classe commande doit avoir un


champ faisant référence à la classe client

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

40
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.

41
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

42
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.

43
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

44
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

45
Agrégation
Titre

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

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

46
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).

47
 la suppression d’un objet agrégat entraîne la suppression des objets
agrégés
48
Composition
Un document est composé de plusieurs paragraphes,
qui, à son tour, est composé de plusieurs phrases
Remarquer la propagation des opérations (copie,
suppression,…)

49
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

50
 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 super-classe
(classe mère) 51
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.

52
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

53
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.

54
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


Généralisation
Etudiants
- 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)
Classes dérivées + getInf () : String
+ getFiliere () : String
55
 une classe peut hériter de plusieurs super-classes
= héritage multiple

56
 polymorphisme = opérations de même nom, polymorphisme
= comportement spécifique

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

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

59
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

60
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

Ecole Parent d’élève 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

61
Contraintes sur les associations
contrainte {xor}
Indique que parmi un groupe d’associations, une seule
est valide à la fois
Batterie

PC Portable 1
{xor}
Un PC Portable est alimenté soit à partir
1 d’une batterie, soit à partir d’un secteur

1 Secteur

62
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

63
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

64
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

65
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.

66
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.

67
68
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.

69
Diagramme d’objets
Le nom d’un objet est souligné
Nom : Classe
Nom
:Classe

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

71
Diagramme d’objets
Exemple
Entreprise
:Entreprise e1:Entreprise

0..2

2..*

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

72
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 …

73

Vous aimerez peut-être aussi