Vous êtes sur la page 1sur 32

Chapitre 3

Les Diagrammes de classes (Partie II)

TD2: Les Diagrammes de Classes Partie II 1


Diagrammes de Classe

Les diagrammes de classes sont la représentation de la structure


statique en terme de classes et de relations. Les objets sont les
instances des classes et les liens les instances des relations.

TD2: Les Diagrammes de Classes Partie II 2


La visibilité
La visibilité d’une caractéristique détermine si
d’autres classes peuvent l’utiliser. En UML, on
utilise 3 niveaux de visibilité.
1. public
2. protected
3. private

TD2: Les Diagrammes de Classes Partie II 3


Règles de Visibilité
- privé ( l'élément n'est visible que dans la classe)
+ public (l'élément est visible par toutes les autres
classes )
# protégé ( visible par la classe et ses sous classes )

TD2: Les Diagrammes de Classes Partie II 4


Règles de visibilité – niveaux

Règles de visibilité

+ Attribut public
# Attribut protégé
- Attribut privé

+ Opération publique()
# Opération protégée
- Opération privée

TD2: Les Diagrammes de Classes Partie II 5


Les relations entre les classes
• A chaque famille de liens entre objets
correspond une relation entre les classes de ces
mêmes objets.

• 2 sortes de relations entre les classes


– Les associations
– Les agrégations

TD2: Les Diagrammes de Classes Partie II 6


Association
Les associations en UML sont représentées par
des traits continus entre les classes. Pour plus de
renseignements, il est utile de nommer les
associations. Pour cela, le nom de ces dernières
se met au milieu de la ligne qui symbolise
l'association, en italique sous forme verbale en
général. Le sens de lecture de l'association peut
être précisé au moyen des symboles " < " et
" > ".

TD2: Les Diagrammes de Classes Partie II 7


Association

De même, pour plus de compréhension de l'association, on


peut indiquer à chaque extrémité le rôle qui décrit comment
une classe voit une autre classe au travers d'une association.
Le nommage des rôles est sous forme nominale.

TD2: Les Diagrammes de Classes Partie II 8


Multiplicité des Associations
On peut aussi préciser la multiplicité des
associations. Ceci indique combien d'objets de la
classe considérée participent à la relation et
peuvent être liés avec un objet de l'autre classe.
UML définit la syntaxe suivante : 1 un et un seul

0..1 zéro ou un

M .. N de M à N

* Plusieurs

0..* de zéro à plusieurs

1..* de un à plusieurs

TD2: Les Diagrammes de Classes Partie II 9


Association: Notion de Rôle
• Il est possible de préciser le rôle d’une classe au
sein d’une association: un nom de rôle peut être
spécifié de part et d’autre de l’association.

TD2: Les Diagrammes de Classes Partie II 10


Association: Les contraintes

Pour les associations, on peut introduire des contraintes. Une


