megaplanet
UML :UML :Diagrammes de ClassesDiagrammes de Classes
Concepts de baseConcepts de base
Objets, ClassesObjets, Classes
Lien, Association, CardinalitéLien, Association, Cardinalité
GénéralisationGénéralisation
megaplanet 2
Concepts de baseConcepts de base
� ClasseClasse� attributattribut� méthodeméthode
� AssociationAssociation� rôlerôle� cardinalitécardinalité
o1
o2
o1
o2
o3
o4
o5
o1
o2
o3
� ObjetObjet � LienLien
M1
M0
� GénéralizationGénéralization� héritagehéritage� sous typagesous typage
megaplanet 3
Concepts de baseConcepts de base
� UML est basé sur différents concepts de base :UML est basé sur différents concepts de base :� Objet, ClasseObjet, Classe� Lien, AssociationLien, Association� HéritageHéritage� ContrainteContrainte
� UML propose des notations et des diagrammes UML propose des notations et des diagrammes � Diagramme de classes (description au niveau modèlisation, cas général)Diagramme de classes (description au niveau modèlisation, cas général)� Diagramme d’objets (description au niveau instance, exemples)Diagramme d’objets (description au niveau instance, exemples)
megaplanet 5
Compte
Notation pour les classesNotation pour les classes
numero : entier solde : entierdecouvertMax : entier
consulterLeSolde() : entiercrediter( somme : entier)debiter( somme : entier)
Nom de la classe
Attributsnomtype
Opérationsnomparamètretype du résultat
Contraintes{ inv: solde > decouvertMax }
megaplanet 6
Compte
ParaphrasageParaphrasage
numero : entier solde : entierdecouvertMax : entier
consulterLeSolde() : entiercrediter( somme : entier)debiter( somme : entier)
{ inv: solde > découvertMax }
Le concept de compte est pertinent.
Le numéro d'un compte est un entier.Le solde d'un compte est un entier.Le découvert max d'un compte est un entier.
Pour un compte donné il est possible de:- consulter le solde- créditer avec une somme- débiter avec une somme.
megaplanet 7
Notations alternativesNotations alternatives
Compte
numero : entiersolde : reeldecouvertMax : entier
consulterSolde() : entiercrediter( somme : entier)debiter( somme )
Compte
numerosolde...crediter()debiter()...
Compte
numerosolde...
Compte
crediter()debiter()...
Compte
Notes de style : les noms de classes commencent par une majuscule les noms d ’attributs et de méthodes commencent par une minuscule
Compte
M1
megaplanet 8
Notations pour les objetsNotations pour les objets
leCompteDePaul : Compte
numero = 6688FA89K888 solde = 5000decouvertMax = -100
leCompteDePaul
: Compte
leCompteDePaul : Compte
Convention :• les noms d ’objets commencent par une minuscule et sont soulignés
M0
megaplanet 9
ParaphrasageParaphrasage
leCompteDePaul : Compte
numero = 6688FA89K888 solde = 5000découvertMax = -100
leCompteDePaul
: Compte
leCompteDePaul : Compte
Le compte de paul est un objet.
un compte
Le compte de paul est un compte.
Le compte de paul est un compte.
Le numéro du compte de paul est 6688FA89K888.Le solde du compte de paul est 5000.Le découvert max du compte de paul est -100.
megaplanet 10
Classe vs. ObjetsClasse vs. Objets
Compte
numérosolde : réeldécouvertMax : entier
consulterSolde() : entiercréditer( somme : entier)débiter( somme )
Une classe spécifie la structure et le comportement d'un ensemble d'objetsde même nature
Diagramme de classes� La structure d'une classe est constanteLa structure d'une classe est constante
leCompteDePaul : Compte
numéro = 6688FA89K888 solde = 5000découvertMax = -100
leCompteDeMarie:Compte
numéro = 2275 UH73826solde = 10000découvertMax = -1000
:Compte
numéro = 1200 YE73626solde = 150découvertMax = 10
Diagramme d ’objets
� Des Des objetsobjets peuvent être peuvent être ajoutés ou détruits pendant ajoutés ou détruits pendant l ’exécutionl ’exécution
� La valeur des attributs des La valeur des attributs des objets peut changerobjets peut changer
M0M1
megaplanet 12
Liens (entre objets)Liens (entre objets)
c1 : Compte
c2 : Compte
paul : Client
pierre : Client
marie : Client c3 : Compte
APourCompte
APourCompte
APourCompte
Un lien indique une connexion entre deux objets
Note de style :• les noms des liens sont des formes verbales et commencent par une majuscule• indique le sens de la lecture (ex: « paul APourCompte c1 »)
megaplanet 13
ParaphrasageParaphrasage
c1 : Compte
c2 : Compte
paul : Client
pierre : Client
marie : Client c3 : Compte
APourCompte
APourCompte
APourCompte
paul a pour compte c1pierre a pour compte c2 et c3marie a pour compte aucun compte
paul, pierre et marie sont des clients c1, c2 et c3 sont des comptes
megaplanet 14
Contrainte sur les liensContrainte sur les liens
� Au maximum un lien Au maximum un lien d'un type donnéd'un type donné entre deux objets donnés entre deux objets donnés
marie : Personnejoseph : Personne
APourEpouse
jose : Personne
EstEnfantDe
madeleine : PersonneEstEnfantDe
EstGardePar
OK
megaplanet 15
Contrainte sur les liensContrainte sur les liens
� Au maximum un lien Au maximum un lien d'un type donnéd'un type donné entre deux objets donnés* entre deux objets donnés*
marie : Personnejoseph : Personne
APourEpouse
APourEpouse
(*) Contrainte importante pour compendre les « classes associatives » Contrainte pouvant être relachée via {nonunique} en UML 2.0
voir plus loin les concepts avancés
joseph a pour epouse marie
joseph a pour epouse marie
megaplanet 16
RôlesRôles
c1 : Comptepierre : ClientAPourCompte
titulaire compte
Chacun des deux objets joue un rôle diffèrent dans le lien
Note de style : choisir un groupe nominal pour désigner un rôle si un nom de rôle est omis, le nom de la classe fait office de nom
(1) pierre a pour compte c1(2) c1 joue le role de compte pour pierre(3) pierre joue le role de titulaire pour c1
(2.b) le [un des] compte[s] de pierre est c1(3.b) le [un des] titulaire[s] de c1 est pierre
megaplanet 18
Associations (entre classes)Associations (entre classes)
c1 : Compte
c2 : Compte
paul : Client
pierre : Client
marie : Client c3 : Compte
APourCompte>
APourCompte>
APourCompte>
Client CompteAPourCompte
Une association décrit un ensemble de liens de même "sémantique"
comptestitulaire
Diagramme d ’objets
(exemplaires)
Diagramme de classes
(modèlisation)
M0M1
megaplanet
ParaphrasageParaphrasage
Client CompteAPourCompte
comptestitulaire
(1) Un client a pour compte des comptes.(2) Les comptes d'un client sont tous des comptes (3) Le titulaire d'un compte est un client
megaplanet 20
Association vs. LiensAssociation vs. Liens� Un Un lienlien lie deux lie deux objetsobjets� Une Une associationassociation lie deux lie deux classesclasses
� Un Un lienlien est une instance d’ est une instance d’associationassociation� Une Une associationassociation décrit un ensemble de décrit un ensemble de liensliens
� Des Des liensliens peuvent être ajoutés ou détruits pendant l ’exécution, peuvent être ajoutés ou détruits pendant l ’exécution,
(ce n ’est pas le cas des associations)(ce n ’est pas le cas des associations)
Le terme "relation" ne pas Le terme "relation" ne pas partie du vocabulaire UML du vocabulaire UML
c1 : Compte
c2 : Compte
paul : Clie nt
pierre : Client
marie : Client c3 : Compte
A PourCompte>
A PourComp te>
A PourCompte>
Clie nt Compte
APourComp te>
liens
associationclasse
objets
M1
M0
megaplanet 21
Nommer les associationsNommer les associations
Compte Banque
Compte BanqueEstGéréPar
banqueGérantecomptesGérés
Compte BanquecomptesGérés
Compte BanquebanqueGérante
Compte BanqueGère
Différentes façons de nommer une association
mais une seule idée cohérence obligatoire!
megaplanet 23
Utiliser les rôles pour «naviguer»Utiliser les rôles pour «naviguer»
Client CompteAPourCompte
titulaire comptes
= {c1}= {c2,c3}= { }= paul= pierre= pierre
Nommer en priorité les rôles
c1 : Compte
c2 : Compte
paul : Client
pierre : Client
marie : Client c3 : Compte
APourCompte>
APourCompte>
APourCompte>
titulaire
titulaire
comptes
comptes
comptes
titulaire
paul.comptes pierre.comptes marie.comptesc1.titulairec2.titulairec3.titulaire
M0
M1
megaplanet 24
Utiliser les rôles pour «naviguer»Utiliser les rôles pour «naviguer»
Client CompteAPourCompte
titulaire comptes
= {c1}= {c2,c3}= { }= paul= pierre= pierre
Nommer en priorité les rôles
c1 : Compte
c2 : Compte
paul : Client
pierre : Client
marie : Client c3 : Compte
APourCompte>
APourCompte>
APourCompte>
titulaire
titulaire
comptes
comptes
comptes
titulaire
paul.comptes pierre.comptes marie.comptesc1.titulairec2.titulairec3.titulaire
M0
M1
megaplanet 25
CardinalitésCardinalités
Nombre d’objets pouvant être liés à un objet source (min..max)Nombre d’objets pouvant être liés à un objet source (min..max)
Client Compte1..1 APourCompte 0..*
titulaire comptes
c1 : Compte
c2 : Compte
paul : Client
pierre : Client
marie : Client c3 : Compte
APourCompte>
APourCompte>
APourCompte>
M0
M1
megaplanet
Notation SimplifiéeNotation Simplifiée
* équivalent à équivalent à 0..*
3 équivalent à 3 équivalent à 3..3
Client Compte1 APourCompte *
titulaire comptes
megaplanet 27
ParaphrasageParaphrasage
Client Compte1..1
0..*titulaire
comptes
(1a) Un client quelconque peut ne pas avoir de compte.(1b) Un client quelconque peut avoir plusieurs comptes.(1c) Tous les comptes d'un client sont des comptes.
(1a) (1b) (1c)
(2a) (1b)
(2a) Un compte quelconque à toujours un et un seul titulaire. (2b) L'unique titulaire d'un compte est un client
(1a) Un client quelconque peut ne pas avoir de compte.(1b) Un client quelconque peut avoir plusieurs comptes.(1c) Tous les comptes d'un client sont des comptes.
megaplanet 28
Cardinalités Cardinalités Terminologie Terminologie
c1 : Compte
c2 : Compte
paul : Client
pierre : Client
marie : Client c3 : Compte
EstTitulairePrincipalDe>
EstTitulairePrincipalDe>
EstTitutlairePrincipalDe>
M0
M1
� Terminologie et cardinalités sont intimement liéesTerminologie et cardinalités sont intimement liées
megaplanet 29
Associations "reflexives"Associations "reflexives"
parents
enfants
EstParentDe
Personne
2*
� Une association peut relier Une association peut relier des "objets" d'une même classedes "objets" d'une même classe
� N'implique pas forcémentN'implique pas forcémentdes liens "reflexifs"des liens "reflexifs" parents
paul marie
jean noelle
fred
parentsparents parents
myria
parentsparents
sylvia
parents
parents
attention: ce diagramme d'objets n'est pas conforme au diagramme de classe
M0
M1
megaplanet 30
ConformitéConformitéDiagrammes d'instances / Diagrammes de classesDiagrammes d'instances / Diagrammes de classes
parents
enfants
EstParentDe
Personne
2*
parents
paul marie
jean noelle
fred
parentsparents parents
myria
parentsparents
sylvia
parents
parents
0..0..
ATTENTION: ce diagramme d'objet n'est pas conformeau diagramme de classes
M0M1
megaplanet 31
parents
enfants
EstParentDe
Personne
2*
parents
paul marie
jean noelle
fred
parentsparents parents
myria
parentsparents
sylvia
parents
parents
0..0..
ATTENTION: ce diagramme d'objet est conformeau diagramme de classes
ConformitéConformitéDiagrammes de classes / Système modéliséDiagrammes de classes / Système modélisé
mais n'est pas correctà la réalité (pas réaliste)
ATTENTION: ce diagramme de classesn'est pas un bon modèledu système modélisé
M0
M1
megaplanet 32
parents
enfants
EstParentDe
Personne
2*
parents
paul marie
jean noelle
fred
parentsparents parents
myria
parentsparents
sylvia
parentsparents
parents
0..0..
ContraintesContraintes
La relation EstParentDe est acyclique.
M0
M1
megaplanet 33
Diagrammes de classes vs. d’objetsDiagrammes de classes vs. d’objets
� Un diagramme de classes Un diagramme de classes � défini l’ensemble de tous les états possiblesdéfini l’ensemble de tous les états possibles� les contraintes doivent toujours être vérifiéesles contraintes doivent toujours être vérifiées
� Un diagramme d’objets Un diagramme d’objets � décrit un état possible à un instant t, un cas particulierdécrit un état possible à un instant t, un cas particulier� doit être conforme au modèle de classesdoit être conforme au modèle de classes
� Les diagrammes d’objets peuvent être utilisés pourLes diagrammes d’objets peuvent être utilisés pour� expliquer un diagramme de classe (donner un exemple)expliquer un diagramme de classe (donner un exemple)� valider un diagramme de classe (le "tester")valider un diagramme de classe (le "tester")
Client
1..4 0..*
titulaires
Conso rtium
Co mpte
numérosolde...
*
1
0..*
1
0..*
1..*
signataire1
0..*
CarteBleue
CoderetraitM ax
Distributeur
1..*
EstAcceptéPar>
1..*
Banque
numéronom
c1 : Co mpt
e
c2 : Comp
te
paul : Clie nt
pierre :
Client
marie :
Clie nt
c3 : Co mpt
e
titulaires
titulaires
: Ca rteBleue
titulaires
ti
tu
lai
re
s
signataire
: CarteBleue
sophie :
Client
: Banque
: Banque
signataire
: Consortium
: Distributeur
EstAcceptéPar>
EstAcceptéPar>
c1 : Co mpt
e
c2 : Co mp
te
paul : Client
pierre :
Client
marie :
Client
c3 : Co mpt
e
titulaires
titulaires
: CarteBleue
titulaires
titulaires
signataire
: CarteBleue
sophie :
Client
: Banque
: Banque
signataire
: Consortium
: Distributeur
EstA cceptéPar>
EstAcceptéPar>
megaplanet 35
Généralisation Généralisation Spécialisation Spécialisation
Une classe peut être la généralisation d’une ou plusieurs autres classes. Ces classes sont alors des spécialisations de cette classe.
"Super classe"
"Sous classes"
Personne
FemmeHomme
Compte
CompteEpargne
Cas général
Cas spécifique
Deux points de vue liés (en UML) : • héritage• sous-typage
megaplanet 36
HéritageHéritage
Compte
solde
crediter()debiter()
CompteEpargne
tauxInteret
ajouterInterets ()
Les sous-classes « héritent » des propriétés des super-classes(attributs, méthodes, associations, contraintes)
Banque*
CompteEpargne
soldetauxInteret
crediter()debiter()ajouterInterets ()
*
{inv: solde > -5000 et tauxInteret < 100}
Banque
{inv: solde > -5000}
{inv: tauxInteret < 100}
megaplanet 37
Héritage et redéfinitionsHéritage et redéfinitionsCompte
solde
créditer()débiter()
CompteEpargne
créditer()débiter()ajouterIntérêts ()
PEL
créditer()débiter()ajouterIntérêts ()
PEC
débiter()
PET
débiter()
Une opération peut être "redéfinie" dans les sous-classes
Permet d'associer des méthodes spécifiques à chaque sous classepour réaliser une même opération
megaplanet 38
Sous TypageSous Typage
Tout objet d’une sous-classe appartient également à la super-classe
CompteEpargne
ce1
Compte
Compte CompteEpargne
ce2
ce3
c3
c4
c18
c1
c2
M1
M0
Un compte epargne est un compte.
megaplanet 39
Synthèse des concepts de baseSynthèse des concepts de base
� ClasseClasse� attributattribut� méthodeméthode
� AssociationAssociation� rôlerôle� cardinalitécardinalité
o1
o2
o1
o2
o3
o4
o5
o1
o2
o3
� ObjetObjet � LienLien
M1
M0
� GénéralizationGénéralization� héritagehéritage� sous typagesous typage