Vous êtes sur la page 1sur 51

Diagramme des Classes

Diagramme d’Objets

Mme S. Besbes Essanaa 1


Plan du cours

Chapitre 0 : Les Systèmes d’Information

Chapitre 1 : Le Diagramme des Cas d'Utilisation

Chapitre 2 : Diagramme de Classes – Diagramme d’Objets

Chapitre 3 : Le Diagramme de Collaboration

Chapitre 4 : Le Diagramme de Séquence

Chapitre 5 : Le Diagramme d’État -Transition

Chapitre 6 : Le Diagramme d’Activités

Mme S. Besbes Essanaa 2


Classification des Diagrammes

Mme S. Besbes Essanaa 3


Objectifs du Chapitre
• Comprendre la structure statique d'un système

Statique (ce que le système est)


• diagramme de classes
• diagramme d’objets

Dynamique Fonctionnel
(comment le système évolue) (ce que le système fait)

• Modélisation des "objets métier" (business objects) à l’aide de


classes
• Élaboration du diagramme des classes (Class Diagram)

Mme S. Besbes Essanaa 4


Introduction : L'approche Objet

▪ Une classe décrit un ensemble d'objets ayant des


propriétés similaires (attributs), des comportements
communs (méthodes) et partageant les mêmes liens
avec les autres objets.

▪ Les objets informatiques sont construits à partir de la


classe : par un processus appelé instanciation. De ce fait,
tout objet est une instance d'une classe.

Mme S. Besbes Essanaa 5


Les principaux concepts du diagramme de classes
Les principaux concepts présents dans les diagrammes de classes :

▪ Les classes

▪ Les associations

▪ Les attributs

▪ Les méthodes

▪ Les généralisations

Mme S. Besbes Essanaa 6


Différentes représentations graphiques d'une Classe
Classe non documentée (3) Classe détaillée

(1) Voiture

Classe documentée
(2) Voiture
Marque Attributs
Couleur
(ici noms symboliques)
Immatriculation
+ : public
Démarrer() - : Privé
Conduire() # : Protégé
Méthodes
Arrêter()
(ici noms symboliques)

les attributs sont typés, les méthodes


sont spécifiées, et les niveaux de
protection sont renseignés (Langages de
programmation)
Mme S. Besbes Essanaa 7
Associations et Multiplicité

▪ Une association exprime les relations structurelles entre


classes : montre comment deux classes sont liées entre elles.

▪ Une association entre deux classes est représentée


graphiquement à l'aide d'un trait entre les deux classes

▪ Lire les associations dans les deux directions. Au besoin, le


sens d'une association peut-être précisé par une flèche

Mme S. Besbes Essanaa 8


Le diagramme de Classes

• De même qu'une classe décrit un ensemble d'objets,


une association décrit un ensemble de liens

• Les objets sont des instances de classes et les liens


sont des instances d'associations

• Le diagramme de classes n'exprime rien de particulier


sur les liens d'un objet particulier, mais décrit de
manière abstraite les liens potentiels entre objets

Mme S. Besbes Essanaa 9


Classes et Associations : Formalisme
Rôle

Personne Nom Entreprise


-employé emploie -employeur
Nom Raison Sociale
Prénom Activité
1..* 0..1

Sens

Classe
Multiplicité

Rôle : Une association peut être étiquetée afin de rendre explicite le rôle
joué par une classe dans une association (placé a l’extrémité de
l’association). Il décrit comment une classe voit une autre classe
au travers d’une association. 10
Mme S. Besbes Essanaa
Associations et Multiplicité

Personne Entreprise
-employé emploie -employeur
Nom Raison Sociale
Prénom Activité
1..* 0..1

Multiplicités

◆ Les multiplicités indiquent comment participent les instances


d’une classe dans l'association. C’est une caractéristique de
l’association et non des classes qu’elle relie.

◆ Il faut indiquer des multiplicités pour chacune des pattes de


l’association.
Mme S. Besbes Essanaa 11
Associations et Multiplicité
• La multiplicité : indique le nombre minimum et maximum d’instances
d'une classe (en cours) qui peuvent être mises en relation avec une seule
instance de la classe associée (côté opposée)

• Différents symboles sont utilisés pour indiquer les multiplicités à chaque


extrémité d’une association
Les valeurs de multiplicité : minimum .. maximum

Mme S. Besbes Essanaa 12


Associations et Multiplicité
Très important !!!

Pour trouver les multiplicités, il faut se poser la question suivante


