0% ont trouvé ce document utile (0 vote)
80 vues50 pages

Diagrammes de Classes: Structure et Relations

Le document décrit les concepts clés des diagrammes de classes UML, notamment les classes, attributs, opérations, visibilité, relations et associations.

Transféré par

HaJar SolDa
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
80 vues50 pages

Diagrammes de Classes: Structure et Relations

Le document décrit les concepts clés des diagrammes de classes UML, notamment les classes, attributs, opérations, visibilité, relations et associations.

Transféré par

HaJar SolDa
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Diagramme de classe

206
Contexte

• Les diagrammes de classes permettent de spécifier la structure


interne et les liens entre les objets dont le système est composé.
• C’est une représentation abstraite des objets du système qui vont
interagir pour réaliser les cas d’utilisation.
• Le plus important de la modélisation orientée objet.
• Le seul obligatoire lors d’une telle modélisation.
• Une vue statique, car on ne tient pas compte du facteur temporel
dans le comportement du système.

207
Exemple

208
Définition

• Les diagrammes de classes expriment de manière générale la


structure statique d’un système, en termes de classes et de relations
entre ces classes.
• Une classe permet de décrire un ensemble d’objets (attributs et
comportement), tandis qu’une relation ou association permet de
faire apparaître des liens entre ces objets.

209
Classe et Objet

• Une classe est un concept abstrait représentant :


• des éléments concrets (ex. : des avions),
• des éléments abstraits (ex. : des commandes de marchandises ou services),
• des composants d’une application (ex. : les boutons des boîtes de dialogue),
• des structures informatiques (ex. : des tables de hachage),
• des éléments comportementaux (ex. : des tâches), . . .
• Une instance est une concrétisation d’une classe :
• la Ferrari Enzo qui se trouve dans votre garage est une instance du concept
abstrait Automobile;
• l’amitié qui lie Jean et Marie est une instance du concept abstrait Amitié;

210
Classe et Objet

• Une classe représente la description abstraite d’un ensemble d’objets


possédant les mêmes caractéristiques.
• Un objet est une entité aux frontières bien définies, possédant une
identité et encapsulant un état et un comportement.
• Un objet est une instance (ou occurrence) d’une classe.

211
Classe - les composants

• Un attribut représente un type d’information contenu dans une


classe.
• Une opération représente un élément de comportement (un service)
contenu dans une classe.

212
Classe - Représentation

• Rectangle à trois compartiments (voir quatre):


• Nom de la classe
• Attributs
• Opérations

213
Classe - Représentation

• Selon l’avancement de la modélisation, ces informations ne sont pas


forcement toutes connues.
• D’autres compartiments peuvent être ajoutés : responsabilités,
exceptions, etc.

214
Classe: Attribut

• Leur nom commence par une minuscule.


• Un attribut décrit une donnée de la classe.
• Syntaxe de la déclaration d’un attribut:
visibilité nomAtt : type ’[’ multi ’]’[= valeurInit]

215
Classe: Opération

• Une opération est un service offert par la classe (un traitement que
les objets correspondant peuvent effectuer).
• Une opération est définie par son nom ainsi que par les types de ses
paramètres et le type de sa valeur de retour.
• La syntaxe de la déclaration d’une opération est la suivante :
visibilité nomMéthode ([type paramètre1, ... , type paramètreN]) :
[typeRenvoyé] [propriétés]

216
Classe: Opération

• Une opération est un service offert par la classe (un traitement que
les objets correspondant peuvent effectuer).
• Une opération est définie par son nom ainsi que par les types de ses
paramètres et le type de sa valeur de retour.
• La syntaxe de la déclaration d’une opération est la suivante :
visibilité nomMéthode ([type paramètre1, ... , type paramètreN]) :
[typeRenvoyé] [propriétés]

217
Classe: Visibilité des attributs/opérations

• Chaque attribut ou opération d’une classe peut être de type public,