contrainte est une relation sémantique entre des éléments du
modèle qui spécifie les conditions et les propositions qui doivent
être respectées. Certains types de contraintes (comme une
contrainte d'association "ou") sont prédéfinis dans UML, les
autres devant être définis par les utilisateurs (ex : ordonnée ).
Une contrainte est représentée par un texte entre crochets ( {} ).
UML ne prescrit pas le langage dans lequel la contrainte doit
être écrite.

TD2: Les Diagrammes de Classes Partie II 11


Association: les restrictions
La restriction des associations est possible avec la
notation UML. La restriction consiste à
sélectionner un sous ensemble d'objets qui
participent à l'association. La sélection des
objets est caractérisée par un attribut que l'on
appelle clé. Tous les objets de la classe qui
vérifient la clé feront partie de l'association.

TD2: Les Diagrammes de Classes Partie II 12


L’agrégation
Une relation exprime une forme de couplage entre
abstractions. La force de ce couplage dépend de la
nature de la relation dans le domaine du problème. Par
défaut, l’association représente un couplage faible, les
classes associées restant relativement indépendantes
l’une de l’autre. L’agrégation est une forme
particulière d’association qui exprime un couplage plus
fort entre classes. Une des classes joue un rôle plus
important que l’autre dans la relation. L’agrégation
permet de représenter des relations de type maître et
esclaves, tout et parties ou composés et composants.

TD2: Les Diagrammes de Classes Partie II 13


Représentation

TD2: Les Diagrammes de Classes Partie II 14


Agrégation: La composition
• La composition est une forme d’agrégation avec
un couplage plus important. Ce couplage de
composition indique que les composants ne sont
pas partageables et que la destruction de
l’agrégat entraîne la destruction des
composants agrégés.
• La valeur maximale de multiplicité du côté du
conteneur ne doit pas excéder 1 puisque les
objets, instances de la classe des composants,
doivent tous appartenir au même objet
conteneur.
TD2: Les Diagrammes de Classes Partie II 15
Cardinalité des compositions (Composants)

Une galerie peut exister sans 0..1


être installée sur une voiture.

Une galerie ne peut exister que 1


comme partie d’une voiture.

Physiquement impossible! Un 0..*


composant ne peut être partie
de plus d’un composite.
Une galerie ne peut être
installée, simultanément, sur
plus d’une voiture.

TD2: Les Diagrammes de Classes Partie II 16


Cardinalité des compositions (Composite)

0..1 Une voiture n’est pas


obligatoirement équipée d’une
galerie.
La galerie peut être assimilée à
un attribut optionnel.

1 Toute voiture est équipée d’une


galerie.
La galerie peut être assimilée à
un attribut obligatoire.

0..* Une voiture peut être équipée


de plusieurs galeries.

TD2: Les Diagrammes de Classes Partie II 17


Généralisation
• La généralisation consiste à factoriser les
éléments communs d’un ensemble de classes
dans une classe plus générale appelée super-
classe. Les classes sont ordonnées selon une
hiérarchie; une super-classe est une
abstraction de ses sous-classes.

TD2: Les Diagrammes de Classes Partie II 18


Règles de généralisation (1)

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 instantiable en liens et,
de fait, ne porte aucune indication de multiplicité.

TD2: Les Diagrammes de Classes Partie II 19


Règles de généralisation (2)
• La généralisation ne porte ni nom particulier ni valeur
de multiplicité.
• 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.

TD2: Les Diagrammes de Classes Partie II 20


Généralisation multiple (1)
La généralisation - sous sa forme dite multiple –
existe également entre arbres de classes disjoints.

TD2: Les Diagrammes de Classes Partie II [PAM-00 p52] 21


Généralisation multiple (2)
Pour que la généralisation multiple puisse être
mise en œuvre, il faut que les langages de
programmation « objets » supportent l’héritage
multiple.
Dans notre exemple, comment le compilateur
peut-il garantir, lors de l’implémentation de la
classe T, qu’il n’y ait pas d’effet de bord ou de
conflit entre les propriétés pZ héritée de la
classe Z et pY héritée de la classe Y?
Par exemple, JAVA ne supporte pas l’héritage
multiple.
TD2: Les Diagrammes de Classes Partie II 22
Interface
• [BRJ-00] Une interface est un ensemble
d’opérations qui définissent la fonction d’une
classe ou d’un composant. Par conséquent, une
interface définit le comportement apparent de
cet élément. Elle peut représenter totalement ou
partiellement le comportement d’une classe ou
d’un composant et définit les spécifications des
opérations (c’est-à-dire leur signature), mais
jamais leur implémentation.

TD2: Les Diagrammes de Classes Partie II 23


Interface
[JLS-98 p84] … Une classe fille ne peut hériter que d’une
seule classe: Java n’admet que l’héritage simple, à la
différence d’autres langages, comme C++ qui autorisent
l’héritage multiple.
Les concepteurs du langage Java ont fait ce choix pour
éviter la complexité de gestion de l’héritage multiple qui,
dans certains cas, peut amener une classe à hériter
plusieurs fois d’une même superclasse.
Comme Smalltalk, Java n’admet que l’héritage simple.
Cependant , pour répondre à certaines situations, Java
admet une forme d’héritage multiple avec des classes très
particulières, que l’on appelle des interfaces.
TD2: Les Diagrammes de Classes Partie II 24
Représentation

UML permet de représenter les interfaces des classes ( qui décrit le


comportement visible de la classe) au moyen d'un cercle qui leur est
associé ou par une classe avec le stéréotype <<interface>>.

TD2: Les Diagrammes de Classes Partie II 25


Exemple

TD2: Les Diagrammes de Classes Partie II 26


Classe Abstraite
UML représente les classes abstraites par une
classe dont le nom est " classe abstraite " et est
notée en italique. Les classes abstraites ne sont
pas instanciable. Elles servent de spécification.

TD2: Les Diagrammes de Classes Partie II 27


Partionnement d’ensemble / Classe abstraite
• Une classe abstraite ne donne pas directement des
objets. Elle sert en fait de spécification plus abstraite
pour des objets instances de ses sous-classes. Le
principal intérêt de cette démarche est de réduire le
niveau de détails dans les descriptions des sous-classes.
Le nom d’une classe abstraite est en italique dans les
diagrammes de classes. T

:Y :Y
:Z
:Y :Z
:Y
Y
Z
TD2: Les Diagrammes de Classes Partie II 28
Exemple de classes abstraites

Classes
abstraites

Classes
concrètes

TD2: Les Diagrammes de Classes Partie II 29


Autres Types de Classes:
Classe paramétrable

Les classes paramétrables sont des modèles de classe. Ces


dernières doivent être instanciées avec des paramètres pour
obtenir une classe concrète.

TD2: Les Diagrammes de Classes Partie II 30


Autres Types de Classes: Classe
association
UML définit les classes associations qui ont pour but
d'ajouter des attributs et des opérations à l'association.
UML représente la classe associative par une classe
reliée par un trait en pointillé sur l'association
concernée.

TD2: Les Diagrammes de Classes Partie II 31


Autres Types de Classes:

Classe Utilitaire: Regrouper les éléments dans un


module sans construire une classe. Exemple
<<utilitaire>> math
Classe Active: Une classe qui possède son propre flot
d’exécution <<Thread>> ou <<Processus>>
On ajoute un compartiment pour préciser les signaux
ou les événements qu’elle traite

TD2: Les Diagrammes de Classes Partie II 32

Vous aimerez peut-être aussi