et y répondre :

« Combien d’instances de cette classe (a côté de la


patte de l’association pour la quelle je cherche les
multiplicités) sont en association avec une seule
instance de l’autre classe (côté opposé) ? »

Mme S. Besbes Essanaa 13


Associations et Multiplicité
Exemple
Personne Entreprise
-employé emploie -employeur
Nom Raison Sociale
Prénom Activité
1..* 0..1

« Combien de personnes au minimum sont employées par une


entreprise donnée ? »

la réponse peut-elle être zéro ?

◆ Si oui, le minimum est 0 (une entreprise sans aucun employé !!)

◆ Si non, le minimum est 1 (une entreprise ayant au moins un employé)

Mme S. Besbes Essanaa 14


Associations et Multiplicité
Exemple
Personne Entreprise
-employé emploie -employeur
Nom Raison Sociale
Prénom Activité
1..* 0..1

« Combien de personnes au maximum sont employées par une entreprise


donnée ? »

la réponse peut-elle être 1?

◆ Si oui, le maximum est 1 (une entreprise ne peut employer au maximum


qu’un seul employé !!!)

◆ Si non, le maximum est * (une entreprise peut employer plusieurs employés)

Mme S. Besbes Essanaa 15


Associations et Multiplicité
Exemple
Personne Entreprise
-employé emploie -employeur
Nom Raison Sociale
Prénom Activité
1..* 0..1

« Combien d’entreprises au minimum, sont employeurs d’un employé


donné ? »

la réponse peut-elle être zéro ?

◆ Si oui, le minimum est 0 (des personnes au chômage sont aussi répertoriées


dans la classe Personne)

◆ Si non, le minimum est 1 (seules les personnes ayant un emploi sont


répertoriées dans la classe Personne)
Mme S. Besbes Essanaa 16
Associations et Multiplicité
Exemple
Personne Entreprise
-employé emploie -employeur
Nom Raison Sociale
Prénom Activité
1..* 0..1

« Combien d’entreprises au maximum sont employeurs d’un employé


donné ? »

la réponse peut-elle être 1?

◆ Si oui, le maximum est 1 (chaque employé est employé par une seule
entreprise)

◆ Si non, le maximum est * (un même employé peut être employé par plusieurs
entreprises a la fois)
Mme S. Besbes Essanaa 17
Attribut d’Association
Exemple : Soit le diagramme des classes suivant :

Commande Concerne Produit


NumCom 0..* 1..* Référence
DateCom Désignation
MontantCom PrixHT
QteStock

À cause d’une erreur de conception, une donnée du dictionnaire a été

oubliée : Quantité Commandée (QtéCom).

Comment réparer cette erreur ? Aidez-vous du diagramme d’objets suivant.

Mme S. Besbes Essanaa 18


Exemple : La commande numéro 10 comprend une table, un buffet et six
chaises, la commande numéro 11 comprend trois buffets

25:Produit
25
Table
10:Commande 500,000
10 20
25/10/21
1500,000 27:Produit
27
Chaise
50,000
300
11:Commande
11 29:Produit
25/10/21
2100,000
29
Buffet
700,000
8

Mme S. Besbes Essanaa 19


Exemple : La commande numéro 10 comprend une table, un buffet et six
chaises, la commande numéro 11 comprend trois buffets

La quantité commandé ne peut être placée ni dans la classe Commande, ni dans la classe
Produit ! Car :
25:Produit
▪ Pour une commande, il y 25
a plusieurs quantités Table
10:Commande 500,000
commandées : 1, 6 et 1 20
10 1
▪ Pour un produit, il y a 25/10/21
1500,000 27:Produit
plusieurs quantités
27
commandées : 3 et 1 Chaise
6
▪ Par contre, pour une 50,000
300
commande donnée et un 1
produit donné, il y a une 29:Produit
11:Commande 29
et une seule quantité Concerne
11 Buffet
commandée 25/10/21 700,000
2100,000 8
Mme S. Besbes Essanaa 3 20
Attribut d’Association
Exemple :
▪ Quantité commandée est une caractéristique du lien qui unit deux objets des
classes commande et Produit
▪ Au niveau du diagramme des classes, c’est une propriété de l’association dont
provient le lien : attribut d’association
Trait en pointillé

Commande Concerne Produit


NumCom 0..* 1..* Référence
DateCom Désignation
MontantCom QtéCom PrixHT
QteStock

QtéCom est un attribut d’ association


Mme S. Besbes Essanaa 21
Attribut d’Association

