Uml: Diagrammes de classes -- Concepts De Base 41

38
megaplanet UML : UML : Diagrammes de Classes Diagrammes de Classes Concepts de base Concepts de base Objets, Classes Objets, Classes Lien, Association, Cardinalité Lien, Association, Cardinalité Généralisation Généralisation

Transcript of Uml: Diagrammes de classes -- Concepts De Base 41

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

Objets et Classes

4

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

Liens et Associations

11

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

Liens et Associations

17

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

GénéralisationGénéralisation

34

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