Vous êtes sur la page 1sur 12

Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.

SE

Analyse, Conception Objet Sommaire

• Définition

Diagrammes de Classes • Paquetages


• Classe
• Association
• Aggrégation
Une partie du matériau de ce cours est issue du cours de S.Galland (Stephane.Galland@emse.fr)
• Composition
Septembre 2003
• Généralisation
• Relation de dépendance
• Classe abstraite
• Interface
• Classe utilitaire

Sept.2003 1 Sept.2003 Sommaire– 2

Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Définition Utilisation

• Point central de la modélisation du système pour exprimer • Lors de l’analyse et de la conception:


sa structure statique. – Définitions formelles des objets qui composent le
• Représentation d’un ensemble de classes, d’interfaces et de système à partir des cas d’utilisation et des diagrammes
paquetages ainsi que leurs relations. d’interaction (séquences et collaboration).
– Bases conceptuelles pour les diagrammes
• Une classe décrit un ensemble d’objets (instances de la
d’état-transition, de déploiement, ...
classe).
• Lors de l’implantation :
• Une association décrit un ensemble de liens (instances de
l’association). – Génération automatique des structures statiques du
système (classes, relations, ...).

Sept.2003 Définition– 3 Sept.2003 Utilisation– 4


Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Paquetages Classe

• Définition : Mécanisme de partitionnement des modèles et de regroupement des • Définition : description d’un ensemble d’objets partageant les mêmes
éléments de modélisation. attributs, opérations, méthodes, relations et sémantiques.
• Chaque paquetage peut contenir un ensemble de diagrammes et/ou de
• Généralement, en fonction de l’objectif du diagramme, elle est décrite
paquetages.
par : un nom (obligatoire), des attributs, des opérations, des
• Chaque élément d’un paquetage possède un nom unique dans ce paquetage.
exceptions, ...
• Possibilité de définir des relations entre paquetages (dépendances, cf. plus loin).
• Un nom de classe est unique au sein du paquetage
Pack1
 Nom de paquetage::nom de la classe
Classe1 1..2 Pack1::Classe2
*
Pack2
• Rque : les objets sont représentés comme les classes avec leur nom
<<importe>>
Classe1 souligné.
InnerPack

Sept.2003 Paquetages– 5 Sept.2003 Classe– 6

Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Classe (suite) Stéréotype

• Un stéréotype permet d’étendre les classes déjà existantes en leur


• Représentation UML : donnant une signification sémantique différente.
Nom de classe
Nom de classe
Attributs
• Si la classe A est un stéréotype de la classe B, alors A se comporte
attribut1 comme B tout en ayant une signification sémantique différente.
attribut2

Nom de classe
Opérations • Mécanisme proche de la généralisation/spécialisation sauf qu’il permet
op1()
op2() le changement de sémantique.

• Représentation UML :

<<stéréotype>>
Nom de classe

Sept.2003 Classe (suite)– 7 Sept.2003 Classe (suite)– 8


Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Stéréotype (suite) Attribut

• Quelques stéréotypes prédéfinis : • Définition : propriété définie par un nom, un type et éventuellement une
valeur initiale.
énumération: classe définissant un ensemble d’identificateurs
formant le domaine de valeur d’un type. • Syntaxe UML :
utilitaire: classe réduite au concept de module et qui ne peut être [ visibilité ] nom attribut [ multiplicité ] :
instanciée. type attribut [ = valeur initiale ]
– visibilité : cf. plus loin.
acteur: classe modélisant un ensemble de rôles joués par un
acteur. – nom attribut : identificateur de l’attribut, unique au sein de la
classe.
interface: classe contenant uniquement une description des
– multiplicité : l’attribut représente un ensemble de valeurs;
opérations visibles.
exemple de tableau: Parents[ 1..2 ] : Personne.
exception: classe modélisant un cas particulier de signal : les
– valeur initiale : valeur prise par l’attribut lors de
exceptions.
l’instanciation de la classe (valeur en concordance avec le type de
l’attribut).

Sept.2003 Classe (suite)– 9 Sept.2003 Classe (suite)– 10

Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Attribut : Type Attribut : Type (suite)