protégé ou privé. Les symboles + (public), # (protégé) et - (privé)
sont indiqués devant chaque attribut ou opération pour signifier le
type de visibilité autorisé pour les autres classes.
• Les droits associés à chaque niveau de confidentialité sont :
• Public ou + : tout élément qui peut voir le conteneur.
• Protected ou # : seul un élément situé dans le conteneur ou un de ses
descendants peut voir l’élément.
• Private ou - : seul un élément situé dans le conteneur peut voir l’élément.

218
Classe: Visibilité des attributs/opérations

• Chaque attribut ou opération d’une classe peut être de type public,


protégé ou privé. Les symboles + (public), # (protégé) et - (privé)
sont indiqués devant chaque attribut ou opération pour signifier le
type de visibilité autorisé pour les autres classes.
• Les droits associés à chaque niveau de confidentialité sont :
• Public ou + : tout élément qui peut voir le conteneur.
• Protected ou # : seul un élément situé dans le conteneur ou un de ses
descendants peut voir l’élément.
• Private ou - : seul un élément situé dans le conteneur peut voir l’élément.

219
Classe: Visibilité des attributs/opérations

• Package ou ˜ ou rien : seul un élément déclaré dans le même


paquetage peut voir l’élément.
• Derived ou / : un élément calculé à partir d’autres attributs et de
formules de calcul.
• On peut lui associer une note pour documentation

220
Relations entre classes

• Une association représente une relation sémantique entre les objets


d’une classe.
• Une relation d’agrégation décrit une relation de contenance ou de
composition.
• Une dépendance est une relation unidirectionnelle exprimant une
dépendance sémantique entre les éléments du modèle (flèche
ouverte pointillée).
• Une relation d’héritage est une relation de
généralisation/spécialisation permettant l’abstraction.

221
Relations entre classes : Association

• Une association représente une relation sémantique durable entre


deux classes.
• Elle est représentée graphiquement par un trait plein entre les
classes associées. Elle est complétée par un nom.
• On peut également préciser le sens de lecture par le biais d’un petit
triangle dirigé vers la classe désignée par la forme verbale.

222
Relations entre classes : Association

• Une personne peut posséder des voitures. La relation possède est


une association entre les classes Personne et Voiture.

223
Relations entre classes : Association réflexive

• L’association la plus utilisée est l’association binaire (reliant deux


classe).
• Parfois, les deux extrémités de l’association pointent vers le même
classeur. Dans ce cas, l’association est dite réflexive.

224
Relations entre classes : Classe-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-
association.

225
Relations entre classes : Associations N-aire

• Une association n-aire lie plus de deux classes.


• Notation avec un losange central pouvant éventuellement accueillir
une classe-association.
• La multiplicité de chaque classe s’applique à une instance du
losange.
• Les associations n-aires sont peu fréquentes et concernent surtout
les cas où les multiplicités sont toutes * . Dans la plupart des cas, on
utilisera plus avantageusement des classes-association ou plusieurs
relations binaires.

226
Relations entre classes : Associations N-aire

• Une association n-aire lie plus de deux classes.


• Notation avec un losange central pouvant éventuellement accueillir
une classe-association.
• La multiplicité de chaque classe s’applique à une instance du
losange.
• Les associations n-aires sont peu fréquentes et concernent surtout
les cas où les multiplicités sont toutes * . Dans la plupart des cas, on
utilisera plus avantageusement des classes-association ou plusieurs
relations binaires.

227
Relations entre classes : Cardinalité - Multiplicité

• La notion de cardinalité ou multiplicité permet le contrôle du


nombre d’objets intervenant dans chaque instance d’une
association.

228
Relations entre classes : Cardinalité - Multiplicité

• Exemple:

229
Relations entre classes : 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.
• Une agrégation dénote une relation d’un ensemble à ses parties.
L’ensemble est l’agrégat et la partie l’agrégé.
• On représente l’agrégation par l’ajout d’un losange vide du côté de
l’agrégat.
• Les agrégations n’ont pas besoin d’être nommées, implicitement
elles signifient « contient », « est composé de ».

230
Relations entre classes : 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.
• Une agrégation dénote une relation d’un ensemble à ses parties.
L’ensemble est l’agrégat et la partie l’agrégé.
• On représente l’agrégation par l’ajout d’un losange vide du côté de
l’agrégat.
• Les agrégations n’ont pas besoin d’être nommées, implicitement
elles signifient « contient », « est composé de ».

231
Relations entre classes : Agrégation

• La durée de vie de l’agrégat est indépendante des éléments qui le


constituent.
• Un composant peut apparaître dans plusieurs agrégats (pas de
restriction sur la multiplicité du côté de l’agrégat).

232
Relations entre classes : Composition

• La composition, également appelée agrégation composite, décrit


une contenance structurelle entre instances.
• Ainsi, la destruction de l’objet composite implique la destruction de
ses composants. Une instance de la partie appartient toujours à au
plus une instance de l’élément composite.
• Une composition se distingue d’une association par l’ajout d’un
losange plein du côté de l’agrégat.
• La multiplicité du côté de l’agrégat ne peut prendre que deux
valeurs : 0 ou 1.
• Par défaut, la multiplicité vaut 1.

233
Relations entre classes : Composition

• La composition, également appelée agrégation composite, décrit


une contenance structurelle entre instances.
• Ainsi, la destruction de l’objet composite implique la destruction de
ses composants. Une instance de la partie appartient toujours à au
plus une instance de l’élément composite.
• Une composition se distingue d’une association par l’ajout d’un
losange plein du côté de l’agrégat.
• La multiplicité du côté de l’agrégat ne peut prendre que deux
valeurs : 0 ou 1.
• Par défaut, la multiplicité vaut 1.

234
Relations entre classes : Composition

• Un élément ne peut appartenir qu’à un seul agrégat composite


(agrégation non partagée).
• La destruction de l’agrégat composite entraîne la destruction de
tous ses éléments (le composite est responsable du cycle de vie des
parties).

235
Composition Vs agrégation

• Dès lors que l’on a une relation du tout à sa partie, on a une relation
d’agrégation ou de 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.

236
Dépendance

• Une dépendance est une relation unidirectionnelle exprimant une


dépendance sémantique entre les éléments du modèle. Elle indique
que la modification de la cible implique le changement de la source.
• Elle est représentée par un trait discontinu orienté.

237
Héritage

• L’héritage est une relation de spécialisation/généralisation.


• Les éléments spécialisés héritent de la structure et du comportement
des éléments plus généraux (attributs et opérations)
• Exemple : Par héritage d’Article, un livre a d’office un prix, une
désignation et une opération acheter(), sans qu’il soit nécessaire de
le préciser

238
Héritage

• L’héritage est une relation de spécialisation/généralisation.


• Les éléments spécialisés héritent de la structure et du comportement
des éléments plus généraux (attributs et opérations)
• Exemple : Par héritage d’Article, un livre a d’office un prix, une
désignation et une opération acheter(), sans qu’il soit nécessaire de
le préciser

239
Héritage

• La classe enfant possède toutes les propriétés de ses classes parents


(attributs et opérations)
• La classe enfant est la classe spécialisée (ici Livre)
• La classe parent est la classe générale (ici Article)
• Toutefois, elle n’a pas accès aux propriétés privées.

240
• Une classe peut avoir plusieurs classes parents. On parle alors
d’héritage multiple.
• Le langage C++ est un des langages objet permettant son implantation
effective.
• Java ne le permet pas.

241
Exerice

242
Méthode abstraite

• 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.
• Il appartient aux classes enfant de définir les méthodes abstraites.
• Une classe est dite abstraite lorsqu’elle définit au moins une
méthode abstraite ou lorsqu’une classe parent contient une méthode
abstraite non encore réalisée.

