Vous êtes sur la page 1sur 69

Diagramme de classes

Diagramme d’objets
Mme CHALOUAH Anissa
I.S.E.T Bizerte
Département Technologies de l’informatique

13/04/2018 Mme Chalouah Anissa 1


Chapitre 3 : Diagramme de classes et Diagramme d’objets

DIAGRAMME DE CLASSE

13/04/2018 Mme Chalouah Anissa 2


Diagramme de classe :
Définition(1)
 Alors que le diagramme de cas d’utilisation
montre un système du point de vue des
acteurs, le diagramme de classes en montre la
structure interne.
 Il permet de fournir une représentation
abstraite des objets du système qui vont
interagir ensemble pour réaliser les cas
d’utilisation.
 Il s’agit d’une vue statique car on ne tient pas
compte du facteur temporel dans le
comportement du système.
13/04/2018 Mme Chalouah Anissa 3
Diagramme de classe :
Définition(2)
 Le diagramme de classes modélise les
concepts du domaine d’application ainsi que
les concepts internes créés dans le cadre de
l’implémentation d’une application.
 Il permet de modéliser les classes du système
et leurs relations indépendamment d’un
langage de programmation particulier.
 il faudra bien garder à l'esprit qu'une classe
est un modèle et l'objet sa réalisation.

13/04/2018 Mme Chalouah Anissa 4


Diagramme de classe :Utilisation
 Lors de l’analyse et de la conception:
◦ Définitions des objets qui composent le système à
partir des cas d’utilisation et des diagrammes
d’interaction (séquences et collaboration).
◦ Bases conceptuelles pour les diagrammes d’état-
transition, de déploiement, ...
 Lors de l’implantation :
◦ Génération automatique des structures statiques
du système (classes, relations, ...).

13/04/2018 Mme Chalouah Anissa 5


LES CLASSES

13/04/2018 Mme Chalouah Anissa 6


Classe : Définition(1)
 Une classe est un concept abstrait
représentant des éléments variés comme :

◦ 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 : les
enregistrements)
◦ des éléments comportementaux (ex : des
tâches)

13/04/2018 Mme Chalouah Anissa 7


Classe : Définition(2)
 Une classe est une description d’objets
partageant des caractéristiques communes.
(attributs, opérations, relations et sémantique)
 Les caractéristiques d’un objet permettent de
spécifier son état et son comportement.
◦ L’état d’un objet est décrit par des attributs appelés
aussi des propriétés.
◦ Le comportement d’un objet est décrit par des
opérations (méthodes). Ce sont des fonctions qui
peuvent prendre des valeurs en entrée et modifier
les attributs ou produire des résultats.

13/04/2018 Mme Chalouah Anissa 8


Classe : Définition(3)
 Une classe représente un type d’objet
 Généralement, en fonction de l’objectif du
diagramme, elle est décrite par :
◦ un nom (obligatoire)
◦ des attributs
◦ des opérations

13/04/2018 Mme Chalouah Anissa 9


Classe : Représentation UML

Attributs

Opérations

13/04/2018 Mme Chalouah Anissa 10


Conventions d’écriture
 Le nom d’une classe commence par une majuscule,

 Le nom d’un attribut commence par une minuscule.

 Les types de base (int, long, float, double, boolean)


sont en minuscules.

 Il n’y a pas d’espace dans les noms de classes ou de


propriétés.

 Pour les noms composés, on fait commencer


chaque mot par une majuscule

13/04/2018 Mme Chalouah Anissa 11


Nom de la classe
 Le nom de la classe doit évoquer le concept
décrit par la classe.
 On peut ajouter d’autres informations tel que
le nom de l’auteur, la date, etc.
 Pour indiquer qu’une classe est abstraite, il
faut ajouter le mot-clef abstract.
Syntaxe
[ <Nom_du_paquetage_1>::...::<Nom_du_paquetage_N>
]<Nom_de_la_classe> [ { [abstract], [<auteur>],
[<date>], ... } ]

13/04/2018 Mme Chalouah Anissa 12


Attribut : Syntaxe
<visibilite> [/] nomAttribut : type '['<multiplicite>']'
{<contrainte>} = <valeurParDefaut>

 visibilite : + public / # protected / - private/ ~package


 / : signal un attribut dérivé. C'est à dire calculé à partir d'autres
attributs.
 nomAttribut : nom de l'attribut
 type : type de l'attribut
 [multiplicite] : multiplicité pour définir des tableaux, des listes