• Mutabilité : contrainte quant aux possibilités de modificiation d’un
• type attribut : ensemble des valeurs pouvant être
attribut.
prises par l’attribut. La mutabilité peut être :
Il peut être : – {gelé} : attribut non modifiable (ou constante),
– une classe : Rectangle, Cercle, Personne, ... – {variable} : modifiable à tout moment (mutabilité par défaut),
– un type primitif : Entier, Chaı̂ne de – {ajoutUniquement} : seul l’ajout est possible (si multiplicité
caractères, Booléen, ... > 1)
Télévision Canal Bouton
– une expression complexe dont la syntaxe n’est pas
on/off : Bouton
précisée par UML : ensemble de n points, ... couleur : enum{ gris, noir }
marque : Chaîne <<énumération>>
télétexte : Booléen = Vrai TypeTV
chaînes [ 5.. * ] : Canal 16/9
type : TypeTV { gelé } 4/3

Sept.2003 Classe (suite)– 11 Sept.2003 Classe (suite)– 12


Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Attribut : attribut dérivé Opération

• Parfois des propriétés redondantes sont spécifiées lors de • Définition : spécification du comportement des instances de la classe.

l’analyse. • Cinq catégories d’opérations :


– les constructeurs qui créent les objets,
• Les propriétés entièrement dépendantes d’autres propriétés
– les destructeurs qui détruisent les objets,
peuvent être exprimées à l’aide d’attributs dérivés.
– les sélecteurs (opérations de consultation) qui renvoient tout ou
• Un attribut dérivé peut être traduit par une opération. partie de l’état d’un objet,
Rectangle Rectangle – les modificateurs qui changent tout ou partie de l’état d’un objet,
Longueur : Entier Longueur : Entier
Largeur : Entier { surface = Largeur : Entier renvoie
– les itérateurs qui visitent l’état d’un objet ou le contenu d’une
/Surface : Entier Longueur * Largeur } Surface() : Entier Longueur * Largeur structure de données contenant des objets.

Sept.2003 Classe (suite)– 13 Sept.2003 Classe (suite)– 14

Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Opération (suite) Opération : arguments

• Syntaxe UML : • arguments : description des valeurs nécessaire à l’opération.


[ visibilité ] nom opération ( [ arguments ] ) : • Syntaxe UML :
type retourné propriétés [ direction ] nom argument : type argument [ =
– visibilité : cf. plus loin. valeur par défaut ] [ , autres arguments ]
– nom opération : identificateur de l’opération, unique au sein de – valeur par défaut : valeur prise par l’argument si aucune
la classe. valeur n’est donnée lors de l’utilisation de cette opération.
– type retourné : type de la valeur retournée par l’opération; si – direction : UML définit trois directions pour les arguments
omis l’opération ne retourne aucune valeur. ∗ in (par défaut) : paramètre en entrée seule et non modifié par
l’exécution de l’opération,
∗ out : paramètre en sortie seule; l’appelant peut ainsi récupérer
des informations,
∗ inout : paramètre en entrée-sortie; l’argument est passé à
l’opération et modifiable.

Sept.2003 Classe (suite)– 15 Sept.2003 Classe (suite)– 16


Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Opération : propriétés Opération : implémentation


• UML définit cinq propriétés pour les opérations: • Spécification d’une pré-condition : condition qui doit être toujours
– requête [ = vrai | faux ] : si vrai (par défaut), l’opération vraie avant l’exécution de l’opération.
n’altère pas l’état de l’instance.
• Spécifciation d’une post-condition : condition qui est toujours vraie
– abstrait [ = vrai | faux ] : si vrai (par défaut), indique une
après l’exécution de l’opération.
opération non implémentée c-à-d, une opération dont l’implémentation
devra être obligatoirement réalisée par les classes filles. • Implémentation avec des diagrammes état-transition, des diagrammes
– estFeuille [ = vrai | faux ] : si vrai (par défaut), indique de collaboration, du pseudo-code, ...
une opération qui ne peut pas être réimplémentée par une classe fille.
Pile d’assiettes { <<pré−condition>>
– estRacine [ = vrai | faux ] : si vrai (par défaut), indique nombre_éléments > 0 }
qu’une opération est définie pour la première fois dans une hiérarchie de − nombre_éléments : Entier = 0
classes. + retirerSommet() : Booléen renvoie
– concurrence = séquentiel | gardé | concurrent : + nbrElements() : Entier nombre_éléments
précise le mécanisme d’exécution concurrente de l’opération.

Sept.2003 Classe (suite)– 17 Sept.2003 Classe (suite)– 18

Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Visibilité des membres Visibilité des membres (suite)

• UML définit trois niveaux de visibilité :


– public : l’élément est visible pour tous les <<visible>>
A <<visible>> B
clients/utilisateurs de la classe, noté par +.
+ attr_public : Entier
– protégé : l’élément est visible pour les sous-classes # attr_protégé : Booléen
− attr_privé : Chaîne
de la classe, noté par #.
+ op_publique() <<visible>>
– privé : l’élément est visible pour la classe seule, noté # op_protégée()
− op_privée()
par -.