Lorsqu’un attribut ne peut être attaché à aucune des deux


classes d’une association (car il implique les deux classes en
même temps), il est appelé : Attribut d’association

L’attribut d’association est une propriété du lien entre deux objets


issus des classes liées par l’association

Mme S. Besbes Essanaa 22


Attribut d’Association
Exemple :
Personne passe Examen
0..* 0..*

Note
Attribut
d’association

▪ Une Note est associée a une personne et un examen précis.

Mme S. Besbes Essanaa 23


Attribut d’Association
Personne loue Voiture
0..* 1..*

Attribut N° de Contrat
d’association

▪ Un Numéro de contrat est associé a une personne et une voiture précises. Sa


valeur n’a de sens que pour des instances précises des classes liées par
l’association.

▪ Est-ce qu’une personne peut louer la même voiture plusieurs fois ? Oui ! Mais à
des dates différents, avec des numéro de contrat différents

Mme S. Besbes Essanaa 24


Association n-aire

Date

Personne loue Voiture


1..1 *

N° de Contrat

Mme S. Besbes Essanaa 25


Association n-aire
▪ L’association n-aire est une association portant sur 3 classes ou plus

▪ Chaque instance de l’association est un n-tuple de valeurs des

classes respectives (une instance et une seule de chacune des classes qui
participent à l’association)
Salle
lieu 1
Comment trouver les multiplicités
Cours
des associations ternaires ? Professeur 1 Elève
1..*

« Combien de professeurs sont associés à


une salle donnée et à un élève donné ? » Heure de début
(à un créneau horaire donné !) Heure de fin

Mme S. Besbes Essanaa 26


Approches de Généralisation
Les hiérarchies de classes, ou classifications, permettent de gérer la
complexité en ordonnant les objets au sein d’arborescences de
classes d’abstraction croissante

▪ Approche Bottom-Up : prendre des classes existantes et créer des nouvelles


qui regroupent leurs parties communes, en allant du plus spécifique au plus
général

▪ Approche Top-Down : sélectionner des classes existantes et en dériver de


nouvelles plus spécialisées, en spécifiant les différences

Mme S. Besbes Essanaa 27


La Généralisation

Spécialisation
Généralisation

▪ La généralisation ne porte aucun nom particulier, elle signifie


toujours : est un ou est une sorte de
▪ La généralisation ne concerne que les classes, elle n’est pas
instanciable et ne porte aucune multiplicité
Mme S. Besbes Essanaa 28
Propriétés des généralisations
▪ La généralisation est une relation non réflexive : une classe ne

peut pas dériver d’elle-même

▪ La généralisation est une relation non symétrique : si une classe

B dérive d’une classe A, alors la classe A ne peut pas dériver de

la classe B

▪ La généralisation est par contre une relation transitive : si C

dérive d’une classe B, qui dérive elle-même d’une classe A, alors

C dérive également de A
Mme S. Besbes Essanaa 29
Le Diagramme d'Objets

Mme S. Besbes Essanaa 30


Correspondance entre diagramme de classes et diagramme
d'objets

* 1 Est une instance * *


Classe Objet
1..* 1..*
Est composé de

Est composé de
Relie
Relie

*
* 1Est une instance * *
Association Lien

* * * *
* *
Diagramme de classes Est une instance Diagramme d'objets

Extrait du méta-modèle UML


Mme S. Besbes Essanaa 31
Correspondance entre diagramme de classes et diagramme
d'objets

▪ Les diagrammes de classes et les diagrammes d'objets


donnent deux vues complémentaires du modèle : l'une est
un cas particulier de l'autre

▪ Le Diagramme de classes et le diagramme d'objets doivent


être cohérents l'un par rapport à l'autre

Mme S. Besbes Essanaa 32


Correspondance entre diagramme de classes et diagramme
d'objets

▪ Le processus de modélisation n'étant pas linéaire, il n'est


pas impératif de construire l'un avant l'autre

▪ En pratique les deux diagrammes se construisent en


parallèle, par de nombreux allers-retours. En effet,
trouver les objets et puis abstraire les classes est souvent
plus naturel que l'inverse

Mme S. Besbes Essanaa 33


Les Objets
En UML, un objet se représente à l’aide d’un rectangle qui
indique :
▪ le nom de l'objet (généralement souligné)

▪ optionnellement suivi de " : " et du nom de la classe à


laquelle il est associé.

▪ L'objet est dit anonyme lorsque seule la classe à laquelle il est