de valeurs
 {<contrainte>} : pour donner des contraintes OCL quand la
multiplicité est supérieure à 1
 valeurParDefaut : valeur d'initialisation

13/04/2018 Mme Chalouah Anissa 13


Attribut : exemples
 - i : int pour un attribut privé
 + pp : PointPlan pour un attribut
public
 tabI : int[*] pour un tableau d’entiers
de taille quelconque et à la visibilité non
définie
 tabPP : PointPlans[4] pour un tableau
de 4 points exactement et à la visibilité
non définie
 # x : float = O.0 pour un nombre à
virgule initialisé à 0 et à la visibilité
protected
13/04/2018 Mme Chalouah Anissa 14
Attribut : Exemples

A
- attr1: char
-attr2 : string
# attr3 : boolean=true
+ attr4 : int[1..n]

Rectangle
- Longueur: int
- Largeur : int

13/04/2018 Mme Chalouah Anissa 15


Attribut dérivé
 sa valeur se calcule a partir d'autres propriétés de la
classe (attributs ou autres)
 symbolises par l'ajout d'un « / » devant leur nom

13/04/2018 Mme Chalouah Anissa 16


Opération : Syntaxe
<visibilite> nomOperation (<param1>, ... , <paramN>) :
<typeRetour> {<proprietes>}

 visibilite : + public / # protected / - private


 nomOperataion : nom de l'opération
 <param1>, ... , <paramN> : liste des paramètres
respectant la syntaxe ci-dessous.
 typeRetour : type de retour de l'opération
 {<propriete>} : contraintes OCL, indications ou
mots clé comme « abstract »

13/04/2018 Mme Chalouah Anissa 17


Opération : Syntaxe des
paramètres
[<direction>] <nom_paramètre>:<type>
[=<valeur_par_défaut>]

 La direction peut prendre l’une des valeurs


suivante :
◦ in : Valeur par défaut qui définit que l'appelant
fournit une valeur et n'accède pas aux
modifications de cette dernière.
◦ out : Paramètre de sortie uniquement. Il n’y a pas
de valeur d’entrée et la valeur finale est disponible
pour l’appelant.
◦ inout : Paramètre d’entrée/sortie. La valeur finale
est disponible pour l’appelant.

13/04/2018 Mme Chalouah Anissa 18


Opération : exemples
 + toString() : String pour une
opération publique, sans paramètre et
retournant une chaîne de caractères
 ~ setAbscisse(x:float) pour une
opération visible dans le paquetage, et
prenant une nombre à virgule en
paramètre.

13/04/2018 Mme Chalouah Anissa 19


Opérations : Exemples

Rectangle
- Longueur: int
- Largeur : int
+Rectangle(x : int, y : int)
+ toString() : String
+ Affiche ()
+surface ():int

13/04/2018 Mme Chalouah Anissa 20


Visibilité des membres
 UML définit trois niveaux de visibilité
des attributs et des opérations :
◦ privé : l’élément n'est visible que dans la
classe, noté -
◦ public : l'élément est visible par toutes les
autres classes, noté +
◦ protégé : visible par la classe et ses sous
classes, noté #
◦ Package : propriété ou classe visible
uniquement dans le paquetage, noté ~
13/04/2018 Mme Chalouah Anissa 21
Visibilité des membres : Exemple

13/04/2018 Mme Chalouah Anissa 22


Attribut et opération de classe
 Par défaut, les valeurs des attributs définis
dans une classe diffèrent d'un objet à un
autre.
 Parfois, il est nécessaire de définir un attribut
de classe qui garde une valeur unique et
partagée par toutes les instances.
 Semblable aux attributs de classe, une
opération de classe est une propriété de la
classe, et non de ses instances.
 Elle n'a pas accès aux attributs des objets de
la classe.

13/04/2018 Mme Chalouah Anissa 23


Attribut et opération de classe
 La notation UML prévoie aussi les
attributs et les opérations de classes.
 Ces éléments sont identifiés par leur
nom souligné dans la représentation de
la classe. Rectangle
- Longueur: int
- Largeur : int
NBRectangle : int
SomSurface : int
+Rectangle(x : int, y : int)
+ Affiche ()
+surface ():int
MoyenneSurface() : int

13/04/2018 Mme Chalouah Anissa 24


Classe stéréotype
 Un stéréotype permet d’étendre les classes déjà existantes en
leur donnant une signification sémantique différente.

 Enumération: classe définissant un ensemble d’identificateurs