C <<visible>>

Sept.2003 Classe (suite)– 19 Sept.2003 Classe (suite)– 20


Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Portée des membres Association


• UML définit deux niveaux de portée :
– portée d’instance (par défaut) : les éléments sont valides pour d’une • Définition : relation entre au moins deux classes qui
seule instance de la classe; les éléments n’ont aucune existance en entraı̂nent des connexions entre leurs instances.
dehors de l’instance.
• Représentation UML : trait reliant les deux classes en
– portée de la classe : les éléments sont toujours valides; ils ne sont
relation.
pas attachés à une instance particulière mais à une classe.

• Syntaxe UML : un élément ayant une portée de classe est souligné


+ Parents [ 1..2 ] : Personne Classe A Classe B
A
+ ID : Entier
+ nombre_instances : Entier

Sept.2003 Classe (suite)– 21 Sept.2003 Association– 22

Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Association : arité Association : arité (suite)

• Les association ont le plus souvent une arité binaire : deux Salle
1
classes en relation. Etudiant Enseignant
2..* 1
• Représentation UML des associations d’arité supérieure
Cours
(n-aire) : losange. début
fin
• Traduire une association d’arité n-aire en un ensemble
d’associations binaires.
Salle

• Note : la difficulté de trouver un nom différent pour chaque 1


1

extrémité d’une association n-aire est souvent le signe 2..*


<<association ternaire>>
Cours 1
Etudiant Enseignant
1 début 1
d’une association d’arité inférieure. fin

Sept.2003 Association– 23 Sept.2003 Association– 24


Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Association : nommage Association : rôles des extrémités

• Les associations peuvent être nommées c.-à-d. identifiées • Les extrémités des associations peuvent être qualifiées par des rôles.

par un texte unique décrivant la sémantique de • Un rôle indique comment une classe Source voit une classe
l’association. Destination.
Travaille pour Source A Destination B
Personne Société rôle de B

employeur
• Note : utiliser une forme verbale active (“travaille pour”) ou Société
employé
Personne

passive (“employé par”).


• Le rôle est un pseudo-attribut de la classe source (utilisé comme un
• Si ambiguı̈té, indiquer le sens de lecture avec les signes  attribut).
ou  (par défaut lecture de gauche à droite). • Note : ne pas utiliser à la fois le nommage d’une association et les rôles
Société
Travaille pour
Personne
des extrémités de la même association.

Sept.2003 Association– 25 Sept.2003 Association– 26

Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Association : multiplicité Association : multiplicité (suite)

• Définition : la multiplicité précise le nombre d’instances pouvant être • Multiplicités définies par UML :
liées par une extrémité d’association à une instance pour chaque autre 1 un et un seul (multipicité par défaut)
extrémité d’association.
0..1 zéro ou un
• Sous sa forme générale, elle s’exprime par une suite d’intervalles N exactement N
disjoints sur l’ensemble des entiers naturels. M..N de M à N
• Sous-estimer la multiplicité des associations réduit la flexibilité du * zéro ou plus, c.-à-d. de 0 à +∞
modèle, la sur-estimer conduit à des développements inefficaces. 0..* zéro ou plus, c.-à-d. de 0 à +∞
A B Société
employeur 0..*
Personne 1..* un ou plus, c.-à-d. de 1 à +∞
1..10 0..1 employé

Sept.2003 Association– 27 Sept.2003 Association– 28


Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Association : qualification Association : contraintes

• Clé d’accés sur l’ensemble des instances que représente l’association. • Expression de contraints sur les extrémités, entre associations, . . . (cf.
cours OCL).
Plateau Plateau
1
1 Abscisse Personne Compte
0..*
{ordonné}
Ordonnée
Secteur
1
PC portable {ou−exclusif}

Batterie
1..n 1
Case Case Parents d’élèves
*
Classe
{sous−ensemble} Personne
d’école
*

Délégués

Sept.2003 Association– 29 Sept.2003 Association– 30

Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Association : classe-association Association : classe-association (suite)

• Si une association possède des propriétés ou des opérations, il est • Lors de la conception, une classe-association peut être
possible de la qualifier à l’aide d’une classe-association.
remplacée par une classe intermédiaire.
• Une classe-association possède les mêmes caractéristiques que les
associations et les classes.
réalise
Etudiant Travail
1..* 0..*
m
A n B