associé est mentionnée.

▪ A ne pas confondre avec le rectangle dont le coin droit


supérieur est plié, qui représente commentaire

Mme S. Besbes Essanaa 34


Classes vs Objets
▪ Classe : une description d’un ensemble d’objets qui partagent
les mêmes attributs, opérations, méthodes, relations et
contraintes

▪ Objet : une instance d’une classe

Classe
Objet instance de la classe Voiture

Exemple :

Mme S. Besbes Essanaa 35


Différentes représentations graphiques d'un Objet
(1) (2) (3)
NomObjet NomObjet : NomClasse : NomClasse

Objet nommé Objet nommé Objet anonyme


classe anonyme classe nommée classe nommée

Exemple :

Mme S. Besbes Essanaa 36


Classe ou instance?

▪ Quelque chose pouvant avoir des instances est une classe

▪ Quelque chose est une instance, si elle est l’un des éléments d’un
ensemble (défini par la classe)

▪ Un lien est l’instance d’une association, tout comme un objet est


l’instance d’une classe

▪ Pour des scénarios spécifiques, on ne parle plus de classes, mais


d'objets

Mme S. Besbes Essanaa 37


Classe ou instance?
▪ Film
– Classe : ses instances sont les différents films
▪ Bobine de film
– Classe : ses instances sont chacune des bobines existantes
▪ Bobine de film portant le numéro de série SW19876
– Une instance de BobineDeFilm

▪ Science fiction
– Instance de la classe Genre

▪ Film de science fiction


– Classe : regroupe tous les films de ce genre, une de ses instances
est le film ‘Star Wars
▪ Représentation du film ‘Star Wars’ au cinéma StarCité à 19h :
– Une instance de l’association Représentation
Mme S. Besbes Essanaa 38
Règles de traduction d’un
Diagramme de Classes en un MLD
Relationnel

Mme S. Besbes Essanaa 39


Traduction d’un Diagramme de Classes en MLD
Relationnel

Ces règles permettent de traduire les concepts du diagramme


des classes persistantes en concepts du MLD relationnel :

Modèle Source ➔ Modèle Cible


des Classes des relations
des associations

▪ La traduction des associations est basée sur leurs


multiplicités maximales
Mme S. Besbes Essanaa 40
Traduction des Classes

Règle 1. Toute classe est traduite en une relation :


- le nom de la classe devient le nom de la relation
- la clé primaire de la relation est l'un des attributs de la classe
- les attributs de la relation sont les autres attributs de la classe

La table E
E … Le schéma relationnel
p1 p2 pn
p1
p2
… E (p1, p2, …, pn)
Pn

Remarque
A défaut d’une identification naturelle parmi les attributs de la classe, il
faut choisir une identification artificielle (un compteur par exemple)
Mme S. Besbes Essanaa 41
Traduction des Hiérarchies d’Héritage des classes

 Plusieurs solutions sont possibles :


▪ Garder la généralisation
et les spécialisations

▪ Garder uniquement les


spécialisations

▪ Garder uniquement la
généralisation

Mme S. Besbes Essanaa 42


