Diagramme de classes
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 1
Introduction
• Le diagramme le plus exploité pour la génération de code
• Roundtrip engineering :
Modéliser Générer Modifier Modéliser ...
• Maintenir la cohérence entre le modèle et le source est un
problème difficile
• Veillez à respecter les règles du langage au niveau du
modèle (nom de classe, constructeurs, types de bases,...)
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 2
Rappels
• Objet
– Identité
– Etat
– Comportement
• Encapsulation
• Abstraction
• Classes
• Héritage
• Polymorphisme
– Surcharge
– Généricité
– Liaison dynamique
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 3
Classes
Personne Personne Personne Personne
Nom CalculerAge Nom
NeLe : Date
CalculerAge
Un objet ne peut
pas être un attribut
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 4
Diagrammes de classes : Classes
Nom
{propriétés}
Vis Nom Attribut[Multip]: Type=Valeur {propriétés}
Stéréotype Vis Opération(Paramètres) : Type Retour {propriétés}
‘::’ : opérateur de portée
Propriété : Attribut valué ( au métamodèle) {Auteur=A. K} ou
description; contraintes (OCL), pre/post conditions; Exceptions...
Visibilité: Public (+) Protégé (#) Privé(-) Paquetage (~)
Multiplicité : 0..N {Propriété: ordered, unique, required, ...}
Les attributs et opérations de classes sont soulignés
Stéréotype : « create », « request », ...
Paramètres : [in | out | inout] Nom : Type=Valeur Défaut
Attribut ou association dérivé : /Age
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 5
Classes
• D’autres compartiments peuvent être ajoutés
Nom
Attributs
Opérations
Exceptions
• Une classe peut contenir une autre classe
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 6
Stéréotypes issus des Business Process
Entité (Commande, Article,…)
Élément du domaine, état important
Gère sa propre intégrité
Peu de connaissance sur son entourage(réutilisable)
Classe contrôleur
État très simple
régit le comportement de son entourage
Classe correspondant à une interface
« Entité »
Nom_classel
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 7
Classes
• Les notions de classe et d’ensemble sont proches
• La spécification d’une classe est analogue à la
description en compréhension d’un ensemble
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 8
Classes
X
Propriété caractéristique de X
:X :X
P(x)
:X
:X :X :X :X
:X :X
:X :X
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 9
classe utilitaire
• Stéréotype <<utilitaire>> (« utility »)
• Tous les membres (donnés et opérations) sont statiques
• Correspond à une bibliothèque de fonctions
<<utilitaire>>
Math
sin(x:réel):réel
cos(x:réel):réel
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 10
classe énumération
• Stéréotype <<enumeration>>
• Les attributs ne sont définies que par des valeurs
correspondant à des constantes
• Il n’y a pas de comportement
• Correspond au type enum
<<enumeration>>
Feu
Rouge
Jaune
vert
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 11
Classes génériques
Type,Variable
Une Classe
« bind »
(UnType,Unevaleur)
LaClasse
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 12
classes d’interface
« Interface »
Nom Interface Nom Interface
Nom Interface
Client Implantation
Le client requière l’interface
‘Nom Interface’ qui lui est
fournie
Implantation
Implantation
• UML 2.0 autorise des ‘attributs abstraits’ (non implantés)
• Les interfaces peuvent être imbriquées
• Par la Exemple : Interface de pile avec multiple réalisation
• Notation DCOM
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 13
Associations
Relations structurelles entre objets
Association binaire
Emploie Personne
Société
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 14
Association : Rôle
Employeur Employés
Société Personne
Le rôle est particulièrement utile lorsque
l’association est réflexive
Père de
Personne
Fils de
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 15
Association : Rôle (UML 1.4)
•Le rôle peut avoir une visibilité +,- ou #
•Le rôle peut avoir un type, dans ce cas la classe réalise
plusieurs interfaces et le type limite celle qui est utilisée
Souris Clavier
+Gest : Souris
Fenêtre Gestionnaire
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 16
Association : Cardinalités
1..*
Société Personne
• 0..1
• M..N Combien d’occurrences de
• * 0..N personne peuvent être
• V1, V2, V3 associées à une occurrence
de Société ?
Réponse : Au minimum 1
au maximum N
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 17
Associations : contraintes sur les cardinalités
1..*
Hiérarchie Grade
{ordred}
•Il existe une relation d’ordre sur les grades
•Les opérations d’insertion de suppression, etc...
doivent préserver cette relation
•Plus généralement différentes contraintes peuvent être
exprimées
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 18
Association : Qualificateur
*
Société Directeur : bool Personne
Société N° CNSS Personne
• Réduit la cardinalité, permet un accès indexé, société
requière l’accès indexé
• Le qualificateur est un attribut de la classe qui va faire
l’objet de l’accès indexé
• Lorsque la cardinalité réduite équivalent à une clé
• Implantation : table de hashage, map, ...
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 19
Association : Contraintes
Organise
Personne Concours
{xor}
Participe
• On ne peut pas avoir simultanément le lien ‘Organise’ et
le lien ‘Participe’ entre un objet personne et un objet
concours
• Une contrainte sur plusieurs lien passe par une
annotation
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 20
Association dérivée
1..* 1..*
Société Personne Pointage
1..*
/Les pointages
• Correspond à une association transitive
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 21
Association : Navigation
Société Personne
Société x Personne
• Dans le premier cas la navigation société vers personne
doit être supportée, la navigation de personne vers
société est indéfinie
• Dans le deuxième cas la navigation de personne vers
société ne sera pas supportée
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 22
Associations porteuses d’information
* 1..*
Commande Article
LigneCmde
QuantitéCmdée
• L’information portée par l’information est représentée
dans une classe ‘LigneCmde’
• La classe représente un couple (Commande, Article)
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 23
Classe association
* 1..*
Commande Article
LigneCmde * * Récapitulatif
Quantité
Ajout()
Suppression()
• L’association a un comportement et participe à d’autres
associations
• Une ligne de commande peut-elle partagée par plusieurs
commandes ?
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 24
Réification
u v * 1..*
C1 C2 Cmde Article
C3
LigneCmde
1 1..*
C1
1 v
C3 Cmde LigneCmde
*
u
1 1
C2 Article
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 25
Associations n-aires
Relations structurelles entre objets
* *
Professeur Etudiant
Salle
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 26
Agrégation
1 *
Paragraphe Ligne
* 2..*
Droite Point
• Composé – composant
• Interfaçage, coordination des composants
• Propagation
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 27
Composition
1 5 1..*
Voiture Roue Vol Dossier
Voiture Voiture
LesRoues[5] : Roue
5 UML 1.4
Roue
• Forme forte d’agrégation physique
• Le composite joue le rôle d’interface pour les éléments agrégés
• L’élément agrégé n’est pas partagé par plusieurs composite (0..1)
• L’élément agrégé n’existe pas en dehors du composite
(création/destruction)
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 28
Généralisation
Article Article
Textile Luxe Alimentaire
Textile Luxe ...
•Héritage de propriétés et d’attributs
publiques ou protégés
•Extension, Redéfinition
•Héritage/Redéfinition des associations
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 29
Sous-classes
X
Propriété caractéristique de X
Y Z
Propriété caractéristique de Y Propriété caractéristique de Z
:X :X
:X
:X :Y :z :z
:y
:Y
:y
:z
P(x)
P(y) y z P(z)
X
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 30
Généralisation : discriminant
« PowerType » Véhicule
Motorisation
Milieu
VVoile VMoteur VTerrestre VMarin
Le discriminant (ou powertype) explicite le(s) critère(s) qui
ont permis de dériver une spécialisation
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 31
Généralisation
VMarin VAérien VTerrestre
Hovercraft
Héritage multiple
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 32
Généralisation
X
P ropriété c aractéris tique de X
Y Z
P ropriété cara ctérist iq ue de Y P ropriété c arac téristique de Z
T T P(T) P(Y) P(z)
P ropriété c arac téristique de T
:X
:X :X
:X :Y :Z :Z
:T
:Y
:Y
:Z P(x)
P(Y) Y z
P( z )
X
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 33
Collision de noms
T
A
X Y X Y
A A A de T A de T
Z Z
A de X A de T par X
A de Y A de T par Y
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 34
Classe abstraite
Le nom des
Classe abstraite classes abstraites
est en italique
Classe concrète A Classe concrète B
:Y :z :z
:y
:Y
:y
:z
P(x)
P(y) y z P(z)
X
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 35
Généralisation
Liste Tableau
<<implémentation>>
Liste Fixe
Liste Fixe ne publie pas l’interface de Tableau, elle s’en
sert uniquement pour l’implantation de la liste
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 36
Généralisation : Contraintes
Article
{disjoint}
Luxe Alimentaire
{overlapping, incomplete}
Unité Pack Pâtes Conserves
• Overlapping, disjoint, complete, incomplete
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 37
Autres
• Port : moyen de communication entre Deux classes
indépendamment de leurs technologies d’implantation, 2
classes si elles ont des ports compatibles pourront
communiquer même si elles sont implantées dans des
langages différents
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 38
Covariance
A nim al
B ipède Quadrupède
Herbivore Carnivore Herbivore Carnivore
A nim al
Covarian ce
Carnivore Herbivore
B ipède Quadrupède B ipède Quadrupè de
Covarianc e
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 39
Délégation
• Elimination de la covariance
A nim al
S tation Nourriture
B ipède Quadrupède Herbivore Carnivore
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 40
De la difficulté de classer
• Dépendant du point de vue
• Bien discriminer les objets
• Des exceptions
• Stables et extensibles
• Covariance
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 41
Principe de substitution (1)
• Classification ou non ?
« Il doit être possible de substituer n’importe quel
objet instance d’une sous-classe à n’importe quel
objet instance d’une super-classe sans que la
sémantique du programme écrit dans les termes de
la super-classe ne soit affectée. » (Barbara Liskov)
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 42
Principe de substitution (2)
CP
:CP :CP
:CP :CP
:CP
:CE :CP
CE
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 43
Non respect du principe de substitution
Oiseau
P lum es
B ec Voler()
{
V oler() M ettre la tête dans le sable Le m oineau
} s 'envole
M és ange M oineau A ut ruche
: M oineau
1: V oler La m és ange
s 'envole
2: V oler
: Sauve teur : M ésan ge
3: V oler
L'autruche se
c ac he la tête
: A utruc he
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 44
Implantation (1)
Class Classe {
Classe private:
Attributs Attributs
Public:
Méthodes Méthodes
}
SousClasse
Class SousClasse : public Classe {…}
Répertoire
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 45
Implantation (2)
C1 C2
class C2 {
Class C1 { private:
private: …
C2 LeC2 }
}
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 46
Implantation (3)
C1 C2
Class C1 { class C2 {
private: private:
C2 LeC2 C1 LeC1
} }
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 47
Implantation (4)
0,1
C1 C2
Class C1 { class C2 {
private: private:
C2 *LeC2 C1 LeC1
} }
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 48
Implantation (5)
*
C1 C2
Class C1 { class C2 {
private: private:
Collection<C2> LesC2 C1 LeC1
} }
ordered unique structure de données
false true Ensemble
true true Ensemble ordonné
false false Multi-ensemble (bag)
true false Séquence
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 49
Implantation
• La composition s’implante par une classe interne privée
en Java
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 50
Implantation (6)
C1 Collection<C2>
C2
UnType
Collection
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 51
Implantation (7)
<<persistant>> <<persistant>>
C1 C2
<<persistant>>
C3
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 52
Implantation (7)
Comme dans E/A :
• C1, C2, C3 Relations
•Associations suivants cardinalités
•Héritage : Reférentiation ou Propagation ou les deux
• Méthodes deviennent des procédures stockées ou des
traitements
Plus aucun lien avec l’objet
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 53
Implantation (8)
SGBDR + Langage Objet
<<persistant>> C1
C1
ProxyC1
SGBDR
Adel KHALFALLAH - Génie logiciel - Méthodologies de conception - Institut Supérieur d’Informatique - 54