note : 0..20

attribut
• Une classe-association qui ne participe pas à d’autres relations avec
d’autres classes peut ne pas porter de nom.
m C n
A B
attribut

Sept.2003 Association– 31 Sept.2003 Association– 32


Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Aggrégation Composition

• Définition : forme spéciale d’association exprimant une relation de • Cas particulier d’aggrégation. La classe ayant le rôle prédominant est la
composition entre aggrégats (part-whole). classe composite ou classe conteneur.
• Association irréflexive, antisymétrique dans laquelle une des • La composition implique :
extrémitiés joue un rôle prédominant, pouvant être récursive.
– la durée de vie des composants est la même que celle du composite.
• Permet de modéliser les contraintes d’intégrité et de désigner les
– la multiplicité du côté du composite prend ses valeurs dans 0 ou 1.
aggrégats comme garant de ces contraintes.
• La composition et les attributs sont sémantiquement équivalents.
• A travers une aggrégation, il est possible de représenter :
Composite Composant
– la propagation des valeurs d’attributs d’une classe vers l’autre; 0..1 *

– une action sur une classe qui implique une action sur une autre
Voiture m
classe (ex: copie profonde); Voiture Moteur
m : Moteur 1
– une subordination des objets d’une classe à ceux d’une autre.
propriétaire
Personne Immeuble
1..* 0..*
Sept.2003 Aggrégation– 33 Sept.2003 Composition– 34

Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Généralisation Généralisation : simple

• La généralisation simple est une relation binaire.


• Définition : relation (irréflexive, antisymmétrique, transitive) entre une
classe plus générale et une classe plus spécifique (signifie “est un” ou • Représentation UML : flèche triangulaire blanche orientée vers la
“est une sorte de”). Ce n’est pas une association. classe la plus générale.

• Exemple : un animal est un concept plus général qu’un chat ou un Animal

chien. Inversement un chien est un concept plus spécialisé qu’un


Chien Chat Cheval
animal. La classe Animal est une généralisation de la classe Chat ou
la classe Chien. La classe Chien est une spécialisation de la classe
Animal
Animal.
• L’élément plus spécifique peut contenir des informations qui lui sont Chien Chat Cheval
propres, à condition que ces informations et la description des éléments
plus généraux soient totalement cohérentes.
• Deux types de généralisation : simple ou multiple.

Sept.2003 Généralisation– 35 Sept.2003 Généralisation– 36


Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Généralisation : simple (suite) Généralisation : simple (suite)

• La classe la plus générale peut être nommée : “classe • Les sous-classes héritent des attributs, des opérations, des
mère”, “classe parent”, “superclasse”, “classe de base”. relations et des contraintes définies dans la classe mère.
• La classe la plus spécialisée peut être nommée : “classe • Héritage: mécanisme permettant à une classe d’utiliser les
fille”, “classe enfant”, “sous-classe”, “classe dérivée”. membres de sa classe mère sans avoir à les redéfinir.
• La classe la plus élévée dans la hiérarchie (pas de
Animal
# âge : Entier = 0
généralisation) est souvent nommée “classe racine”. + mange()

Chat

+ anniversaire() { âge :=
âge + 1; }

Sept.2003 Généralisation– 37 Sept.2003 Généralisation– 38

Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Polymorphisme Généralisation : multiple


• Définition : mécanisme permettant à une classe fille la spécialisation
• Définition : mécanisme permettant à une classe d’avoir
d’opérations.
plusieurs classes mères.
<<énumération>> Animal
Type_Alimentation
Omnivore + mange() : Type_Alimentation renvoie • Les superclasses n’ont pas forcément d’ancêtres communs.
Carnivore Omnivore
Herbivore Véhicule

Lion Vache Humain


Tapis Aérien
+ mange() : Type_Alimentation + mange() : Type_Alimentation

Tapis volant
renvoie renvoie
Carnivore Herbivore
• Tapis volant hérite des propriétés de Tapis et de
• L’exécution de l’opération mange() déprendra du type réel de l’objet : Aérien.
Lion::mange() pour un Lion et Animal::mange() pour un Humain.

Sept.2003 Généralisation– 39 Sept.2003 Généralisation– 40


Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Relation de dépendance Relation de dépendance (suite)