Garder la généralisation et les spécialisations
PERSONNE
Deux solutions possibles : NumSs
Nom
PERSONNE (NumSs, Nom, Age) Age
ETUDIANT (#NumSs, Niveau)

ENSEIGNANT (#NumSs, Grade)

Ou bien ETUDIANT ENSEIGNANT

Niveau Grade
PERSONNE (NumSs, Nom, Age)

ETUDIANT (#NumSs, Niveau, Nom, Age)

ENSEIGNANT (#NumSs, Grade, Nom, Age)

Mme S. Besbes Essanaa 43


Garder uniquement les Spécialisations
PERSONNE

ETUDIANT (NCE, NumSs, Niveau, Nom, Age) NumSs


Nom
Age
ENSEIGNANT (Matricule, NumSs, Grade, Nom, Age)

Remarques :
• Cette solution est conseillée dans le cas où les sous-classes ETUDIANT ENSEIGNANT

ont leur propre identifiant Niveau Grade

• Au besoin, il est également possible de garder la relation


personne et ajouter les CIR nécessaires :

PERSONNE (NumSs, Nom, Age)

ETUDIANT (NCE, #NumSs, Niveau, Nom, Age)

ENSEIGNANT (Matricule, #NumSs, Grade, Nom, Age) 44


Mme S. Besbes Essanaa
Garder uniquement la Généralisation

PERSONNE (NumSs, Nom, Age, Niveau, Grade, Type)


Remarque : PERSONNE
NumSs
Il est possible de définir deux vues* se rapportant aux Nom
Age
étudiants et aux enseignants à l’aide de requêtes SQL

VETUDIANT (NumSs, Niveau, Nom, Age)


ETUDIANT ENSEIGNANT
VENSEIGNANT (NumSs, Grade, Nom, Age)
Niveau Grade

* Une vue n’est pas une table permanente, elle est enregistrée sous forme d'une
requête et générée uniquement lorsque la requête est exécutée.

Mme S. Besbes Essanaa 45


Traduction des Associations
Règle 2. Toute association binaire du type 1-* est traduite par un report de clé :
la clé primaire de la relation du côté 1 est ajoutée comme clé étrangère
dans la relation du côté *. Les attributs de l’association, s’il y en a, sont
aussi transférés dans la relation du côté *.
Exemple
Hypothèse : chaque produit est fourni par un seul fournisseur

Produit Fournisseur Remarque


N*
Référence CodeFour
libellé 1 Nom # : indique une clé
QtéStock Prénom étrangère

Produit (Référence, Libellé, QtéStock, # CodeFour)


Fournisseur (CodeFour, Nom, Prénom,)
Mme S. Besbes Essanaa 46
Traduction des Associations
Règle 3. Toute association binaire du type *-* est traduite par la création
d'une nouvelle relation :
▪ le nom de la relation est le nom de l'association
▪ la clé de la relation est composée des clés des tables qui traduisent les
classes de l'association
▪ les autres attributs de la relation sont les attributs de l’association
▪ une clé étrangère est générée entre chaque attribut composant la clé et
sa table d’origine
Commande Produit
Exemple NumCom R éférence
Total * 1..* Libell é
DateCom Qt éstock

QtéComm
Produit (Référence, Libellé, QtéStock)
Commande (NumCom, Total, DateCom)
Concerne (# NumCom, # Référence, QtéComm)
Mme S. Besbes Essanaa 47
Traduction des Associations
Règle 4. Toute association n-aire est traduite par la création d'une nouvelle
relation :
▪ le nom de la relation est le nom de l'association
▪ la clé de la relation est composée des clés des tables qui traduisent les
classes de l'association
▪ les autres attributs de la relation sont les attributs de l’association
▪ une clé étrangère est générée entre chaque attribut composant la clé et
sa table d’origine
Exemple

Médecin (MatriculeMed, Nom, Prénom, …)


Patient (MatriculePat, NomPat, PrénomPat, …)
Acte ( CodeActe, Intitulé, …)
Exécute (# MatriculeMed, # MatriculePat, # CodeActe, date)
Mme S. Besbes Essanaa 48
Traduction des Associations
Règle 5. Toute Association du type 1-1 est traduite :
▪ soit conformément à la règle 2 (par un report de clé, dans l’un des deux sens)
▪ soit conformément à la règle 3 (en créant une table)
Exemple
Compte Client Hypothèse : un client ne
NumCompte 1 1 CodeClient possède qu’un seul compte d’un
Solde Nom
DateOuv Prénom
type donné

Compte (NumCompte, Solde, DateOuv)


Client (CodeClient, Nom, Prénom, # NumCompte)
Règle 2 Ou bien
Compte (NumCompte, Solde, DateOuv, # CodeClient)
Plus logique !!!
Client (CodeClient, Nom, Prénom)

Compte (NumCompte, Solde, DateOuv)


Règle 3 Client (CodeClient, Nom, Prénom)
Appartient (# CodeClient, # NumCompte )
Mme S. Besbes Essanaa 49
Remarque
Après traduction, les tables ne comportant qu'une seule colonne sont ignorées

Exemple : Date (Date)

Médecin (MatriculeMed, Nom, Prénom, …)


Patient (MatriculePat, NomPat, PrénomPat, …)
Acte ( CodeActe, Intitulé, …)
Date (date)

Exécute (# MatriculeMed, # MatriculePat, # CodeActe, # date)


Enlever le
Or, Date (date) doit être supprimée : symbole #

(
Exécute # MatriculeMed, # MatriculePat, # CodeActe, date)
Mme S. Besbes 50
Contraintes d’Intégrité Référentielle (CIR)

Attention :

 Une contrainte d'intégrité référentielle


(CIR) est générée pour chaque clé
étrangère et sa table d'origine

Mme S. Besbes Essanaa 51

Vous aimerez peut-être aussi