formant le domaine de valeur d’un type.
 Utilitaire : classe réduite au concept de module et qui ne peut
être instanciée.
 acteur: classe modélisant un ensemble de rôles joués par un
acteur.
 interface: classe contenant uniquement une description des
opérations visibles.
 exception: classe modélisant un cas particulier de signal : les
exceptions.

13/04/2018 Mme Chalouah Anissa 25


Package
 Mécanisme de partitionnement des modèles et de
regroupement des éléments de modélisation.
 Chaque paquetage peut contenir un ensemble de diagrammes
et/ou de paquetages.
 Chaque élément d’un paquetage possède un nom unique dans
ce paquetage.
 Possibilité de définir des relations entre paquetages.
 Un nom de classe est unique au sein du paquetage
Nom de paquetage::nom de la classe

13/04/2018 Mme Chalouah Anissa 26


RELATION ENTRE CLASSES

13/04/2018 Mme Chalouah Anissa 27


Relation entre classes
 Les relations fournissent un chemin de
communication entre objets.
 Si deux objets ont besoin de se
communiquer, il doit exister un lien
entre eux.

 Contrainte : Une relation est un lien


stable entre deux objets.

13/04/2018 Mme Chalouah Anissa 28


Type de relations entre classes
 La relation d’héritage est une relation de
généralisation/spécialisation permettant
l’abstraction de concepts.

 Une association représente une relation possible


entre les objets d’une classe.

 Une relation de composition décrit une relation de


contenance et d’appartenance.

 Une dépendance est une relation unidirectionnelle


exprimant une dépendance sémantique entre les
éléments du modèle

13/04/2018 Mme Chalouah Anissa 29


Association
 Définition : relation entre au moins
deux classes qui entraînent des
connexions entre leurs instances.
 Notation UML : trait reliant les deux
classes en relation.

13/04/2018 Mme Chalouah Anissa 30


Association : nommage
 Les associations peuvent être nommées c.-à-d.
identifiées par un texte unique décrivant la
sémantique de l’association.

 Note : utiliser une forme verbale active (“travaille


pour”) ou passive (“employé par”).
 S’il y a ambiguïté, indiquer le sens de lecture avec une
flèche.

13/04/2018 Mme Chalouah Anissa 31


Association : rôle des extrémités(1)
 Les extrémités des associations peuvent être
qualifiées par des rôles.
 Un rôle indique comment une classe Source voit une
classe Destination.

 Le rôle est un pseudo-attribut de la classe source


(utilisé comme un attribut).
 Note : Ne pas utiliser à la fois le nommage d’une
association et les rôles des extrémités de la même
association.

13/04/2018 Mme Chalouah Anissa 32


Association : rôle des extrémités(2)
 Un rôle est surtout utile quand plusieurs associations
concernent les mêmes classes en qu’en conséquence,
de mêmes objets peuvent être liés par des modalités
différentes.

 Ici, des adresses peuvent être liées aux clients :


◦ Les adresses jouent le rôle d’adresses de livraison ou
d’adresses de facturation
◦ Rien n’empêche qu’une adresse soit à la fois une adresse de
livraison et un adresse de facturation

13/04/2018 Mme Chalouah Anissa 33


Multiplicité (1)
 Les multiplicités permettent de contraindre le
nombre d’objets intervenant dans les instanciations
des associations. On en place de chaque côté des
associations.
 Une multiplicité d’un côté spécifie combien d’objets
de la classe du côté considéré sont associés à un objet
donné de la classe de l’autre côté.
 Syntaxe : min..max, où min et max sont des nombres
représentant respectivement les nombre minimaux
et maximaux d’objets concernés par l’association.

13/04/2018 Mme Chalouah Anissa 34


Multiplicité (2)
1 un et un seul (multiplicité par défaut)
0..1 zéro ou un
N exactement N
M..N de M à N
* zéro ou plus, de 0 à +∞
0..* zéro ou plus, de 0 à +∞
1..* un ou plus, de 1 à +∞

Exemples :
1..* : au minimum 1 mais sans maximum

1..2 : entre un et deux (mais jamais 0, par exemple)

* : autant qu’on le souhaite

13/04/2018 Mme Chalouah Anissa 35


Qualification
 Une qualification consiste à sélectionner un sous-
ensemble d'objets parmi l’ensemble des objets
qui participent à une relation.
 Le qualificatif est un attribut spécial (clé) qui
réduit la multiplicité effective d'une association.