• Définition : relation unidirectionnelle indiquant qu’un changement dans la cible • Stéréotypes prédéfinis dans UML pour les relations de dépendance :
(fournisseur) provoque un changement dans la source (client). – Liaison : lie
• Relation non structurelle existant entre plusieurs éléments. – Utilisation : utilise, appelle (une opération source appelle
• Représentation UML : une flèche pointillé éventuellement stéréotypée. une autre opération cible), crée (une instance de la classe source crée
une instance de la classe cible), instancie (une opération de
• Quatre types de relations de dépendances : l’élément source crée une instance de l’élément cible), instance
Abstraction: relation entre éléments qui représentent un même concept à de (l’élémént source est une instance de l’élément cible).
différents niveaux d’abstraction ou selon des points de vue distincts; – Permission : ami (permet à l’élément source d’ignorer la propriété de
Liaison: dépendance entre une classe paramètrable (cible) et une classe visibilité de l’élément cible),
paramètrée (source);
– Abstraction : dérive (un élément source est défini ou calculé à
Permission: l’élément source a le droit d’accéder à l’espace de nommage de partir d’un élément cible), raffine relation de dépendance entre
l’élément cible; deux éléments à des niveaux sémantiques différents, réalise :
Utilisation: l’élément source requiert la présence d’un élément cible. l’élément source implémente la spécification désignée par l’élément cible.

Sept.2003 Relation de dépendance– 41 Sept.2003 Relation de dépendance (suite)– 42

Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Classe abstraite Classe abstraite (suite)

• Définition : classe non instanciable définissant au moins un mécanisme général • On définit une classe abstraite lorsque :
instanciable par des classes filles.
– il est impossible de connaı̂tre l’implantation d’une méthode
• Représentation UML : définition de la classe avec la propriété {abstrait}
(abstractisation d’une opération).
ou si une de ses opérations (héritée ou non) possède la propriété {abstrait
Exemple : l’opération manger() de la classe Animal n’a pas de
= vrai}.
sens sémantique propre; il s’agit d’une propriété existant chez tous
<<énumération>> Animal Classe A
Type_Alimentation { abstrait } les animaux; il est impossible de préciser le comportement de ce
Omnivore + mange() : Type_Alimentation {abstrait}
Carnivore service au niveau de la classe Animal.
Herbivore
– l’instanciation d’une classe n’a aucun sens sémantique ou pratique.
Lion Vache Humain

+ mange() : Type_Alimentation + mange() : Type_Alimentation + mange() : Type_Alimentation

renvoie renvoie renvoie


Carnivore Herbivore Omnivore

Sept.2003 Classe abstraite– 43 Sept.2003 Classe abstraite (suite)– 44


Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Interface Interface (suite)

• Définition : description d’un ensemble d’opérations utilisées pour spécifier un


service offert par une classe.
• Ne contient ni attribut, ni association, ni implémentation des opérations (les <<interface>>
opérations sont abstraites). Crédit
Entreprise <<utilise>>
• Une classe réalisant une interface doit :
<<réalise>>
– soit implémenter les opérations de l’interface, <<utilise>>
– soit définir les opérations de l’interface comme des opérations abstraites Banque
Client Crédit
(implémentables par les classes filles).
• Représentation UML : <<utilise>> <<interface>>
– classe ayant le stéréotype interface, ou par un cercle pour faire Assurance <<réalise>>
référence à l’interface utilisée dans la classe,
mensualité() : Réel
– flèche d’héritage en pointillés pour la réalisation d’une interface par une
classe,
– flèche de dépendance en pointillés pour l’utilisation.
Sept.2003 Interface– 45 Sept.2003 Interface (suite)– 46

Diagrammes de classes SIMMO/ENSM.SE Diagrammes de classes SIMMO/ENSM.SE

Classe utilitaire Pour en savoir plus ...

• Définition : définition d’une classe dont tous les membres


“Modélisation objet avec UML”. Muller, Gaertner. 2000. Éditions Eyrolles (http://www.editions-
ont une portée de classe  les attributs et les opérations eyrolles.com/).

deviennent des variables et des procédures globales.


“Le guide de l’utilisateur UML”. Booch. 2000. Éditions Eyrolles.
• Une classe utilitaire ne peut pas être instanciée.
• En Java, une classe utilitaire correspond à une classe qui
“UML en action – De l’analyse des besoins à la conception en Java”. Roques. 2000. Éditions
ne contient que des membres statiques. Eyrolles.

• Représentation UML : classe ayant le stéréotype


utilitaire. “Intégrer UML dans vos projets”. Lopez. 1997. Éditions Eyrolles.

<<utilitaire>>
Math

+ sin(Degré) : Réel
+ cos(Degré) : Réel
Sept.2003 Classe utilitaire– 47 Sept.2003 Pour en savoir plus ...– 48