243
Classe abstraite

• Une classe abstraite est simplement une classe qui ne s’instancie pas
directement mais qui représente une pure abstraction afin de
factoriser des propriétés. Elle se note en italique, ou suivie de la
contrainte abstract.

244
Interface

• 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 rôle d’une interface est de regrouper un ensemble d’opérations
assurant un service cohérent offert par un classeur et une classe en
particulier.
• On utilise une relation de type réalisation entre une interface et une
classe qui l’implémente.
• Les classes implémentant une interface doivent implémenter toutes
les opérations décrites dans l’interface

245
Interface

• 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 rôle d’une interface est de regrouper un ensemble d’opérations
assurant un service cohérent offert par un classeur et une classe en
particulier.
• On utilise une relation de type réalisation entre une interface et une
classe qui l’implémente.
• Les classes implémentant une interface doivent implémenter toutes
les opérations décrites dans l’interface

246
Diagramme de classe: méthodologie

• 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 :
• Souvent, substantifs correspondant à un niveau de granularité plus fin que les
classes. Les adjectifs et les valeurs correspondent souvent à des valeurs
d’attributs.
• Organiser et simplifier le modèle en utilisant l’héritage.
• Tester les chemins d’accès aux classées.
• Itérer et rafiner le modèle.

247
Diagramme d’objet Définition

• Le diagramme d’objets représente les objets d’un système à un


instant
• donné. Il permet de :
• Illustrer le modèle de classes (en montrant un exemple qui explique le modèle).
• Préciser certains aspects du système (en mettant en évidence des détails
imperceptibles dans le diagramme de classes).
• Exprimer une exception (en modélisant des cas particuliers, des connaissances
non généralisables. . . ).
• Le diagramme de classes modélise des règles et le diagramme
d’objets modélise des faits.

248
Diagramme d’objet :Définition

• Illustrer les interactions concrètes entre instances de classes d’un


diagramme de classes
• Vérifier l’adéquation d’un diagramme de classe à différents cas
possibles

249
Diagramme d’objet :Définition

• Illustrer les interactions concrètes entre instances de classes d’un


diagramme de classes
• Vérifier l’adéquation d’un diagramme de classe à différents cas
possibles

250
Diagramme d’objet Définition

• Comme les classes, on utilise des cadres compartimentés.


• En revanche, les noms des objets sont soulignés et on peut rajouter
son identifiant devant le nom de sa classe.
• Les valeurs (a) ou l’état (f) d’un objet peuvent être spécifiées.
• Les instances peuvent être anonymes (a,c,d), nommées (b,f),
orphelines (e), multiples (d) ou stéréotypées (g).

251
Diagramme d’objet Définition

• Comme les classes, on utilise des cadres compartimentés.


• En revanche, les noms des objets sont soulignés et on peut rajouter
son identifiant devant le nom de sa classe.
• Les valeurs (a) ou l’état (f) d’un objet peuvent être spécifiées.
• Les instances peuvent être anonymes (a,c,d), nommées (b,f),
orphelines (e), multiples (d) ou stéréotypées (g).

252
Diagramme d’objet Définition

• Le compartiment des opérations n’est pas utile.


• Le nom de la classe dont l’objet est une instance est précédé d’un « :
» et est souligné.
• Les relations du diagramme de classes deviennent des liens.

253
Diagramme d’objet Définition

• Un lien est une instance d’une association.


• Un lien se représente comme une association mais s’il a un nom, il
est souligné.
• Attention : Naturellement, on ne représente pas les multiplicités qui
n’ont aucun sens au niveau des objets

254
Diagramme d’objet Définition

• La relation de dépendance d’instanciation (stéréotypée) décrit la


relation entre un classeur et ses instances.
• Elle relie, en particulier, les associations aux liens et les classes aux
objets

255

Vous aimerez peut-être aussi