13/04/2018 Mme Chalouah Anissa 36


Qualification
 Les associations "un à plusieurs" et "plusieurs à
plusieurs "peuvent être qualifiées.
 Le qualificatif caractérise l'ensemble d'objets à
l'extrémité "plusieurs ".

13/04/2018 Mme Chalouah Anissa 37


Classe association
 Les attributs d’une classe dépendent
fonctionnellement de l’identifiant de la classe.
 Parfois, un attribut dépend fonctionnellement
de 2 identifiants, appartenant à 2 classes
différentes.
 Dans ce cas, l’association est dite « porteuse
d’attributs ».
 Une association porteuse d’attributs est
appelée classe-association.

13/04/2018 Mme Chalouah Anissa 38


Classe association
 Une classe-association qui ne participe pas à d’autres
relations avec d’autres classes peut ne pas porter de
nom.

 Lors de la conception, une classe-association peut


être remplacée par une classe intermédiaire.

13/04/2018 Mme Chalouah Anissa 39


Association 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.

13/04/2018 Mme Chalouah Anissa 40


Association réflexive
 Parfois, les deux extrémités de l'association
pointent vers la même classe. Dans ce cas,
l'association est dite réflexive .

13/04/2018 Mme Chalouah Anissa 41


Contraintes sur les associations
 Les contraintes sont des expressions qui
précisent le rôle ou la portée d'un élément de
modélisation (elles permettent d'étendre ou
préciser sa sémantique).

 Dans le langage UML, une contrainte est une


règle de gestion exprimée entre { }.

13/04/2018 Mme Chalouah Anissa 42


Contraintes sur les associations
Contrainte d’inclusion
 elle permet de préciser qu’une collection est
incluse dans une autre.

 La personne qui joue le rôle de directeur de


comité fait forcément partie des membres de
la comité.

13/04/2018 Mme Chalouah Anissa 43


Contraintes sur les associations
Contrainte d’exclusion:
 elle permet de préciser qu’une instance
d’association exclut une autre instance.

13/04/2018 Mme Chalouah Anissa 44


Contraintes sur les associations
Propriétés sur extrémités d’associations
 {variable} : instance modifiable (par défaut)
 {frozen} : instance non modifiable
 {addOnly} : de nouveaux liens peuvent être ajoutés
depuis un objet de l'autre côté de l'association mais
non supprimés.

13/04/2018 Mme Chalouah Anissa 45


Propriétés sur extrémités
d’associations : Exemple

Ce diagramme exprime que :


 une personne est née dans un pays, et que cette association ne peut
pas être modifiée {frozen} ;
 une personne a visité un certain nombre de pays, dans un ordre
donné {ordred}, et que le nombre de pays visités ne peut que croître
{addOnly} ;
 une personne aimerait encore visiter toute une liste de pays, et que
cette liste est ordonnée {ordered}(probablement par ordre de
préférence).
13/04/2018 Mme Chalouah Anissa 46
Association dérivée
 Une association dérivée est une association qu’on
peut déduire à partir d’autre association existantes.

13/04/2018 Mme Chalouah Anissa 47


Navigabilité des associations
 Par défaut, les associations sont navigables dans les
deux directions.
 Une association peut ne nécessiter qu'un seul sens de
navigation. Ceci est représenté par une flèche porté
par le rôle vers lequel la navigation est possible.

 Les objets instances de A voient les objets instances


de B. Mais pas le contraire.

13/04/2018 Mme Chalouah Anissa 48


Navigabilité des associations :
Exemples

 Les électeurs voient le candidat pour lequel il votent.


Mais le candidat ne voient pas les électeurs.

 Un segment se construit à partir de 2 points. Le


segment doit donc avoir connaissance des points qui
le forment.
 Un point n’a pas d’idée sur le segment à qui il
appartient.
13/04/2018 Mme Chalouah Anissa 49
Agrégation
 Une agrégation est un cas particulier d’association
non symétrique exprimant une relation de
contenance.
 Les agrégations n’ont pas besoin d’être nommées :
implicitement elles signifient « contient », « est
composé de ».

Une agrégation dénote une relation d'un ensemble à ses parties.


L'ensemble est l'agrégat et la partie l'agrégé.

13/04/2018 Mme Chalouah Anissa 50


composition
 Une composition est une agrégation plus forte
impliquant que :
 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 n'appartient jamais à plus d'une
instance de l'élément composite.

13/04/2018 Mme Chalouah Anissa 51


