UML Part 4- diagrammres de classes et d'objets mansouri
1. Université Hassan II de Casablanca
ENSET de Mohammedia
Département Mathématiques et Informatique
COURS
INGENIERIE SYSTEMES
4ème Partie :
Diagrammes de classes &
diagrammes d’objets
Professeur :
M. Khalifa MANSOURI
3. Introduction
09/10/2017 3
Les éléments courants de la modélisation avec UML
C
C
C2
C
C1
Symbole :
ensemble de symboles standards
Syntaxe :
méthode pour combiner les
symboles
Sens :
donné à la combinaison des
symboles
C1 envois message à C2
4. Introduction
09/10/2017 4
Processus de modélisation
Expressivité : Qu'est-ce
que le langage peut dire
Méthodologie :
procédures à suivre
Directives : Suggestions
pour établir un modèle
OK : C1 envois messages à C2
1. Modéliser toutes les classes
2. Modéliser toutes les relations
3. Modéliser la généralisation
Modéliser les classes avec un
nombre de relations équilibré
6. Introduction
09/10/2017 6
• Structure permettant d’organiser et de stocker les données dans des matrices
appelées « tables »
• Les tables stockent les données sous la forme des types primitifs (nombre,
char, texte, booléen, date,…)
Qu’est ce qu’une BDDR ?
BDDR : Base De Données Relationnelle :
• Un objet est :
• Un état : Structure
• Des comportements : méthodes
• Une identité : référence
Qu’est ce qu’un objet ?
7. Introduction
09/10/2017 7
• Une classe est un regroupement d’objets similaires
• Une classe représente une vue statique du système
• Une classe sans instance est :
• Une classe abstraite : contenant des méthodes abstraites (virtuelles ou
non définies) (cf méthode abstraite)
• Une interface : ne contenant pas des attributs et toutes les méthodes sont
abstraites
• Le nom de la classe doit commencer par Majuscule. Et on peut ajouter d’autres
informations supplémentaires (nom auteur, date…)
Qu’est ce qu’une classe d’objets ?
8. Introduction
09/10/2017 8
• Une classe passive :
• Ces instances sauvegardent les données et offrent des services aux autres
classes (données partagés entre les objets des autres classes).
• Elle assure un accès à leurs objets d’une manière concurrentielle et non
séquentielle.
• Pour assurer l’intégrité de leurs données, les objets passifs peuvent forcer
un accès séquentiel
• Elles ne peuvent pas commencer le flux d’exécution
• Une classe est passive par défaut.
Classe active et classe passive :
• Une classe active :
• Ces instances ont leur propres adressages et peuvent eux même contrôler
le flux d’exécution.
• Les objets actifs sont séquentiels.
• Elles peuvent commencer le flux d’exécution
• Graphiquement, une classe active a un cadre plus gras.
9. Caractéristiques d’une classe
09/10/2017 9
Représentation graphique d’une classe
Nom 1
Attr 1 : type 1
Attr2 : type 2
….
Metode1 (p1:t1,..)
Methode2()
….
Nom 2
Attr1
Attr2
….
Nom 3
(1) (2) (3)
• Un compartiment des responsabilités (op) : énumérer l'ensemble de tâches
devant être assurées par la classe, mais pour lesquelles on ne dispose pas
encore assez d'informations.
• Un compartiment des exceptions (op) : énumérer les situations
exceptionnelles devant être gérées par la classe.
Extensions possibles :
Remarque : On peut ne pas visualiser les attributs
et/ou les opérations, afin de ne pas alourdir
inutilement le schéma.
10. Caractéristiques d’une classe
09/10/2017 10
Nom et visibilité d’une classe
• Visibilité :
Public ou + : tout élément qui peut voir la classe courante peut également
voir l’élément indiqué.
Protected ou # : seul un élément situé dans la classe courante ou un de ses
descendants peut voir l’élément indiqué.
Private ou – : seul un élément situé dans la classe courante peut voir
l’élément.
Package ou ~ ou rien : seul un élément déclaré dans le même paquetage
peut voir l’élément.
• Nom de la classe
[ <Nom_du_paquetage_1>:: ... ::<Nom_du_paquetage_N> ]
<Nom_de_la_classe> [ { [abstract], [<auteur>], [<date>], ... } ]
Exemple : Pack1::Class1 {abstract, Ali}
11. Caractéristiques d’une classe
09/10/2017 11
Stéréotype d’une classe
• Le stéréotype est le rôle principal d’une classe
• On définit principalement 4 stéréotypes :
• Entité
• Contrôleur
• Interface
• Acteur
12. Composants d’une classe
09/10/2017 12
• Format de description d’un attribut :
[Visibilité] Nom [Multiplicité] [":" Type Attribut] ["=" Val] [Propriétés]
• Visibilité : + (public), - (privé), # (protégé), (package)
• Multiplicité : "[" nbElt "]" ou "[" Min .. Max "] » représente le nombre d’élément
qu’un attribut peut contenir
• Type Attribut : type primitif (Entier, Chaîne, ...) ou classe
• Val : valeur initiale à la création de l’objet
• Propriétés : {variable}, {ajoutUniquement}, {gelé (final en java ou const en c++)}...
• Attributs de classe (statiques), partagé entre tous les objets. Graphiquement soulignés
• Attributs dérivés précédés de "/"
Représentation UML des attributs
13. Composants d’une classe
09/10/2017 13
Représentation UML des attributs
# onOff : Bouton
-x : Réel
coord[3] : Réel
+ pi : réel = 3.14 {gelé}
inscrits[2..8] : Personne
/age : Entier
Exemple
14. Composants d’une classe
09/10/2017 14
• Une opération (même nom et mêmes types de paramètres) doit être unique.
• Quand le nom d'une opération apparaît plusieurs fois avec des paramètres
différents, on dit que l'opération est surchargée.
• Il est impossible que deux opérations ne se distinguent que par leur valeur
retournée.
• Opérations abstraites/virtuelles (non implémentées) en italique
• Opérations de classe (statiques) soulignées
Représentation UML des méthodes
15. Composants d’une classe
09/10/2017 15
• Format de description d’une méthode :
<visibilité><nom_méthode>([<paramètre_1>,...,<paramètre_N>]):[<type_renvoyé>] [{<propriétés>}]
<paramètre> est décrit comme peut être suit :
• [<direction>] <nom_paramètre>:<type> ['['<multiplicité>']'] [=<valeur_par_défaut>]
• La direction peut prendre l'une des valeurs suivantes :
• in : Utilisé en entrée. C'est le comportement par défaut.
• out : Utilisée en sortie.
• inout : utilisé en entrée et en sortie
• changeItem([in] key : string, [out] newItem : Item) : int
• <propriétés> : correspondent à des contraintes ou à des informations complémentaires
comme les exceptions, les préconditions, les postconditions ou encore l'indication qu'une
méthode est abstraite (mot-clef abstract), etc.
Représentation UML des méthodes
16. Composants d’une classe
09/10/2017 16
• Méthode abstraite :
• On connaît sa déclaration, mais pas sa définition.
• Classe abstraite :
• Elle définit au moins une méthode abstraite ou la classe parent contient une
méthode abstraite non encore réalisée.
• On ne peut instancier une classe abstraite : elle est vouée à se spécialiser
• Une classe abstraite peut très bien contenir des méthodes concrètes.
• Une classe abstraite pure ne comporte que des méthodes abstraites.
• En programmation orientée objet, une telle classe est appelée une interface.
• Pour indiquer qu'une classe est abstraite, il faut ajouter {abstract} ou
<<abstract>>
Méthodes abstraites et classe abstraites
17. Les types de classe
09/10/2017 17
• Type particulier de classes
• Classe où toutes les méthodes sont abstraites
• Stéréotype « interface »
• Permet de regrouper un ensemble de propriétés et d’opérations assurant un
service cohérent
• Doit être réalisée (implémentée) par au moins une classe et peut l’être par
plusieurs
• Stéréotype « realize»
• Une classe peut dépendre d’une interface
• Stéréotype « use »
Interface
18. Diagramme de classe
09/10/2017 18
Exemple Introductif :
Produit
numSerie: String
intitule: String
pu:réel
afficher()
Client
numMat: String
nom: String
tel:String
commander()
Facture
numFact: String
date: Date
Total:réel
Calcul_total()
19. Diagramme d’objet
09/10/2017 19
Représentation graphique d’un diagramme d’objet
En exécution
Produit
numSerie: String
intitule: String
pu:réel
afficher()
Sony p:Produit
numSerie= "r4432 "
Intitule= " sony "
Pu=5400 DH
Dell 410:Produit
numSerie= « d410"
Intitule= " dell lat"
Pu=3400 DH
:Produit
numSerie= « HP10"
Intitule= " hp pav"
Pu=4670 DH
20. Diagramme de classes et diagramme d’objet
09/10/2017 20
Définitions :
• Un diagramme de classes représente la structure du système sous la
forme de classes et de relations entre ces classes
• Un diagramme d’objets illustre les objets et les liens qui les unissent
Diagramme de classes Diagramme d’objets
Relation
Classe
*
*
Lien
Objet
*
*
Relie Relie
Instance de
Instance de
21. Diagramme de classes et diagramme d’objet
09/10/2017 21
Définitions :
Un DC Permet de donner une vue statique du système en
terme de :
• Classes d'objets
• Relations entre classes
o Associations
o agrégation/composition
o 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.
22. Diagramme de classes et diagramme d’objet
09/10/2017 22
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
un événement : la commande n° 2004-125
…
Remarques :
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, …
23. Diagramme de classes et diagramme d’objet
09/10/2017 23
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 avoir une valeur atomique.
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
directes de la classe.
• Nom d’attribut
• Type de l’attribut
• Valeur initiale (facultative)
24. Diagramme de classes et diagramme d’objet
09/10/2017 24
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
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,
/surface : réel.
Rectangles
-
-
-
Largeur
Longueur
/Surface
: float
: float
: float
= 10
25. Diagramme de classes et diagramme d’objet
09/10/2017 25
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
Opérations d'instances
Opérations de classes
Window
-
-
-
-
taille
visibilité
taille_defaut
taille_max
: Rectangle
: boolean
: Rectangle
: Rectangle
= (100,100)
= true
+
+
+
+
+
<<Constructor>> Window ()
afficher ()
cacher ()
getTaille_max ()
getTaille_defaut ()
: void
: void
: Rectangle
: Rectangle
Attributs d'instances
Attributs de classes
26. Diagramme de classes et diagramme d’objet
09/10/2017 26
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é ».
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
27. Diagramme de classes et diagramme d’objet
09/10/2017 27
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é
Exemples d'opérations :
Compte
-
-
-
N°Compte
Solde
Client
: String
: float
: Personne
+
+
+
+
<<Constructor>> Compte ()
Deposer (float somme)
Retirer (float somme)
AvoirSolde ()
: void
: float
: String
28. Les relations entre les classes
09/10/2017 28
Dépendance
Association
Composition Agregation
• Une relation est une template pour une connection entre des
instances.
• Hiérarchie des relations:
• Dépendance : indicate runtime relation
between classes
• Associations : relations cohérentes
• Composition: relations de tout et partie
29. Les relations entre les classes
09/10/2017 29
• Une association est une relation entre deux ou plusieurs classes au même
niveau hiérarchique .
• Une relation entre deux classes est dite binaire
• Une relation entre plusieurs classes est dites n-aire
• Une association a un nom qui peut être vide.
• Une association indique qu'il peut y avoir des liens entre des instances des
classes associées (les objets).
• Une association peut avoir des terminaisons d’association
• Le détenant de la terminaison d’association existe dans l’autre extrémité
• L’association a un sens de lecture
Les associations :
Una association est représentée par une ligne rectiligne :
30. Les relations entre les classes
09/10/2017 30
Les associations :
Remarques :
une association fonctionne dans les 2 sens (bidirectionnelle)
termes associés : Nom, Sens de lecture, degré (arité), Multiplicité, Rôle, navigabilité et le
qualificateur
Nom et sens de lecture :
Décrit la nature (signification) de l’association
Montre la direction de lecture de l’association
Société Personne Voiture
Exemple : une société emploie des personnes. Chaque personne possède une voiture.
31. Les relations entre les classes
09/10/2017 31
Nommage des associations :
• Nom de l’association en italique au milieu de la ligne
• On note en général les association par une forme verbale, soit voie active,
soit voie passive
Classe A Classe B
Société Personne Voiture
Nom
Travail pour
Propriété de
Possède
32. Les relations entre les classes
09/10/2017 32
Nommage des rôles :
• Décrit le rôle d’une classe dans une association
• Toute association binaire possède 2 rôles
• Un rôle définit la manière dont une classe intervient dans une relation
• Le nommage des associations et le nommage des rôles ne sont pas exclusifs
l’un de l’autre
Société Personne
Travail pour
employeur employé
• 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
0..4
femme
0..1
mari
PersonnePilote
Passager
Avion
Personne
33. Les relations entre les classes
09/10/2017 33
Multiplicité des associations:
La multiplicité est une information portée par le rôle, qui quantifie le nombre de fois où
un objet participe à une instance de relation
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, *
Les différentes possibilités pour une
multiplicité sont :
• 1 : un et un seul
• 0 .. 1 : zéro ou un
• M .. N : de M à N (entiers naturels)
• * : de zéro à plusieurs
• 0 .. * : de zéro à plusieurs
• 1 .. * : de un à plusieurs
• N : exactement N (entier naturel)
• 1 : Chaque personne travaille pour une et une seule société
• 0 .. * : Une société emploie de zéro à plusieurs personnes
Société PersonneTravail pour
employeur
employé1
0 .. *
Exemple général
Exemple concret
34. Les relations entre les classes
09/10/2017 34
Deux manières pour représenter une association :
Dans la première représentation, l'association apparaît clairement et constitue une entité
distincte.
Dans la seconde, l'association se manifeste par la présence de deux attributs dans
chacune des classes en relation. C'est en fait la manière dont une association est
généralement implémentée dans un langage objet quelconque.
Dans ce cas, on déclare un attribut de type Entreprise dans la classe Personne et un tableau
de Personne comme attribut dans la classe Entreprise.
35. Les relations entre les classes
09/10/2017 35
Les association :
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
36. Les relations entre les classes
09/10/2017 36
Les associations
Classe 1
Bloc attributs
classe1
Bloc méthodes
classe1
Classe 2
Bloc attributs
classe2
Bloc méthodes
classe2
Nom assoc
mult1
Role1 Role2
mult2
Nombre d’instances de C1 pouvant être liées à une instance de C2
(ex. : 1, 0..1, *, 1..*, 3, 5..10, ...)
nom et sens de
l’association
Rôle de Classe1
dans l’association
Personne
nom: String
prenom: String
CalculeSalaire():float
Entreprise
raison_sociale: String
num_patente:String
calculeChiffreAfaire():float
Travaille pour
* 1
Employé Employeur
Exemple
Association binaire :
Une association
binaire est
matérialisée par
un trait plein
entre les deux
classes
associées
37. Les relations entre les classes
09/10/2017 37
Les associations
Classe 1 Classe 2
Classe 3
Client Magasin
Produit
*
*
*
*
**
Exemples :
Association n-aire
Une association n-aire
lie plus de deux classes.
Les relations entre les
classes peuvent être
reliées par un losange.
38. Les relations entre les classes
09/10/2017 38
Les associations
Groupe enseignant
Classe
*
*
*
Exemples : Associations ternaires
enseignant
Classe
Groupe
*
*
*
1
1
1
< == > Cours
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,
…
…
39. Les relations entre les classes
09/10/2017 39
Classes d’association :
Parfois, une association peut/doit être porteuse d’information : posséder des propriétés
= classe-association
Par exemple, l'association Emploie entre une société et une personne possède comme
propriétés le salaire et la date d'embauche.
En effet, ces deux propriétés n'appartiennent ni à la société, qui peut employer plusieurs
personnes, ni aux personnes, qui peuvent avoir plusieurs emplois.
Il s'agit donc bien de propriétés de l'association Emploie.
Une classe-association possède les caractéristiques des associations et des classes : elle
se connecte à deux ou plusieurs classes et possède également des attributs et des
opérations.
Une classe-association est caractérisée par un
trait discontinu entre la classe et l'association
qu'elle représente.
40. Les relations entre les classes
09/10/2017 40
• Les propriétés n’appartiennent à aucune classe participant à l’association
• L’association ne peut pas posséder ces propriétés : limite
Introduction du concept d’association pour prendre en compte cette limite
Une classe association possède des propriétés utiles pour compléter la description de
l’association entre les classes participantes à cette association
Classe d’association
Exemple :
Classe- association n-aire
enseignant
Classe
Groupe
*
*
*
1
1
1
< == >
NbHeure: int
Date: Date
Cours
Groupe enseignant
Classe
*
*
*
NbHeure: int
Date: Date
Cours
41. Les relations entre les classes
09/10/2017 41
Association réflexive
Il est possible de définir une hiérarchie en utilisant une association réflexive.
Exemple : un employé peut avoir un autre employé comme supérieur hiérarchique.
L’employé peut être supérieur hiérarchique de plusieurs employés.
Employé
subordonnées
0..*
0..1
Sup hiérarchique
Classe association réflexive (exemple Général)
Société Personne
Emploi
dateEmbauche: Date
Slaire: float
* *
Supérieure de
0..1
*
42. Les relations entre les classes
09/10/2017 42
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 par un label entre accolades
Contrainte d’association : porte sur une relation ou sur un groupe de relations
(notée {contrainte })
Par exemple, placée sur un rôle, la contrainte {ordonnée} définit une relation
d’ordre entre les objets de la collection (lesComptes) qui sont liés à une personne
Les contraintes (prédéfinies) souvent utilisées :
• {ordonné}
• {sous ensemble}
• {xor}
43. Les relations entre les classes
09/10/2017 43
Contraintes sur les associations contrainte {ordonné} :
Indique que les objets seront ordonnés à chaque opération de création, modification,
suppression, …
Personne Comptepossède
propriétaire
{ordonnée}1
0 .. N
Exemples :
1 0..*
{Ordonné}
Personne Compte
Les comptes d’une personne sont ordonnés
44. Les relations entre les classes
09/10/2017 44
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
Exemple :
1..*
1..*
{sous-ensemble}
Ecole Personnes
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
Parent d’élève
Délégué
45. Les relations entre les classes
09/10/2017 45
Contraintes sur les associations contrainte {xor} :
• Indique que parmi un groupe d’associations, une seule est valide à la fois
Exemple :
1
{xor}
1
1
1
PC Portable
Batterie
Secteur
Un PC Portable est alimenté soit à partir
d’une batterie, soit à partir d’un secteur
46. Les relations entre les classes
09/10/2017 46
Restriction des associations:
Une restriction réduit le nombre d’instances qui participent à une association :
:A
:B
:B
:B
:B
:B
:B :B
:B
:B
:B
:B
:B
:B
Sans clé
Avec clé
47. Les relations entre les classes
09/10/2017 47
Restriction des associations:
La restriction (dite qualification en UML) d’une association consiste à sélectionner un
sous-ensemble d’objets parmi l’ensemble des objets qui participent à une association
La qualification d’une association permet de restreindre la multiplicité d’une association.
Elle se représente par un rectangle placé au niveau de la classe source du qualificatif.
Elle est réalisée au moyen d’une clé, ensemble d’attributs particuliers. La clé appartient à
l’association et non aux classes associées
Chaque instance de la classe A accompagnée de la valeur de la clé, identifie un sous
ensemble des instances de B qui participent à l’association
Classe A Classe B
Clé
Université Etudiantville
1 *
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
Banque
Compte
NCompte
1 1
48. Les relations entre les classes
09/10/2017 48
• Elle permet de restreindre la porté de l’association en un ou une liste d’attributs de l’une
de ses extrémité.
• Ces attributs sont appelés un qualificatif
• Un qualificatif agit toujours sur une association dont la multiplicité est plusieurs
• Le qualificatif limite la multiplicité des objets de la destination répondant aux attributs du
qualificatif.
Restriction des associations : Qualification
Exemple
Banque
Personne
FeuilleExcel
Cellule
Banque
Personne
#Compte
FeuilleExcel
Cellule
col: colonne
Lin:Ligne
*
*
*
*
*
0..2
1
1
Associations qualifiés
Associations
Le couple {Banque,Compte} est associée à 0 ou 2 personnes
49. Les relations entre les classes
09/10/2017 49
• La navigabilité d’une association c’est la capacité d’une instance d’une classe C1 de
participer aux instances d’une classe C2 et vice versa.
La navigabilité d’une association entre les classes
Par défaut, la navigabilité est dans les deux sens
C1 C2
Le sens de la navigabilité est spécifié
C1 C2X Commande ProduitX
Classe Etudiant
* *
* *
La terminaison du côté de C1 n’est pas navigable X
X
Signifient la
même chose
Une association est par défaut bidirectionnelle.
Cependant, il peut être utile de se limiter à une
seule direction association navigable
1..*
1
Commandes Clients
50. Les relations entre les classes
09/10/2017 50
La navigabilité : Exemples
Etudiant Classe
* *
cne: String
Nom:String
classe: Classe
Num: Int
Capacité: int
liste_et:Etudiant[]
cne: String
Nom:String
classe: Classe
Num: Int
Capacité: int
liste_et:Etudiant[]
Quel est le problème de cette relation?
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 :
1..*
1
Commandes Clients
Implémentation : la classe « commandes » doit avoir un champ faisant référence à la
classe client
51. Les relations entre les classes
09/10/2017 51
Association particulière : Agrégation
Définit une relation hiérarchique entre les entités
Définit la relation : « se compose de » et modélise la notion de « possession » ou de «
tout et partie »
Une agrégation est une association à fort couplage
C’est est une association non symétrique : l’une des extrémités joue un rôle
prédominant par rapport à l’autre
Elle se justifie dans les cas suivants :
• Une classe B « fait partie » intégrante d’une classe A
• Une action sur la classe A implique une action sur la classe B
• Les objets de la classe B sont subordonnés aux objets de la classe A
La présence d’une agrégation n’implique pas obligatoirement tous ces critères
Agrégat A Agrégé B
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
Exemples :
52. Les relations entre les classes
09/10/2017 52
Association particulière : 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
1..*
* 0..*
0..*
1..1
0..1
1..1
0..1
Destinataire Fichier
Titre
Texte
E-Mail
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)
attacher (contenir une copie) une ou plusieurs fichiers.
Un agrégat (composé) peut être multiple.
53. Les relations entre les classes
09/10/2017 53
Agrégation
L’agrégation peut être multiple comme une association classique :
• Une chambre est formée par un ensemble de murs
• Les murs font partie de la chambre
• Un mur peut être partagé par plusieurs chambres
Chambre Mur
1..*
*
Agrégation : Exemples
Polygone Point
Pays Région Site
3..n
1..n1..n
*
1 1
(1)
(2)
Cercle
1 *
54. Les relations entre les classes
09/10/2017 54
Agrégation particulière : Composition
La composition est une forme particulière d’agrégation
C’est une agrégation avec un couplage plus fort
• Composants non partageables
• Destruction composite implique destruction composants
Le composant est « physiquement » contenu dans le composite
La composition implique une contrainte sur la valeur de la multiplicité du coté de
l’agrégat : (0 ou 1)
La composition se représente par un losange noir (plein).
Composite Composant
0..1
*
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 :
Un objet composant ne peut être que dans un seul objet composite
Un objet composant n’existe pas sans son objet composite
55. Les relations entre les classes
09/10/2017 55
Composition
Exemples : Voiture Moteur
Roue
Livre Chapitre Section
1
1..5
1..n1..n
1
1
1 1
(1)
(2)
Une voiture se compose d’un moteur
Le moteur se compose d’un cylindre et
d’un carburateur
Voiture Moteur
1
Cylindre Carburateur
(3)
56. Les relations entre les classes
09/10/2017 56
Composition
Exemple :
Agrégat
Agrégés
la suppression d’un objet agrégat entraîne la suppression des
objets agrégés
1..1
1..*
1..1
1..*
1
1..*
Commune
Mairie Conseil municipal Sevice
Agrégat ne peut pas être multiple
57. Les relations entre les classes
09/10/2017 57
Association, agrégation, composition
Association
Agrégation
Composition
58. Les relations entre les classes
09/10/2017 58
Généralisation, Spécialisation
La relation de généralisation signifie
• est un(e)
• ou est une sorte de
C’est la notion d’héritage, elle modélise la relation d’héritage
Elle représente des relations parents / enfants
Généralisation (classe, classe) ou (classe, interface)
La classe fille comporte des informations supplémentaires (attributs, opérations,
associations)
Cette relation est modélisée par une flèche pointant sur la classe mère (triangle)
C’est une 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.
Animal
Chien Chat
Classe mère
Sous classes
Généralisation
Spécialisation
59. Les relations entre les classes
09/10/2017 59
Généralisation, Spécialisation
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)
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, mais pas des attributs
60. Les relations entre les classes
09/10/2017 60
Généralisation, Spécialisation
Compte
-
-
N°Compte
Solde
: String
: float
+
+
+
+
<<Constructor>> Compte ()
Déposer (float Somme)
Retirer (float Somme)
AvoirSolde ()
: void
: float
: String
CompteEpargne
- Taux : float
+ AvoirSolde () : String
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.
Exemple :
61. Les relations entre les classes
09/10/2017 61
Généralisation, Spécialisation
mah.abdellah@gmail.com
Spécialisation
Généralisation
Super classe, classe mère
Sous classes
Classes filles
Classes dérivées
Personnes
-
-
Code
Nom
: int
: String
+
+
+
<<Constructor>> Personnes (int Code, String Nom)
getNom ()
getInf ()
: String
: String
Etudiants
- Salaire : float
+
+
+
<<Constructor>> Etudiants (int Code, String Nom, float Salaire)
getInf ()
getSalaire ()
: String
: float
Employes
- Filiere : String
+
+
+
<<Constructor>> Employes (int Code, String Nom, String Filiere)
getInf ()
getFiliere ()
: String
: String
Exemple :
63. Les relations entre les classes
09/10/2017 63
Héritage multiple
Une classe peut hériter de plusieurs super-classes = héritage multiple
Certains langage de programmation orientés objet comme C++ supporte l’héritage
multiple. Ce n’est pas le cas de java qui ne le supporte pas.
Vehicule
Terrestre Marin Aérien
TapisVolant
Tapis
La classe TapisVolant dérive des deux classe Tapis et Aérien
64. Les relations entre les classes
09/10/2017 64
Généralisation, Spécialisation
polymorphisme = opérations de même nom mais comportement spécifique
Exemple :
65. Les relations entre les classes
09/10/2017 65
Contraintes de généralisation
Une classe peut être spécialisée selon plusieurs critères
Certaines contraintes peuvent être posées sur les relations de généralisation
Par défaut, la généralisation symbolise une décomposition exclusive
Vehicule
Terrestre Marin A voile
{Milieu}
AMoteur
{Motorisation}
66. Les relations entre les classes
09/10/2017 66
Contraintes de généralisation
La contrainte {Complète} indique que la généralisation est terminée : tout ajout de sous-
classe est alors impossible
à l’inverse, la contrainte {Incomplète} indique une généralisation extensible
Compte
CompteCourant CompteEpargne ComptePayant
{incomplète}
67. Les relations entre les classes
09/10/2017 67
Relation de dépendance
• La dépendance établit une relation d’utilisation entre 2 entités d’un même diagramme.
• Les dépendances n’ont pas de cardinalité
• La plupart du temps il s’agit d’une dépendance d’utilisation :
• Argument d’une méthode par exemple
• On parle alors de « relation d’utilisation »
• Cela permet d’identifier implications possibles des modifications à apporter dans une
entité
• Changement du comportement d’une des classes par exemple
68. Les relations entre les classes
09/10/2017 68
Relation de dépendance
• Une dépendance est une relation unidirectionnelle exprimant une dépendance
sémantique entre des éléments du modèle.
• Elle est représentée par un trait discontinu orienté.
• Elle indique que la modification de la cible peut impliquer une modification de la source.
• La dépendance est souvent stéréotypée pour mieux expliciter le lien sémantique entre
les éléments du modèle.
• On utilise souvent une dépendance quand une classe en utilise une autre comme
argument dans la signature d'une opération. Par exemple, le diagramme de la figure ci-
dessous montre que la classe Confrontation utilise la classe Stratégie car la
classe Confrontation possède une méthode confronter dont deux paramètre sont du
type Stratégie. Si la classe Stratégie, notamment son interface, change, alors des
modifications devront également être apportées à la classe Confrontation.
69. Diagrammes d’Objets
09/10/2017 69
Diagrammes d’Objets : Définitions
Un objet est instance d’une classe.
Chaque objet est défini par son état et son comportement.
L’état représente l’ensemble des variables qui le caractérisent
Le comportement définit les opérations que cet objet peut effectuer
Un objet possède également une identité
Le diagramme d’objet représente les liens structurel entre instances de classes
Il Facilite la compréhension de structures complexes
Trois représentations possibles des instances :
Référence Objet
État
comportement
RefObjet:Classe
État
comportement
:Classe
État
comportement
71. Diagrammes d’Objets
09/10/2017 71
Diagrammes d’Objets : Liens entre les objets
• Diagramme de classes Diagramme d’objets
Prof
Salle
Etudiant
Cours
P1:Prof
Nom=Mr
S3:Salle
num=3
:Etudiant
m:Cours
Nom=Maths
:Etudiant
:Etudiant
:Etudiant
:Etudiant
Nom=x
72. Diagrammes d’Objets
09/10/2017 72
Diagrammes d’Objets : Liens entre les objets
Les objets composés de sous objets peuvent être représentés comme suit:
Objet composite:Classe Composite
:Composant :Composant :Composant
Fenetre Ascenseur
2
ZoneTravail
1
f1:Fenetre
:Ascenseur :Ascenseur :ZoneTravail
73. Diagrammes d’Objets
09/10/2017 73
Diagrammes d’Objets : Structures complexes
Les diagrammes d’objets facilitent la compréhension et l’élaboration d’un diagramme de
classes :
:Bus
Num=11
Personne
Passagers
Conducteur *
1
Destination
1
:Destination
Nom=Maarif
:Personne
nom=hasan
:Personne
nom=x
:Personne
nom=x
:Personne
nom=x
:Personne
nom=x
:Personne
nom=x
conducteur
Bus
74. Diagrammes de classes et d’Objets
09/10/2017 74
Exemples :
Elaborer les diagrammes de classes et d’objets en choisissant le type de relation
appropriée pour les situations suivantes :
1. Un répertoire contient des fichiers
2. Un répertoire contient des répertoires ou des fichiers
3. Une chambre contient des murs
4. Les modems et claviers sont des périphériques d’entrée / sortie
5. Une transaction boursière est un achat ou une vente
6. Un compte bancaire peut appartenir à une personne physique ou morale
7. Un client peut passer plusieurs commandes. Chaque commande concerne
plusieurs produits avec une quantité de produit.
8. Un client peut avoir plusieurs comptes qui peuvent être soit des comptes
courants ou des comptes épargne. Chaque compte peut subir plusieurs
opérations. Il existe deux types d’opérations : opération de versement ou de
retrait
77. Diagrammes de classes et d’Objets
09/10/2017 77
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
6. Itérer jusqu’à satisfaction …
a. Supprimer les transitivités
b. S’assurer que le schéma répond à la demande
79. Diagrammes de classes et d’Objets
09/10/2017 79
Exercices :
Dessiner les diagrammes de classes et d’objets correspondant
aux situations suivantes :
1. La France est frontalière de l’Espagne. L.Algérie est frontalière du
Maroc.
2. Un polygone est constitué de points. Un point possède une abscisse
et une ordonnée.
3. Une médiathèque possède des médias, empruntables par les
abonnés de la médiathèque.
4. Un client demande une réparation. Une réparation est effectuée par
un mécanicien. Elle nécessite des compétences. Un mécanicien
possède des compétences.
5. Une galerie expose des Oeuvres, faites par des artistes, et
représentant des thèmes. Des clients, accueillis par la galerie,
achètent des oeuvres.
80. Diagrammes de classes & diagrammes d’objets
09/10/2017 80
Activité 1
Une bibliothèque compte les exemplaires des titres
suivants parmi les livres dont elle dispose : « Histoire de la
2ème guerre mondiale », « Les Aventures de Robin Hood »,
et deux exemplaires de « Ali baba».
Felix et Alain sont des utilisateurs abonnés. Alain a
emprunté «Les Aventures de Robin Hood» tandis que Felix
a emprunté deux livres: « Histoire de la 2ème guerre
mondiale » et un exemplaire de « Ali baba ».
Représenter le diagramme de classes et le diagramme
d’objets modélisant ce cas de figure.
81. Normalisation
09/10/2017 81
•Un modèle naïf peut avoir un mauvais problème de couplage:
•Les données sont liées entre elles
•Il est difficile de gérer les éléments de données individuellement
•normalisation:
•Un ensemble de stratégies de conception
•Assure la conception faiblement couplé
•Origine: base de données relationnelle
Nous ne disposons pas des clés primaires dans le diagramme de
classe
82. Normalisation
09/10/2017 82
Activité 2 (Gestion des prêts d’une bibliothèque)
numSystem: long
titre: String
auteur: String
ordre_auteur:int
categorie: String[]
num_copie:long
nom_detenteur:String
date_retour:Date
localisation:Stirng
id_cours:String
nom_cours:String
Livre
Normaliser la classe suivante
83. Equivalences
• Parfois, l'information véhiculée par une classe-association peut être
véhiculée d'une autre manière
Deux modélisations modélisant la même information.
84. Les relations entre les classes
09/10/2017 84
• Propriétaire de terminaison d’une association
• La possession de la terminaison est spécifiée par un petit cercle plein entre la
terminaison de l’association et la classe
• la présence d'un point implique que la terminaison d'association appartient à la
classe située à l'autre extrémité
• l'absence du point implique que la terminaison d'association appartient à
l'association.
• En cas d’absence de ce point, la possession est ambigüe
Les associations
Polygone Point
Défini par
1 3..*
Polygone Sommet
Terminaison d’association
85. Les relations entre les classes
09/10/2017 85
• Terminaison d’une association
• Une terminaison d’une association est une propriété
• Une propriété est une caractéristique structurelle, et constituée d’attributs et des
terminaisons d’association
• Une terminaison d’association est caractérisée par:
• Nom
• Visibilité: mentionnée à proximité de la terminaison, et plus précisément, le cas
échéant, devant le nom de la terminaison
• Multiplicité: mentionnée à proximité de la terminaison
Les associations
86. mah.abdellah@gmail.com 86
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