Chapitre II
Diagramme des Classes
Cours
Mohammed BEKKALI
ENSAM-Rabat
Université Mohamed V
Diagramme de Classes
Sommaire
◦ Présentation du diagramme
◦ Les classes
◦ Les relations entre classes
◦ Association
◦ Agrégation / Composition
◦ Héritage
◦ Les Classes Abstraites / Les Interfaces
◦ Exemples de synthèse
LE LANGAGE UML – [M. BEKKALI] 2
Diagramme des Classes
Principe
Description
◦ Décrire la structure statique du système en modélisant les classes et les relations entre elles.
◦ Il s’agit d’une vue statique car on ne tient pas compte du facteur temporel dans le comportement du système.
◦ Les principaux éléments de cette vue statique sont les classes et leurs relations : association, généralisation et
plusieurs types de dépendances.
◦ Le diagramme des classes est considéré comme le plus important de la modélisation orientée objet.
◦ La description reste indépendante par rapport à un langage de programmation particulier.
LE LANGAGE UML – [M. BEKKALI] 3
Diagramme des Classes
Principe
Remarques
◦ Le diagramme de cas d’utilisation montre le système du point de vue des acteurs. Les cas d’utilisation
ne réalisent pas une partition des classes du diagramme de classes.
◦ Le diagramme de classes montre la structure interne : représentation abstraite des objets du système
qui vont interagir ensemble pour réaliser les cas d’utilisation.
LE LANGAGE UML – [M. BEKKALI] 4
Diagramme des Classes
Éléments de base
Classe
◦ Une classe représente la structure commune d’un
ensemble d’objets, ayant des attributs (caractéristiques) Personne
& des méthodes (services). - nom
- dateNaissance
Relation Héritage + afficher()
+ age()
◦ Création d’une nouvelle classe à partir d’une classe
existante.
Relation d’Agrégation Employee
◦ Une relation d’inclusion d’un élément dans un Entreprise - salaire
membres
ensemble. - CA
0..1 *
+ calculerSalaire()
LE LANGAGE UML – [M. BEKKALI] 5
Les Classes
Définitions
Définitions
◦ Classe : est la description formelle d’un ensemble d’objets ayant en commun :
◦ une sémantique
◦ des propriétés (attributs)
◦ des relations (associations)
◦ et un comportement (méthodes).
◦ Objet : est une entité concrète avec une identité bien définie qui encapsule un état et un comportement. L’état
est représenté par les valeurs d’attributs, le comportement est représenté par des méthodes.
◦ Instance : est une concrétisation d’un concept abstrait.
◦ Un objet est une instance d’une classe.
◦ Un lien est une instance d’une relation.
LE LANGAGE UML – [M. BEKKALI] 6
Les Classes
Définitions
Définitions
◦ Méthode / Opération
◦ Une méthode est le comportement d’une classe. Ce terme désigne aussi l’implémentation (i.e. la définition) d’un comportement ou
service offert par la classe.
◦ Une opération est la spécification (i.e. la déclaration, signature ou prototype) d’une méthode.
◦ Encapsulation
C’est un mécanisme consistant à :
◦ rassembler les données et les méthodes au sein d’une structure.
◦ cacher l’implémentation.
◦ L’encapsulation permet de définir des niveaux de visibilité (privé, protégé, publique, et package).
LE LANGAGE UML – [M. BEKKALI] 7
Les Classes
Représentation Graphique
Consignes de représentation graphique
◦ Une classe est représentée par un rectangle qui contient une chaîne de caractères correspondant au nom de la
classe.
◦ Ce rectangle peut être séparé en trois parties (nom, attributs, opérations).
◦ Le nom de la classe doit :
◦ évoquer le concept décrit par la classe,
◦ commencer par un caractère alphabétique majuscule
Exemples avec les différents niveau de description d’une classe
Date Date Date
- jour - jour : int
- mois - mois : String
- annee - annee : int
+ afficher() : void
LE LANGAGE UML – [M. BEKKALI] 8
Les Classes
Description des Attributs
Syntaxe Générale
◦ visibilité [/] nomAttribut [multiplicité] : type [valeur initiale]
Visibilité
◦ Il existe quatre niveaux de visibilité prédéfinis :
◦ public (+) : élément visible partout
◦ protégé (#) : élément visible dans la classe et ses descendants (les sous-classes)
◦ privé (-) : élément visible uniquement dans la classe
◦ package (~ ou rien) : élément visible uniquement dans le paquetage.
Attributs dérivés
◦ Peuvent être calculés à partir d’autres attributs et de formules de calcul.
◦ Les attributs dérivés sont symbolisés par l’ajout d’un « / » devant leur nom.
◦ Exemple : l’âge d’une personne est calculé à partir de l’année de naissance.
LE LANGAGE UML – [M. BEKKALI] 9
Les Classes
Description des Attributs
Attributs de Classe
◦ Un attribut de classe garde une valeur unique et partagée par toutes les instances.
◦ Les instances ont accès à cet attribut mais n’en possèdent pas une copie.
◦ L’accès à cet attribut ne nécessite pas l’existence d’une instance.
◦ Graphiquement, un attribut de classe est souligné.
Multiplicité
◦ Certains attributs peuvent être désignés par plusieurs éléments d’un type donné.
◦ La multiplicité est le nombre d’éléments de ce type, elle est exprimée par un intervalle
LE LANGAGE UML – [M. BEKKALI] 10
Les Classes
Description des Attributs
Exemples de spécification d’attributs
◦ origine // seulement le nom
◦ + origine // visibilité et nom
◦ origine : Point = (0, 0) // nom, type et initialisation
◦ nom [0 .. 1] : String // nom, multiplicité et type
◦ - val [1 .. 50] : Integer // visibilité, nom, multiplicité et type
◦ - / age : int // visibilité, attribut dérivé, nom et type
◦ + nb : int // visibilité, nom, type et attribut de classe
LE LANGAGE UML – [M. BEKKALI] 11
Les Classes
Description des Opérations
Syntaxe
◦ visibilité nomMéthode (listesDesParamètres) : type_de_retour {propriétés}
◦ Les paramètres sont séparés par des virgules et sont de la forme :
◦ nomParamètre : type [= valeur_par_défaut]
◦ Propriétés : contraintes ou informations complémentaires (méthode abstraite par exemple)
Méthode de Classe
◦ Ne peut manipuler que des attributs de classe et ses propres paramètres.
◦ N’a pas accès aux attributs de la classe.
◦ L’accès à une méthode de classe ne nécessite pas l’existence d’une instance de cette classe.
◦ Graphiquement, une méthode de classe est soulignée.
LE LANGAGE UML – [M. BEKKALI] 12
Les Classes
Description des Opérations
Exemple d’une classe
Hotel
- chambres [1 .. 200] : Chambre
- nom : String
- proprietaire : Personne
- texteDeLoi : String
+ afficher() : void
+ consulterLoi() : void
LE LANGAGE UML – [M. BEKKALI] 13
Les Associations
Association
◦ Une association est une relation entre deux classes (association binaire) ou plus (association n-aire), qui décrit les
connexions entre leurs instances.
◦ Une association est paramétrée par :
◦ Un nom (le rôle joué par l’entité connectée)
◦ Une multiplicité (0, 1, *, 1..*, …)
◦ Un type (composition, agrégation, simple, héritage)
◦ Plusieurs propriétés: isNavigable, …
LE LANGAGE UML – [M. BEKKALI] 14
Les Associations
Type d’Association
Type d’association
◦ Association Simple
◦ Relation de faible intensité, les classes impliquées sont indépendantes
◦ Agrégation / Composition
◦ Elle représente la relation d'inclusion d'un élément dans un ensemble
◦ Si les durées de vie des objets ne sont pas liées, c’est une agrégation; dans le cas contraire c’est une composition
◦ Héritage
◦ L'héritage permet la classification des objets. Les éléments spécialisés héritent de la structure et du comportement des éléments plus généraux
LE LANGAGE UML – [M. BEKKALI] 15
Les Associations
Association Simple
Association simple
◦ Une association simple est une relation entre deux classes, qui représente un lien sémantique entre leurs
instances.
◦ Graphiquement, Une association binaire est représentée par un trait plein entre les classes associées. Elle peut
être ornée d’un nom.
◦ La relation d’association est :
◦ Bidirectionnelle : elle peut être lue dans les deux sens.
◦ Valuée : sur les extrémités de la relation est précisé le nombre d’objets impliqués dans la relation (la multiplicité).
◦ Exemple 1
< Travail dans Recrute >
Entreprise Employee
0..1 *
◦ Exemple 2
< Enseigné par Enseigne >
Professeur Cours
1 *
LE LANGAGE UML – [M. BEKKALI] 16
Les Associations
Association Simple
Multiplicité d’une association
◦ Dans une association, la multiplicité sur la terminaison cible contient le nombre d’objets de la classe cible pouvant
être associés à un seul objet donné de la classe source (la classe de l’autre terminaison de l’association).
1 Un et un seul
0 .. 1 Zéro ou un
N ou * N (entier naturel)
M .. N De M à N (entiers naturels)
0 .. * De zéro à plusieurs
Association Réflexive 1 .. * De un à plusieurs
◦ Quand les deux extrémités de l’association pointent vers la même classe, l’association est dite réflexive.
Contenant
Repertoire
0 .. >
* 1
Contenu >
LE LANGAGE UML – [M. BEKKALI] 17
Les Associations
Association Simple
Lecture des rôles
< Etudie dans héberge >
Universite Etudiant
Lecture des multiplicités
suivi par suit
Etudiant Cours
* 0..8
Un cours est suivi par plusieurs Un étudiant suit des cours
étudiants (0 ou plusieurs). (de 0 jusqu’à 8 cours).
LE LANGAGE UML – [M. BEKKALI] 18
Les Associations
Association Simple
La navigabilité
◦ La navigabilité permet de spécifier dans quel(s) sens il est possible de traverser l'association à l'exécution.
◦ On restreint la navigabilité d'une association à un seul sens à l'aide d'une èche.
◦ Par défaut, une association est navigable dans les deux sens.
◦ Exemple : Connaissant un article on connaît les commentaires, mais pas l'inverse.
AvisInternaute
Article Commentaire
1 *
◦ Les trois notations de navigabilité suivantes sont équivalentes :
LE LANGAGE UML – [M. BEKKALI] 19
Les Associations
Association N-aire
Association N-aire
◦ Une association n-aire lie plus de deux classes.
◦ On représente une association n-aire par un grand losange reliant les classes participantes
◦ Le nom de l’association peut apparaître à proximité du losange.
◦ La multiplicité de chaque classe s'applique à une instance du losange.
◦ Exemple : une instance de la relation d’enseignement nécessite au moins une instance de de classe, Cours qui sera enseigné, de la classe
Enseignant qui va enseigner, et de la classe Etudiant qui va suivre le cours.
Cours
*
Etudiant Enseignant
* 0 ..1
Les associations n-aire sont peu utilisées, à éviter si on peut la décomposer en associations binaires
LE LANGAGE UML – [M. BEKKALI] 20
Les Associations
Classe d’Association
Classe d’Association
◦ Une association peut être raffinée et avoir ses propres attributs, qui ne sont disponibles dans aucune des classes
qu'elle lie.
◦ Comme, dans le modèle objet, seules les classes peuvent avoir des attributs, cette association devient alors une
classe appelée « Classe d’Association »
◦ Exemple
Article Commande
1..* *
LigneCommande
- quantite : int
+ calculerMontantLigne()
LE LANGAGE UML – [M. BEKKALI] 21
Les Associations
Agrégation
Agrégation
◦ Une agrégation est une forme particulière d'association. Elle représente la relation d'inclusion d'un élément dans
un ensemble.
◦ Graphiquement, on représente l'agrégation par l'ajout d'un losange vide du côté de l'agrégat.
◦ Une agrégation dénote une relation d'un ensemble à ses parties. L'ensemble est l'agrégat et la partie l'agrégé.
◦ Exemple 1 1 2 ..* * *
Ecole Salle Chaine
◦ Exemple 2 1 * * 1 .. *
Client Commande Article
LE LANGAGE UML – [M. BEKKALI] 22
Les Associations
Composition
Composition
◦ La composition est une agrégation forte
◦ Les cycles de vie entre le composé et les composants sont liés
◦ La destruction et la copie de l'objet composite (l'ensemble) impliquent respectivement la destruction ou la copie de ses composants (les
parties).
◦ Une instance de la partie composant n'appartient jamais à plus d'une instance de l'élément composite.
◦ Graphiquement, on représente l'agrégation par l'ajout d'un losange plein du côté de l'agrégat.
◦ Exemple 1 *
Arbre Feuille
* *
Paragraphe Phrase
◦ Exemple 2 Document
Titre
1
LE LANGAGE UML – [M. BEKKALI] 23
Les Associations
Agrégation ou Composition
◦ Dès lors que l'on a une relation du tout à sa partie (agrégation ou composition).
◦ Pour décider de mettre une composition plutôt qu'une agrégation, on doit se poser les questions suivantes :
◦ Est-ce que la destruction de l'objet composite (du tout) implique nécessairement la destruction des objets composants (les parties) ? C'est le
cas si les composants n'ont pas d'autonomie vis-à-vis des composites.
◦ Lorsque l'on copie le composite, doit-on aussi copier les composants, ou est-ce qu'on peut les « réutiliser », auquel cas un composant peut
faire partie de plusieurs composites ?
Si on répond par l'affirmative à ces deux questions, on doit utiliser une composition
LE LANGAGE UML – [M. BEKKALI] 24
Les Associations
Héritage
Héritage
◦ Décrit une relation entre une classe générale (classe de base ou classe mère) et une classe spécialisée (sous-classe
ou classe fille).
◦ La classe spécialisée est intégralement cohérente avec la classe de base (héritage), mais comporte des
informations (attributs, opérations, associations) supplémentaires (spécialisation).
◦ Graphiquement, on représente l’héritage avec une flèche avec un trait plein dont la pointe est un triangle fermé
désignant le cas le plus général.
Exemples
Personne FormeGeometrique
Etudiant Salarie Cercle Triangle Rectangle
LE LANGAGE UML – [M. BEKKALI] 25
Les Associations
Héritage
Propriétés de l’Héritage
◦ Il s'agit d'une relation :
◦ Transitive : si B hérite de A et si C hérite de B alors C hérite de A ;
◦ Non réflexif : une classe ne peut hériter d’elle-même ;
◦ Non symétrique : si A hérite de B, B n’hérite pas de A ;
◦ Sans cycle : Il n'est pas possible que : C hérite de B, B hérite de A, et A hérite de C.
LE LANGAGE UML – [M. BEKKALI] 26
Les Associations
Héritage
Remarques:
◦ Relation d’héritage existe en UML pour : les classes, paquetages, acteurs, cas d’utilisation.
◦ La classe fille possède tous les membres de sa classe mère (attributs et opérations)
◦ Toutefois, elle n'a pas accès aux membres privés.
◦ Une classe fille peut redéfinir (même signature) une ou plusieurs méthodes de la classe mère.
◦ Toutes les associations de la classe mère s’appliquent aux classes dérivées.
LE LANGAGE UML – [M. BEKKALI] 27
Les Associations
Héritage Multiple
Héritage Multiple :
◦ Une classe peut avoir plusieurs classes parents. On parle alors d'héritage multiple.
◦ Dans ce cas, la classe fille possède tous les membres (Attributs & Méthodes) de toutes les classes mères.
◦ Le langage C++ est un des langages orienté objet permettant son implantation effective.
◦ Java ne le permet pas.
◦ Exemple d’héritage multiple
Etudiant Employe
EtudiantSalarie
LE LANGAGE UML – [M. BEKKALI] 28
Les Classes Abstraites
Classes Abstraites :
◦ Une méthode est dite abstraite lorsqu'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 contient au moins une méthode abstraite ou lorsqu'une classe mère
contient une méthode abstraite non encore définit.
◦ Exemple d’une classe abstraite
FormeGeometrique {abstract}
+ surface()
Cercle Rectangle Carre
+ surface() + surface() + surface()
LE LANGAGE UML – [M. BEKKALI] 29
Les Interfaces
Interfaces :
◦ Le rôle d'une interface est de regrouper un ensemble d'opérations assurant un service cohérent offert par un
ensemble de classes particulières.
◦ Une interface décrit des objets mais uniquement en terme de méthodes abstraites (non définies).
◦ Graphiquement, une interface est définie comme une classe, avec les mêmes compartiments. On ajoute le
stéréotype interface avant le nom de l'interface.
◦ Le terme d’héritage n’est pas utilisé entre classes et interfaces : on dit qu’une classe implémente une interface.
(Graphiquement, avec une flèche en pointillé)
<<interface>>
Classe
Interface
+ operation() + operation()
LE LANGAGE UML – [M. BEKKALI] 30
Les Interfaces
Classe Cliente d’une Interface
Remarque :
◦ Quand une classe dépend d'une interface pour réaliser ses opérations, elle est dite une classe cliente de
l'interface
◦ Lorsqu’une classe implémente une interface, elle doit redéfinir toutes ses méthodes abstraites ou bien être une
classe abstraite.
◦ Exemple
<<interface>>
DataSource
+ getData() : List<Object>
FileDataSource ExcelDataSource XmlDataSource JdbcDataSource
+ getData() : List<Object> + getData() : List<Object> + getData() : List<Object> + getData() : List<Object>
LE LANGAGE UML – [M. BEKKALI] 31
Construction d’un diagramme des classe
◦ Trouver les classes du domaine étudié ;
◦ Souvent, concepts et substantifs du domaine.
◦ Trouver les associations entre classes ;
◦ Souvent, verbes mettant en relation plusieurs classes.
◦ Trouver les attributs des classes ;
◦ Organiser et simplifier le modèle en utilisant l'héritage ;
◦ Tester les chemins d'accès aux classes ;
◦ Itérer et raffiner le modèle.
LE LANGAGE UML – [M. BEKKALI] 32
Exemples Élémentaires 1
◦ Un chemin peut représenter un fichier ou un répertoire
Chemin
Fichier Repertoire
◦ Un chemin est un répertoire avec éventuellement un nom de fichier
Chemin
0 ..1
Fichier Repertoire
◦ Un dessin est soit du texte, soit une forme géométrique, soit un groupe de dessins
1 ..n
Dessin
Texte Forme Groupe
LE LANGAGE UML – [M. BEKKALI] 33
Exemples Élémentaire 2
◦ Un fichier est accessible par un utilisateur selon des droits d'accès
Utilisateur
DroitAcces *
Accède >
+ lecture : boolean
+ ecriture : boolean
*
Fichier
◦ Une personne joue dans une équipe pour une certaine durée
Joueur
Contract *
Joue >
+ debut : date
+ fin : date
*
Equipe
LE LANGAGE UML – [M. BEKKALI] 34
Exercice 1
Proposez un diagramme de classes qui répond aux règles de gestion suivantes:
◦ Une personne physique peut avoir jusqu'à trois sociétés (personnes morales) qui l'emploient.
◦ Chaque personne physique possède un numéro de sécurité sociale qui l'identifie.
◦ Une voiture a un numéro d'immatriculation.
◦ Une voiture est la propriété d'une personne (physique ou morale).
◦ Un emprunt dans une banque peut être demandé pour l'achat d'une voiture.
LE LANGAGE UML – [M. BEKKALI] 35
Exercice 2
Corrigé
Voiture
- immatriculation : String
possède >
*
Banque
Personne
PersonnePhysique Societe
* 0..3
- numSecuriteSociale : int
LE LANGAGE UML – [M. BEKKALI] 36
Exercice 2
Proposez un diagramme de classes qui répond aux règles de gestion suivantes:
◦ Un éditeur de documents graphiques supporte le groupement d'objets graphiques.
◦ Un document se compose de plusieurs feuilles, chacune contenant des objets graphiques (texte, forme
géométrique et groupe d'objets).
◦ Un groupe est un ensemble d'objets pouvant contenir d'autres groupes.
◦ Un groupe doit contenir au moins deux éléments.
◦ Les formes géométriques comprennent les cercles, les ellipses, les rectangles, les carrés, les lignes…
LE LANGAGE UML – [M. BEKKALI] 37
Exercice 2
Corrigé
Document
1 ..n
Feuille
*
ObjetGraphique 2 ..n
Texte Forme Groupe
Cercle Ellipse Rectangle Carre Ligne
LE LANGAGE UML – [M. BEKKALI] 38
Bilan
Diagramme de classes Classes
il répond à deux questions : Une classe représente la structure commune d’un ensemble
d’objets, ayant des attributs (caractéristiques) & des méthodes
1) les objets dont le système est composé (services)
2) les relations qui peuvent exister entre ces objets : Instance : Une instance est une concrétisation d’un concept
les associations abstrait.
Associations : traitent les dépendances entre les classes
◦ Association : est une relation entre deux classes ou plus, qui décrit les connexions entre leurs instances.
◦ Agrégation : est une relation d'inclusion d'un élément dans un ensemble.
◦ Composition : est une agrégation forte, dont les cycles de vie entre le composé et les composants sont liés
◦ Héritage : permet de créer une nouvelle à partir d’une classe existante
LE LANGAGE UML – [M. BEKKALI] 39