Généralisation (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).

13/04/2018 Mme Chalouah Anissa 52


Héritage entre classes

13/04/2018 Mme Chalouah Anissa 53


Contraintes sur les relations de
généralisation
{complete} / {incomplete}
 {complete} : une contrainte complète précise qu’on
ne peut pas rajouter une classe spécialisée à une
classe de base(l’ensemble des sous-classes ont été
répertoriée).
◦ Ex : La spécialisation de la classe « Personne » par les sous-
classes « Hommes » et « Femmes » est complète
puisqu’aucune autre classe ne peut être ajoutée.
 {incomplete} : indique qu’i existe d’autre sous-
classes qui peuvent être introduite dans la
généralisation
◦ Ex: Les sous-classes « Math », « Histoire » et « Géo »
représentent une gé

13/04/2018 Mme Chalouah Anissa 54


Contraintes sur les relations de
généralisation
{disjoint} / {overlapping}
 {disjoint} : un objet ne peut appartenir
qu’à une seule classe spécialisée.
 {overlapping} : indique qu’une
instance de la super-classe est
l’instance de deux ou plusieurs sous-
classes,
 Par défaut une généralisation est
{disjoint,complete}
13/04/2018 Mme Chalouah Anissa 55
Contraintes sur les relations de
généralisation

13/04/2018 Mme Chalouah Anissa 56


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.

 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.
13/04/2018 Mme Chalouah Anissa 57
Classes abstraites
 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
communes.
 En UML, une classe abstraite se note en italique ou
bien porte la mention {abstract}.

13/04/2018 Mme Chalouah Anissa 58


Interface

 Une interface est définie en UML comme une classe,


avec les mêmes compartiments. On ajoute le
stéréotype interface avant le nom de l'interface.

 Les classes implémentant une interface doivent


implémenter toutes les opérations décrites dans
l'interface

13/04/2018 Mme Chalouah Anissa 59


Implémentation d’une interface
 Une relation d'implémentation est le type spécial de la
relation de généralisation. Une implémentation est un lien
d'héritage indiquant qu'une classe enfant implémente une
interface parent.
 Une implémentation est représentée graphiquement sous la
forme d'une ligne dirigée de pointillés avec une grande tête de
flèche fermée, pointant sur l'interface parent :

13/04/2018 Mme Chalouah Anissa 60


Construction du Diagramme de
classe
1) Trouver les classes du domaine étudié
◦ Souvent, concepts et substantifs du domaine.
2) Trouver les associations entre classes
◦ Souvent, verbes mettant en relation plusieurs classes.
3) 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.
4) Organiser et simplifier le modèle en utilisant
l'héritage
5) Tester les chemins d'accès aux classées
6) Itérer et raffiner le modèle.

13/04/2018 Mme Chalouah Anissa 61


Chapitre 3 : Diagramme de classes et Diagramme d’objets

DIAGRAMME D’OBJETS

13/04/2018 Mme Chalouah Anissa 62


Diagramme d’objets : Définition
 Représente des objets et leurs liens pour donner une
vue figée de l’état 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 ou
des connaissances non généralisables qui ne sont pas
modélisés dans un diagramme de classe

Le diagramme de classes modélise des règles et


le diagramme d'objets modélise des faits.

13/04/2018 Mme Chalouah Anissa 63


Représentation des objets
 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).

13/04/2018 Mme Chalouah Anissa 64


Diagramme de classes et
diagramme d'objets
 Le diagramme de classes contraint la structure et les
liens entre les objets.

13/04/2018 Mme Chalouah Anissa 65


Diagramme de classes et
diagramme d'objets
Diagramme cohérent avec le Diagramme incohérent avec le
diagramme de classes diagramme de classes

13/04/2018 Mme Chalouah Anissa 66


Liens
 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é.

Naturellement, on ne représente pas les multiplicités


qui n'ont aucun sens au niveau des objets.

13/04/2018 Mme Chalouah Anissa 67


Relation de dépendance
d'instanciation
 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.

13/04/2018 Mme Chalouah Anissa 68


Bibliographie
 Analyse, Conception des Systèmes Informatiques
(Olivier Boissier)(SIMMO/ENSM.SE)
 Introduction à UML2 (Pierre Gérand)(IUT
Villetaneuse)
 Modélisation orientée objets avec UML (Guillaume
Laurent) (ENSMM )
 UML par la pratique (

13/04/2018 Mme Chalouah Anissa 69

Vous aimerez peut-être aussi