Cours UML DC
Cours UML DC
Cours UML DC
d’objets
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
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
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
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
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
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
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
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..*
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
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 »
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
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é}
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
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 :
73