SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
Polytech Paris-Sud
Formation initiale 3e année
Spécialité Informatique

UML
Diagrammes de classes

Delphine Longuet
delphine.longuet@lri.fr
Processus de développement logiciel
Analyse
des besoins

Tests d'acceptation

Spécification

Tests système

Conception
architecturale
Conception
détaillée

Tests d'intégration

Tests unitaires

Développement
D. Longuet - UML

2
Objets et classes
Conception orientée objet : Représentation du système comme un
ensemble d'objets interagissant
Diagramme de classes
●
Représentation de la structure interne du logiciel
●
Utilisé surtout en conception mais peut être utilisé en analyse
Diagramme d'objets
●
Représentation de l'état du logiciel (objets + relations)
●
Diagramme évoluant avec l'exécution du logiciel
- création et suppression d'objets
- modification de l'état des objets (valeurs des atributs)
- modification des relations entre objets
D. Longuet - UML

3
Objets et classes
Objet
●
●

Entité concrète ou abstraite du domaine d'application
Décrit par état (attributs) + comportement (opérations)
nom de l'objet

attributs

opérations

D. Longuet - UML

MonLivretA : Compte
numéro = 123456
devise = EUR
solde = 3509,43
déposer(montant : float)
retirer(montant : float)
solde() : float

état (valeur des attributs)

4
Objets et classes
Classe : Regroupement d'objets de même nature (mêmes attributs +
mêmes opérations)
Objet = instance d'une classe
nom de la classe

MonCompteJoint : Compte

MonLivretA : Compte
numéro = 123456
devise = EUR
solde = 3509,43
déposer(montant : float)
retirer(montant : float)
solde() : float

numéro = 854126
devise = EUR
solde = 2215,03
déposer(montant : float)
retirer(montant : float)
solde() : float
MonCompteSuisse : Compte
numéro = 70054568
devise = CHF
solde = 121000
déposer(montant : float)
retirer(montant : float)
solde() : float

D. Longuet - UML

Compte
instances de

attributs
numéro : int
devise : Devise
solde : float
déposer(montant : float)
retirer(montant : float)
solde() : float
opérations
5
Classes
Attributs
●
Propriété partagée par tous les objets de la classe
●
Associe à chaque objet une valeur
●
Type associé simple (int, bool...), primitif (Date) ou énuméré
Opérations
●
Service qui peut être demandé à tout objet de la classe
Ne pas confondre avec une méthode = implantation de l'opération
Compte

D. Longuet - UML

numéro : int
devise : Devise
solde : float
déposer(montant : float)
retirer(montant : float)
solde() : float

6
Relations entre objets
Association entre objets
●
relation binaire (en général)
●
au plus un lien entre deux objets

JeanDupont : Personne
nom = "Dupont"
prénom = "Jean"
adresse = "Montrouge"
naissance = 20/08/1990

D. Longuet - UML

possède

MonLivretA : Compte
numéro = 123456
devise = EUR
solde = 3509,43

7
Relations entre objets
Association entre objets
●
relation binaire (en général)
●
au plus un lien entre deux objets
MarieDupont : Personne
nom = "Dupont"
prénom = "Marie"
adresse = "Montrouge"
naissance = 4/12/1992

possède
possède

JeanDupont : Personne
nom = "Dupont"
prénom = "Jean"
adresse = "Montrouge"
naissance = 20/08/1990

sesComptes

possède

possède

MonCompteJoint : Compte
numéro = 854126
devise = EUR
solde = 2215,03

MonLivretA : Compte
numéro = 123456
devise = EUR
solde = 3509,43

MonCompteSuisse : Compte
numéro = 70054568
devise = CHF
solde = 121000

D. Longuet - UML

8
Relations entre objets
Association entre objets
●
relation binaire (en général)
●
au plus un lien entre deux objets
MarieDupont : Personne
nom = "Dupont"
prénom = "Marie"
adresse = "Montrouge"
naissance = 4/12/1992

possède
possède

JeanDupont : Personne
nom = "Dupont"
prénom = "Jean"
adresse = "Montrouge"
naissance = 20/08/1990

possède

possède

sesPropriétaires
MonCompteJoint : Compte
numéro = 854126
devise = EUR
solde = 2215,03

MonLivretA : Compte
numéro = 123456
devise = EUR
solde = 3509,43

MonCompteSuisse : Compte
numéro = 70054568
devise = CHF
solde = 121000

D. Longuet - UML

9
Relations entre classes
Association entre classes : Relation binaire (en général)
Rôle : Nomme l'extrémité d'une association, permet d'accéder aux
objets liés par l'association à un objet donné
Cardinalité : Contraint le nombre d'objets liés par l'association

nom : string
prénom : string
adresse : string
naissance : Date
ouvrirCompte(init : float)
D. Longuet - UML

Compte

rôle

Personne

sesComptes

sesPropriétaires
1..2

cardinalité

possède

nom de
l'association
(optionnel)

*

numéro : int
devise : Devise
solde : float
déposer(montant : float)
retirer(montant : float)
solde() : float
10
Attribut et association
Association
●
Deux attributs implicites
●
Explicitée comme attributs en phase de conception détaillée, qui
porteront les noms des rôles de l'association
Exemple de diagramme en conception
Compte

Personne
nom : string
prénom : string
adresse : string
naissance : Date
ouvrirCompte(init : float)
D. Longuet - UML

sesPropriétaires
1..2

sesComptes
*

numéro : int
devise : Devise
solde : float
déposer(montant : float)
retirer(montant : float)
solde() : float
11
Attribut et association
Association
●
Deux attributs implicites
●
Explicitée comme attributs en phase de conception détaillée, qui
porteront les noms des rôles de l'association
Exemple de diagramme en conception détaillée
Personne
nom : string
prénom : string
attributs correspondants
adresse : string
aux deux rôles de l'association
naissance : Date
sesComptes : Collection(Compte)
ouvrirCompte(init : float)
D. Longuet - UML

Compte
numéro : int
devise : Devise
solde : float
sesPropriétaires : Personne[2]
déposer(montant : float)
retirer(montant : float)
solde() : float
12
Attribut et association
Association
●
Deux attributs implicites
●
Explicitée comme attributs en phase de conception détaillée, qui
porteront les noms des rôles de l'association
Par conséquent, pas de référence à un objet dans un attribut s'il existe
une association vers cet objet
Compte

Personne
nom : string
prénom : string
adresse : string
naissance : Date
sesComptes : List(Compte)
ouvrirCompte(init : float)
D. Longuet - UML

sesPropriétaires
1..2

sesComptes
*

numéro : int
devise : Devise
solde : float
sesPropriétaires : Personne[2]
déposer(montant : float)
retirer(montant : float)
solde() : float
13
Cardinalités
Nombre de B associés à un A
A

A

n
n,m,p

B

Exactement n

B

Exactement n ou m ou p

A

n..m

B

Entre n et m

A

n..*

B

Au moins n

A

*

B

Plusieurs (0 ou plus)

D. Longuet - UML

14
Association réflexive
Diagramme de classes

Personne
nom : string
prénom : string
naissance : Date

parents
2
*
enfants

association réflexive
(d'une classe vers
elle-même)

Exemple de diagramme d'objets
JeanDupont : Personne
AnneBérou : Personne
nom = "Bérou"
prénom = "Anne"
naissance = 14/12/1965
MichelDupont : Personne
nom = "Dupont"
prénom = "Michel"
naissance = 2/09/1959

D. Longuet - UML

MarieDupont : Personne

nom = "Dupont"
prénom = "Jean"
naissance = 20/08/1990

nom = "Dupont"
prénom = "Marie"
naissance = 4/12/1992

PierreDupont : Personne
nom = "Dupont"
prénom = "Pierre"
naissance = 30/05/1992
LucieDupont : Personne
nom = "Dupont"
prénom = "Lucie"
naissance = 10/02/1996

VictorDupont : Personne
nom = "Dupont"
prénom = Victor
naissance = 12/07/2012

15
Association multiple
plusieurs associations
entre deux classes

Diagramme de classes
Personne
nom : string
prénom : string
naissance : Date

propose

1

loue
*

Appartement

* adresse : string
pièces : int
* loyer : float

Exemple de diagramme d'objets
JeanDupont : Personne
nom = "Dupont"
prénom = "Jean"
naissance = 20/08/1990

loue
propose

AlainDupuis : Personne
nom = "Dupuis"
prénom = "Alain"
naissance = 15/01/1983
D. Longuet - UML

BLR145 : Appartement
adresse = "145 av gal Leclerc,
Bourg-la-Reine"
pièces = 2
loyer = 900
Cach23 : Appartement

loue

adresse = "23 rue Dumotel,
Cachan"
pièces = 3
loyer = 1200

16
Navigabilité
Orientation d'une association
●
Restreint l'accessibilité des objets
●
Depuis un A, on a accès aux objets de B qui lui sont associés,
mais pas l'inverse
A

rôle

rôle

B

Exemple (listes chaînées)
Liste

tête
1

0..1

Nœud
contenu : int

1
0..1
suivant

Par défaut, associations navigables dans les deux sens (pas de flèche)
D. Longuet - UML

17
Classe-association
Permet de paramétrer une association entre deux classes par une classe
Personne
nom : string
prénom : string
naissance : Date

1..*

*

Entreprise
nom : string

Emploi
intitulé : string
début : Date
fin : Date

classe-association

Équivalence en termes de classes et d'associations
Personne
nom : string
prénom : string
naissance : Date
D. Longuet - UML

Emploi
1

* intitulé : string
début : Date
fin : Date

1..*

1

Entreprise
nom : string

18
Classe-association
Exemple de diagramme d'objets
Développeur : Emploi
MarieDupont : Personne
nom = "Dupont"
prénom = "Marie"
naissance = 4/12/1992

intitulé = "Développeur web"
début = ...
fin = ...
SecrétaireRH : Emploi

JeanDupont : Personne
nom = "Dupont"
prénom = "Jean"
naissance = 20/08/1990

AlainDupuis : Personne
nom = "Dupuis"
prénom = "Alain"
naissance = 15/01/1983
D. Longuet - UML

intitulé = "Secrétaire RH"
début = ...
fin = ...
RespClientEssilor : Emploi
intitulé = "Responsable clients"
début = ...
fin = ...

Essilor : Entreprise
nom = "Essilor"
ville = "Créteil"

Fnac : Entreprise
nom = "Fnac"
ville = "Bordeaux"

RespClientFnac : Emploi
intitulé = "Responsable clients"
début = ...
fin = ...

19
Association n-aire
Association reliant plus de deux classes
Étudiant

Enseignant
1

1..*

1

association ternaire

Cours

Utiliser de préférence des classes-associations

D. Longuet - UML

20
Agrégation
Association particulière entre classes
●
Dissymétrique : une classe prédominante sur l'autre
●
Relation de type composant-composite
Deux types d'agrégation
●
Agrégation faible
●
Composition

Pièce

1..*

3..*

agrégation faible
D. Longuet - UML

Mur

*

1

Brique

composition
21
Agrégation faible
Agrégation par référence
●
Le composite fait référence à ses composants
●
La création ou destruction du composite est indépendante de la
création ou destruction de ses composants
●
Un objet peut faire partie de plusieurs composites à la fois
Exemple
●
Une pièce est composée de murs
●
Un mur peut être commun à plusieurs pièces
Pièce

1..*

3..*

Mur

agrégation faible
D. Longuet - UML

22
Composition
Agrégation par valeur
●
Le composite contient ses composants
●
La création ou destruction du composite entraîne la création ou
destruction de ses composants
●
Un objet ne fait partie que d'un composite à la fois
Exemple
●
Un mur est composé de briques
●
Une brique n'appartient qu'à un mur
Mur

*

1

Brique

composition
D. Longuet - UML

23
Hiérarchie de classes
Principe : Regrouper les classes partageant des attributs et des
opérations et les organiser en arborescence
Spécialisation : raffinement d'une classe en une sous-classe
Généralisation : abstraction d'un ensemble de classes en super-classe

CompteÉpargne
CompteCourant
numéro : int
devise : Devise
solde : float
découvertAutorisé : float
fraisDécouvert : float

D. Longuet - UML

déposer(montant : float)
retirer(montant : float)
solde() : float

numéro : int
devise : Devise
solde : float
plafond : float
taux : float
déposer (montant : float)
retirer(montant : float)
solde() : float
calculerIntérêts() : float

24
Hiérarchie de classes
Principe : Regrouper les classes partageant des attributs et des
opérations et les organiser en arborescence
Spécialisation : raffinement d'une classe en une sous-classe
Généralisation : abstraction d'un ensemble de classes en super-classe
Compte
numéro : int
devise : Devise
solde : float
déposer(montant : float)
retirer(montant : float)
solde() : float

spécialisation

découvertAutorisé : float
fraisDécouvert : float

généralisation

CompteÉpargne

CompteCourant

D. Longuet - UML

super-classe

sous-classes

plafond : float
taux : float
calculerIntérêts() : float

25
Hiérarchie de classes
Principe : Regrouper les classes partageant des attributs et des
opérations et les organiser en arborescence
Héritage : Construction d'une classe à partir d'une classe plus haute
dans la hiérarchie (partage des attributs, opérations, contraintes...)
Compte
numéro : int
devise : Devise
solde : float
déposer(montant : float)
retirer(montant : float)
solde() : float

classes héritant
de la classe Compte
CompteCourant

découvertAutorisé : float
fraisDécouvert : float
D. Longuet - UML

CompteÉpargne
plafond : float
taux : float
calculerIntérêts() : float

26
Classe abstraite
Classe sans instance car certaines opérations non définies
●
Opération non définie en italique
●
Nom de la classe en italique (ou stéréotype « abstract »)
Exemple : On ne peut pas calculer la surface d'une forme sans savoir
de quelle forme il s'agit
opération non définie
(abstraite)

D. Longuet - UML

Forme
nom : string
surface() : float

27
Polymorphisme
Contexte : Définition d'une opération abstraite dans les classes
héritant d'une classe abstraite
Opération polymorphe : Opération définie dans différentes sous-classes
mais opération spécifique à la sous-classe

Forme
nom : string
surface() : float

Rectangle
longueur : float
largeur : float

opération
polymorphe

Cercle
rayon : float
surface() : float

surface() : float
D. Longuet - UML

28
Interface
Liste d'opérations constituant un contrat à respecter par les classes
réalisant l'interface
●
Pas une classe, ne peut pas servir à créer des objets
●
Toutes les opérations sont abstraites

Point
abscisse : float
ordonnée : float

« interface »
Comparable
égal(Object o) : boolean
supérieur(Object o) : boolean

égal(Object o) : boolean
supérieur(Object o) : boolean

classes réalisant
l'interface

D. Longuet - UML

Date
jour : int
mois : int
année : int
égal(Object o) : boolean
supérieur(Object o) : boolean
diff(Date d) : int

String
content : string
égal(Object o) : boolean
supérieur(Object o) : boolean
print()

29
Notations avancées
Vecteur
- début : Point
- longueur : float = 0.0
- angle : float = 0.0
+ / fin : Point
+ contient(in p : Point) : boolean
+ déplace(inout p : Point)

Attributs
[visibilité] [dérivé] nomAttribut [: type] [= valeur par défaut]
Opérations
[visibilité] nomOpération [(liste Paramètres)] [: typeRetour]
Paramètre
[direction] nom : type [= valeur par défaut]
Direction
in | out | inout (par défaut : in)
D. Longuet - UML

30
Notations avancées
attributs privés
attribut dérivé

Vecteur
- début : Point
- longueur : float = 0.0
- angle : float = 0.0
+ / fin : Point
+ contient(in p : Point) : boolean
+ déplace(inout p : Point)

opérations publiques

Visibilité
+ : public, accessible à toutes les classes
# : protégé, accessible uniquement aux sous-classes
- : privé, inaccessible à tout objet hors de la classe
Pas de visibilité par défaut
Attribut dérivé : Peut être calculé à tout moment à partir des autres
attributs
D. Longuet - UML

31
Notations avancées
Attributs et opérations de classes
●
Attribut de classe : valeur commune à toutes les instances
●
Opération de classe : opération sur la classe elle-même
(création de nouvelles instances par exemple)
●
Soulignés dans la classe
Article
- référence : int
- prixHT : float
- nbInstances : int
+ calculerPrixTTC(taxe : float) : float
+ créer()
+ compterInstances() : int

D. Longuet - UML

32
Contraintes
Propriétés :
●
Portant sur les éléments du modèle
●
Doivent être vérifiées à tout instant
●
En général, restriction sur les diagrammes d'objets possibles à
partir du diagramme de classes
Annotations dans le diagramme de classes
●
Sous forme textuelle, entre accolades
●
En OCL (Object Constraint Language)

D. Longuet - UML

33
Contraintes
{age = diff(naissance,today)}

Personne
nom : string
naissance : Date
/ age : int
{age ≥ 0}
1

*

appartient
{subset}

1

administre
●

* {ordered}
ExpériencesPro
entreprise : string
entrée : Date
sortie : Date

●

●

●

D. Longuet - UML

*
*

Groupe
thème : string
création : Date

L'âge est toujours positif
L'âge est calculé comme la différence
entre la date de naissance et la date
d'aujourd'hui
L'administrateur d'un groupe en est
membre
On a accès aux expériences
professionnelles dans l'ordre
34
Contraintes en OCL
Banque
nom : string
1..*

1
banque

banques

1..* clients
Client
nom : string
naissance : Date

1..* comptes
Compte
1
propriétaire

comptes numéro : int
devise : Devise
1..*
solde : float

dest
1
1
orig

Virement
montant : float
0..* date : Date
0..*

Tout propriétaire d’un compte est client de la banque hébergeant ce compte.
context c : Compte
inv : c.banque.clients -> include(c.propriétaire)

Tout client d’une banque y possède au moins un compte.

context b : Banque
inv : b.clients -> forAll(cl | cl.comptes
-> select(c | c.banque = b) -> size() >= 1)

Les virements ne sont autorisés qu'entre des comptes partageant la même devise.
context v : Virement
inv : v.orig.devise = v.dest.devise

D. Longuet - UML

35

Contenu connexe

Tendances

Chp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionChp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionLilia Sfaxi
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-CorrectionLilia Sfaxi
 
Programmation web1 complet
Programmation web1 completProgrammation web1 complet
Programmation web1 completAnnabi Gihed
 
Cours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vieCours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vieMohammed Amine Mostefai
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiENSET, Université Hassan II Casablanca
 
introduction à la modélisation objet
introduction à la modélisation objetintroduction à la modélisation objet
introduction à la modélisation objetAmir Souissi
 
Méthodologie 2 Track Unified Process
Méthodologie 2 Track Unified ProcessMéthodologie 2 Track Unified Process
Méthodologie 2 Track Unified ProcessZakaria Bouazza
 
Créer des applications Java avec MongoDB
Créer des applications Java avec MongoDBCréer des applications Java avec MongoDB
Créer des applications Java avec MongoDBMongoDB
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1vangogue
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correctionLilia Sfaxi
 
UML Part2- diagramme des uses cases_mansouri
UML Part2- diagramme des uses cases_mansouriUML Part2- diagramme des uses cases_mansouri
UML Part2- diagramme des uses cases_mansouriMansouri Khalifa
 
UML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriUML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriMansouri Khalifa
 

Tendances (20)

Chp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionChp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de Conception
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
 
Programmation web1 complet
Programmation web1 completProgrammation web1 complet
Programmation web1 complet
 
Cours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vieCours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vie
 
Modele mvc
Modele mvcModele mvc
Modele mvc
 
Uml classes Par les exemples
Uml classes Par les exemplesUml classes Par les exemples
Uml classes Par les exemples
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
 
introduction à la modélisation objet
introduction à la modélisation objetintroduction à la modélisation objet
introduction à la modélisation objet
 
Méthodologie 2 Track Unified Process
Méthodologie 2 Track Unified ProcessMéthodologie 2 Track Unified Process
Méthodologie 2 Track Unified Process
 
Servlets et JSP
Servlets et JSPServlets et JSP
Servlets et JSP
 
Créer des applications Java avec MongoDB
Créer des applications Java avec MongoDBCréer des applications Java avec MongoDB
Créer des applications Java avec MongoDB
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1
 
Modélisation avec UML
Modélisation avec UMLModélisation avec UML
Modélisation avec UML
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
 
Middleware
MiddlewareMiddleware
Middleware
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correction
 
Introduction à Laravel
Introduction à LaravelIntroduction à Laravel
Introduction à Laravel
 
Support programmation orientée objet c# .net version f8
Support programmation orientée objet c#  .net version f8Support programmation orientée objet c#  .net version f8
Support programmation orientée objet c# .net version f8
 
UML Part2- diagramme des uses cases_mansouri
UML Part2- diagramme des uses cases_mansouriUML Part2- diagramme des uses cases_mansouri
UML Part2- diagramme des uses cases_mansouri
 
UML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriUML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouri
 

En vedette

Livret recettes bridelight
Livret recettes bridelightLivret recettes bridelight
Livret recettes bridelightsarah Benmerzouk
 
Livret recettes bridelight entre amis
Livret recettes bridelight entre amisLivret recettes bridelight entre amis
Livret recettes bridelight entre amissarah Benmerzouk
 
CIRCULAR RAC (Red de Astronomía de Colombia) Circular 687 Enero_26-2013
CIRCULAR RAC (Red de Astronomía de Colombia) Circular 687  Enero_26-2013CIRCULAR RAC (Red de Astronomía de Colombia) Circular 687  Enero_26-2013
CIRCULAR RAC (Red de Astronomía de Colombia) Circular 687 Enero_26-2013SOCIEDAD JULIO GARAVITO
 
Les 5 tendances du monde du travail à ne pas louper
Les 5 tendances du monde du travail à ne pas louperLes 5 tendances du monde du travail à ne pas louper
Les 5 tendances du monde du travail à ne pas louperDominique RIVIERE
 
Efectos ambientales en la evolución de galáxias..
Efectos ambientales en la evolución de galáxias.. Efectos ambientales en la evolución de galáxias..
Efectos ambientales en la evolución de galáxias.. SOCIEDAD JULIO GARAVITO
 
Autores de espanol
Autores de espanolAutores de espanol
Autores de espanolbrendaykarla
 
Mi cole en_otono
Mi cole en_otonoMi cole en_otono
Mi cole en_otonogaviotawiki
 
Desarrollo Turístico y Ambiental en Puerto LIbertad, El Salvador
Desarrollo Turístico y Ambiental en Puerto LIbertad, El SalvadorDesarrollo Turístico y Ambiental en Puerto LIbertad, El Salvador
Desarrollo Turístico y Ambiental en Puerto LIbertad, El SalvadorConectaDEL
 
subir videos al internet
subir videos al internetsubir videos al internet
subir videos al internetAlexis Polo
 
La Dimensión Ética de la Vida y Obra de Wernher Von Braun 23 de Febrero 2013
La Dimensión Ética de la Vida y Obra de Wernher Von Braun   23 de Febrero 2013La Dimensión Ética de la Vida y Obra de Wernher Von Braun   23 de Febrero 2013
La Dimensión Ética de la Vida y Obra de Wernher Von Braun 23 de Febrero 2013SOCIEDAD JULIO GARAVITO
 

En vedette (20)

Trabajo de Word primer bimestre.
Trabajo de Word primer bimestre.Trabajo de Word primer bimestre.
Trabajo de Word primer bimestre.
 
Valvulas
ValvulasValvulas
Valvulas
 
Electronique analogique
Electronique analogiqueElectronique analogique
Electronique analogique
 
Livret recettes bridelight
Livret recettes bridelightLivret recettes bridelight
Livret recettes bridelight
 
Livret recettes bridelight entre amis
Livret recettes bridelight entre amisLivret recettes bridelight entre amis
Livret recettes bridelight entre amis
 
Patrick elce sale journee
Patrick elce sale journeePatrick elce sale journee
Patrick elce sale journee
 
CIRCULAR RAC (Red de Astronomía de Colombia) Circular 687 Enero_26-2013
CIRCULAR RAC (Red de Astronomía de Colombia) Circular 687  Enero_26-2013CIRCULAR RAC (Red de Astronomía de Colombia) Circular 687  Enero_26-2013
CIRCULAR RAC (Red de Astronomía de Colombia) Circular 687 Enero_26-2013
 
Supraconductivité
SupraconductivitéSupraconductivité
Supraconductivité
 
Les 5 tendances du monde du travail à ne pas louper
Les 5 tendances du monde du travail à ne pas louperLes 5 tendances du monde du travail à ne pas louper
Les 5 tendances du monde du travail à ne pas louper
 
Efectos ambientales en la evolución de galáxias..
Efectos ambientales en la evolución de galáxias.. Efectos ambientales en la evolución de galáxias..
Efectos ambientales en la evolución de galáxias..
 
Autores de espanol
Autores de espanolAutores de espanol
Autores de espanol
 
Mi cole en_otono
Mi cole en_otonoMi cole en_otono
Mi cole en_otono
 
La oferta
La ofertaLa oferta
La oferta
 
In02100c
In02100cIn02100c
In02100c
 
John lennon
John lennonJohn lennon
John lennon
 
Desarrollo Turístico y Ambiental en Puerto LIbertad, El Salvador
Desarrollo Turístico y Ambiental en Puerto LIbertad, El SalvadorDesarrollo Turístico y Ambiental en Puerto LIbertad, El Salvador
Desarrollo Turístico y Ambiental en Puerto LIbertad, El Salvador
 
subir videos al internet
subir videos al internetsubir videos al internet
subir videos al internet
 
Te amo
Te amoTe amo
Te amo
 
La Dimensión Ética de la Vida y Obra de Wernher Von Braun 23 de Febrero 2013
La Dimensión Ética de la Vida y Obra de Wernher Von Braun   23 de Febrero 2013La Dimensión Ética de la Vida y Obra de Wernher Von Braun   23 de Febrero 2013
La Dimensión Ética de la Vida y Obra de Wernher Von Braun 23 de Febrero 2013
 
Carnet desseins4 mars 2009
Carnet desseins4 mars 2009Carnet desseins4 mars 2009
Carnet desseins4 mars 2009
 

Similaire à UML

Uml: Diagrammes de classes -- Concepts De Base 41
Uml: Diagrammes de classes -- Concepts De Base 41Uml: Diagrammes de classes -- Concepts De Base 41
Uml: Diagrammes de classes -- Concepts De Base 41megaplanet20
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++coursuniv
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptxLamissGhoul1
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniShellmates
 
La programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCamlLa programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCamlStéphane Legrand
 
Chp6 - De UML vers C++
Chp6 - De UML vers C++Chp6 - De UML vers C++
Chp6 - De UML vers C++Lilia Sfaxi
 
Pont entre cet c++
Pont entre cet c++Pont entre cet c++
Pont entre cet c++maxcxi008
 
Chap 1 Initiation.pptx
Chap 1 Initiation.pptxChap 1 Initiation.pptx
Chap 1 Initiation.pptxolfaharrabi2
 
Caml intro
Caml introCaml intro
Caml introzan
 
05 - Cours Fonctions.pptx
05 - Cours Fonctions.pptx05 - Cours Fonctions.pptx
05 - Cours Fonctions.pptxBenacerLeila
 

Similaire à UML (17)

Diagramme de classes
Diagramme de classesDiagramme de classes
Diagramme de classes
 
Uml: Diagrammes de classes -- Concepts De Base 41
Uml: Diagrammes de classes -- Concepts De Base 41Uml: Diagrammes de classes -- Concepts De Base 41
Uml: Diagrammes de classes -- Concepts De Base 41
 
Et3 5 diagsequence
Et3 5 diagsequenceEt3 5 diagsequence
Et3 5 diagsequence
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptx
 
556ef78d93c3b
556ef78d93c3b556ef78d93c3b
556ef78d93c3b
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El Hassani
 
CM uml-diag-statiques
CM uml-diag-statiquesCM uml-diag-statiques
CM uml-diag-statiques
 
generation_code.pdf
generation_code.pdfgeneration_code.pdf
generation_code.pdf
 
1167844.ppt
1167844.ppt1167844.ppt
1167844.ppt
 
La programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCamlLa programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCaml
 
Chp6 - De UML vers C++
Chp6 - De UML vers C++Chp6 - De UML vers C++
Chp6 - De UML vers C++
 
Pont entre cet c++
Pont entre cet c++Pont entre cet c++
Pont entre cet c++
 
Chap 1 Initiation.pptx
Chap 1 Initiation.pptxChap 1 Initiation.pptx
Chap 1 Initiation.pptx
 
Caml intro
Caml introCaml intro
Caml intro
 
Part1
Part1Part1
Part1
 
05 - Cours Fonctions.pptx
05 - Cours Fonctions.pptx05 - Cours Fonctions.pptx
05 - Cours Fonctions.pptx
 

Plus de angeeLee

Plus de angeeLee (9)

ORM
ORMORM
ORM
 
ORM
ORMORM
ORM
 
ORM
ORMORM
ORM
 
ORM
ORMORM
ORM
 
ORM
ORMORM
ORM
 
ORM
ORMORM
ORM
 
ORM
ORMORM
ORM
 
UML
UMLUML
UML
 
Cours services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlin
 

UML

  • 1. Polytech Paris-Sud Formation initiale 3e année Spécialité Informatique UML Diagrammes de classes Delphine Longuet delphine.longuet@lri.fr
  • 2. Processus de développement logiciel Analyse des besoins Tests d'acceptation Spécification Tests système Conception architecturale Conception détaillée Tests d'intégration Tests unitaires Développement D. Longuet - UML 2
  • 3. Objets et classes Conception orientée objet : Représentation du système comme un ensemble d'objets interagissant Diagramme de classes ● Représentation de la structure interne du logiciel ● Utilisé surtout en conception mais peut être utilisé en analyse Diagramme d'objets ● Représentation de l'état du logiciel (objets + relations) ● Diagramme évoluant avec l'exécution du logiciel - création et suppression d'objets - modification de l'état des objets (valeurs des atributs) - modification des relations entre objets D. Longuet - UML 3
  • 4. Objets et classes Objet ● ● Entité concrète ou abstraite du domaine d'application Décrit par état (attributs) + comportement (opérations) nom de l'objet attributs opérations D. Longuet - UML MonLivretA : Compte numéro = 123456 devise = EUR solde = 3509,43 déposer(montant : float) retirer(montant : float) solde() : float état (valeur des attributs) 4
  • 5. Objets et classes Classe : Regroupement d'objets de même nature (mêmes attributs + mêmes opérations) Objet = instance d'une classe nom de la classe MonCompteJoint : Compte MonLivretA : Compte numéro = 123456 devise = EUR solde = 3509,43 déposer(montant : float) retirer(montant : float) solde() : float numéro = 854126 devise = EUR solde = 2215,03 déposer(montant : float) retirer(montant : float) solde() : float MonCompteSuisse : Compte numéro = 70054568 devise = CHF solde = 121000 déposer(montant : float) retirer(montant : float) solde() : float D. Longuet - UML Compte instances de attributs numéro : int devise : Devise solde : float déposer(montant : float) retirer(montant : float) solde() : float opérations 5
  • 6. Classes Attributs ● Propriété partagée par tous les objets de la classe ● Associe à chaque objet une valeur ● Type associé simple (int, bool...), primitif (Date) ou énuméré Opérations ● Service qui peut être demandé à tout objet de la classe Ne pas confondre avec une méthode = implantation de l'opération Compte D. Longuet - UML numéro : int devise : Devise solde : float déposer(montant : float) retirer(montant : float) solde() : float 6
  • 7. Relations entre objets Association entre objets ● relation binaire (en général) ● au plus un lien entre deux objets JeanDupont : Personne nom = "Dupont" prénom = "Jean" adresse = "Montrouge" naissance = 20/08/1990 D. Longuet - UML possède MonLivretA : Compte numéro = 123456 devise = EUR solde = 3509,43 7
  • 8. Relations entre objets Association entre objets ● relation binaire (en général) ● au plus un lien entre deux objets MarieDupont : Personne nom = "Dupont" prénom = "Marie" adresse = "Montrouge" naissance = 4/12/1992 possède possède JeanDupont : Personne nom = "Dupont" prénom = "Jean" adresse = "Montrouge" naissance = 20/08/1990 sesComptes possède possède MonCompteJoint : Compte numéro = 854126 devise = EUR solde = 2215,03 MonLivretA : Compte numéro = 123456 devise = EUR solde = 3509,43 MonCompteSuisse : Compte numéro = 70054568 devise = CHF solde = 121000 D. Longuet - UML 8
  • 9. Relations entre objets Association entre objets ● relation binaire (en général) ● au plus un lien entre deux objets MarieDupont : Personne nom = "Dupont" prénom = "Marie" adresse = "Montrouge" naissance = 4/12/1992 possède possède JeanDupont : Personne nom = "Dupont" prénom = "Jean" adresse = "Montrouge" naissance = 20/08/1990 possède possède sesPropriétaires MonCompteJoint : Compte numéro = 854126 devise = EUR solde = 2215,03 MonLivretA : Compte numéro = 123456 devise = EUR solde = 3509,43 MonCompteSuisse : Compte numéro = 70054568 devise = CHF solde = 121000 D. Longuet - UML 9
  • 10. Relations entre classes Association entre classes : Relation binaire (en général) Rôle : Nomme l'extrémité d'une association, permet d'accéder aux objets liés par l'association à un objet donné Cardinalité : Contraint le nombre d'objets liés par l'association nom : string prénom : string adresse : string naissance : Date ouvrirCompte(init : float) D. Longuet - UML Compte rôle Personne sesComptes sesPropriétaires 1..2 cardinalité possède nom de l'association (optionnel) * numéro : int devise : Devise solde : float déposer(montant : float) retirer(montant : float) solde() : float 10
  • 11. Attribut et association Association ● Deux attributs implicites ● Explicitée comme attributs en phase de conception détaillée, qui porteront les noms des rôles de l'association Exemple de diagramme en conception Compte Personne nom : string prénom : string adresse : string naissance : Date ouvrirCompte(init : float) D. Longuet - UML sesPropriétaires 1..2 sesComptes * numéro : int devise : Devise solde : float déposer(montant : float) retirer(montant : float) solde() : float 11
  • 12. Attribut et association Association ● Deux attributs implicites ● Explicitée comme attributs en phase de conception détaillée, qui porteront les noms des rôles de l'association Exemple de diagramme en conception détaillée Personne nom : string prénom : string attributs correspondants adresse : string aux deux rôles de l'association naissance : Date sesComptes : Collection(Compte) ouvrirCompte(init : float) D. Longuet - UML Compte numéro : int devise : Devise solde : float sesPropriétaires : Personne[2] déposer(montant : float) retirer(montant : float) solde() : float 12
  • 13. Attribut et association Association ● Deux attributs implicites ● Explicitée comme attributs en phase de conception détaillée, qui porteront les noms des rôles de l'association Par conséquent, pas de référence à un objet dans un attribut s'il existe une association vers cet objet Compte Personne nom : string prénom : string adresse : string naissance : Date sesComptes : List(Compte) ouvrirCompte(init : float) D. Longuet - UML sesPropriétaires 1..2 sesComptes * numéro : int devise : Devise solde : float sesPropriétaires : Personne[2] déposer(montant : float) retirer(montant : float) solde() : float 13
  • 14. Cardinalités Nombre de B associés à un A A A n n,m,p B Exactement n B Exactement n ou m ou p A n..m B Entre n et m A n..* B Au moins n A * B Plusieurs (0 ou plus) D. Longuet - UML 14
  • 15. Association réflexive Diagramme de classes Personne nom : string prénom : string naissance : Date parents 2 * enfants association réflexive (d'une classe vers elle-même) Exemple de diagramme d'objets JeanDupont : Personne AnneBérou : Personne nom = "Bérou" prénom = "Anne" naissance = 14/12/1965 MichelDupont : Personne nom = "Dupont" prénom = "Michel" naissance = 2/09/1959 D. Longuet - UML MarieDupont : Personne nom = "Dupont" prénom = "Jean" naissance = 20/08/1990 nom = "Dupont" prénom = "Marie" naissance = 4/12/1992 PierreDupont : Personne nom = "Dupont" prénom = "Pierre" naissance = 30/05/1992 LucieDupont : Personne nom = "Dupont" prénom = "Lucie" naissance = 10/02/1996 VictorDupont : Personne nom = "Dupont" prénom = Victor naissance = 12/07/2012 15
  • 16. Association multiple plusieurs associations entre deux classes Diagramme de classes Personne nom : string prénom : string naissance : Date propose 1 loue * Appartement * adresse : string pièces : int * loyer : float Exemple de diagramme d'objets JeanDupont : Personne nom = "Dupont" prénom = "Jean" naissance = 20/08/1990 loue propose AlainDupuis : Personne nom = "Dupuis" prénom = "Alain" naissance = 15/01/1983 D. Longuet - UML BLR145 : Appartement adresse = "145 av gal Leclerc, Bourg-la-Reine" pièces = 2 loyer = 900 Cach23 : Appartement loue adresse = "23 rue Dumotel, Cachan" pièces = 3 loyer = 1200 16
  • 17. Navigabilité Orientation d'une association ● Restreint l'accessibilité des objets ● Depuis un A, on a accès aux objets de B qui lui sont associés, mais pas l'inverse A rôle rôle B Exemple (listes chaînées) Liste tête 1 0..1 Nœud contenu : int 1 0..1 suivant Par défaut, associations navigables dans les deux sens (pas de flèche) D. Longuet - UML 17
  • 18. Classe-association Permet de paramétrer une association entre deux classes par une classe Personne nom : string prénom : string naissance : Date 1..* * Entreprise nom : string Emploi intitulé : string début : Date fin : Date classe-association Équivalence en termes de classes et d'associations Personne nom : string prénom : string naissance : Date D. Longuet - UML Emploi 1 * intitulé : string début : Date fin : Date 1..* 1 Entreprise nom : string 18
  • 19. Classe-association Exemple de diagramme d'objets Développeur : Emploi MarieDupont : Personne nom = "Dupont" prénom = "Marie" naissance = 4/12/1992 intitulé = "Développeur web" début = ... fin = ... SecrétaireRH : Emploi JeanDupont : Personne nom = "Dupont" prénom = "Jean" naissance = 20/08/1990 AlainDupuis : Personne nom = "Dupuis" prénom = "Alain" naissance = 15/01/1983 D. Longuet - UML intitulé = "Secrétaire RH" début = ... fin = ... RespClientEssilor : Emploi intitulé = "Responsable clients" début = ... fin = ... Essilor : Entreprise nom = "Essilor" ville = "Créteil" Fnac : Entreprise nom = "Fnac" ville = "Bordeaux" RespClientFnac : Emploi intitulé = "Responsable clients" début = ... fin = ... 19
  • 20. Association n-aire Association reliant plus de deux classes Étudiant Enseignant 1 1..* 1 association ternaire Cours Utiliser de préférence des classes-associations D. Longuet - UML 20
  • 21. Agrégation Association particulière entre classes ● Dissymétrique : une classe prédominante sur l'autre ● Relation de type composant-composite Deux types d'agrégation ● Agrégation faible ● Composition Pièce 1..* 3..* agrégation faible D. Longuet - UML Mur * 1 Brique composition 21
  • 22. Agrégation faible Agrégation par référence ● Le composite fait référence à ses composants ● La création ou destruction du composite est indépendante de la création ou destruction de ses composants ● Un objet peut faire partie de plusieurs composites à la fois Exemple ● Une pièce est composée de murs ● Un mur peut être commun à plusieurs pièces Pièce 1..* 3..* Mur agrégation faible D. Longuet - UML 22
  • 23. Composition Agrégation par valeur ● Le composite contient ses composants ● La création ou destruction du composite entraîne la création ou destruction de ses composants ● Un objet ne fait partie que d'un composite à la fois Exemple ● Un mur est composé de briques ● Une brique n'appartient qu'à un mur Mur * 1 Brique composition D. Longuet - UML 23
  • 24. Hiérarchie de classes Principe : Regrouper les classes partageant des attributs et des opérations et les organiser en arborescence Spécialisation : raffinement d'une classe en une sous-classe Généralisation : abstraction d'un ensemble de classes en super-classe CompteÉpargne CompteCourant numéro : int devise : Devise solde : float découvertAutorisé : float fraisDécouvert : float D. Longuet - UML déposer(montant : float) retirer(montant : float) solde() : float numéro : int devise : Devise solde : float plafond : float taux : float déposer (montant : float) retirer(montant : float) solde() : float calculerIntérêts() : float 24
  • 25. Hiérarchie de classes Principe : Regrouper les classes partageant des attributs et des opérations et les organiser en arborescence Spécialisation : raffinement d'une classe en une sous-classe Généralisation : abstraction d'un ensemble de classes en super-classe Compte numéro : int devise : Devise solde : float déposer(montant : float) retirer(montant : float) solde() : float spécialisation découvertAutorisé : float fraisDécouvert : float généralisation CompteÉpargne CompteCourant D. Longuet - UML super-classe sous-classes plafond : float taux : float calculerIntérêts() : float 25
  • 26. Hiérarchie de classes Principe : Regrouper les classes partageant des attributs et des opérations et les organiser en arborescence Héritage : Construction d'une classe à partir d'une classe plus haute dans la hiérarchie (partage des attributs, opérations, contraintes...) Compte numéro : int devise : Devise solde : float déposer(montant : float) retirer(montant : float) solde() : float classes héritant de la classe Compte CompteCourant découvertAutorisé : float fraisDécouvert : float D. Longuet - UML CompteÉpargne plafond : float taux : float calculerIntérêts() : float 26
  • 27. Classe abstraite Classe sans instance car certaines opérations non définies ● Opération non définie en italique ● Nom de la classe en italique (ou stéréotype « abstract ») Exemple : On ne peut pas calculer la surface d'une forme sans savoir de quelle forme il s'agit opération non définie (abstraite) D. Longuet - UML Forme nom : string surface() : float 27
  • 28. Polymorphisme Contexte : Définition d'une opération abstraite dans les classes héritant d'une classe abstraite Opération polymorphe : Opération définie dans différentes sous-classes mais opération spécifique à la sous-classe Forme nom : string surface() : float Rectangle longueur : float largeur : float opération polymorphe Cercle rayon : float surface() : float surface() : float D. Longuet - UML 28
  • 29. Interface Liste d'opérations constituant un contrat à respecter par les classes réalisant l'interface ● Pas une classe, ne peut pas servir à créer des objets ● Toutes les opérations sont abstraites Point abscisse : float ordonnée : float « interface » Comparable égal(Object o) : boolean supérieur(Object o) : boolean égal(Object o) : boolean supérieur(Object o) : boolean classes réalisant l'interface D. Longuet - UML Date jour : int mois : int année : int égal(Object o) : boolean supérieur(Object o) : boolean diff(Date d) : int String content : string égal(Object o) : boolean supérieur(Object o) : boolean print() 29
  • 30. Notations avancées Vecteur - début : Point - longueur : float = 0.0 - angle : float = 0.0 + / fin : Point + contient(in p : Point) : boolean + déplace(inout p : Point) Attributs [visibilité] [dérivé] nomAttribut [: type] [= valeur par défaut] Opérations [visibilité] nomOpération [(liste Paramètres)] [: typeRetour] Paramètre [direction] nom : type [= valeur par défaut] Direction in | out | inout (par défaut : in) D. Longuet - UML 30
  • 31. Notations avancées attributs privés attribut dérivé Vecteur - début : Point - longueur : float = 0.0 - angle : float = 0.0 + / fin : Point + contient(in p : Point) : boolean + déplace(inout p : Point) opérations publiques Visibilité + : public, accessible à toutes les classes # : protégé, accessible uniquement aux sous-classes - : privé, inaccessible à tout objet hors de la classe Pas de visibilité par défaut Attribut dérivé : Peut être calculé à tout moment à partir des autres attributs D. Longuet - UML 31
  • 32. Notations avancées Attributs et opérations de classes ● Attribut de classe : valeur commune à toutes les instances ● Opération de classe : opération sur la classe elle-même (création de nouvelles instances par exemple) ● Soulignés dans la classe Article - référence : int - prixHT : float - nbInstances : int + calculerPrixTTC(taxe : float) : float + créer() + compterInstances() : int D. Longuet - UML 32
  • 33. Contraintes Propriétés : ● Portant sur les éléments du modèle ● Doivent être vérifiées à tout instant ● En général, restriction sur les diagrammes d'objets possibles à partir du diagramme de classes Annotations dans le diagramme de classes ● Sous forme textuelle, entre accolades ● En OCL (Object Constraint Language) D. Longuet - UML 33
  • 34. Contraintes {age = diff(naissance,today)} Personne nom : string naissance : Date / age : int {age ≥ 0} 1 * appartient {subset} 1 administre ● * {ordered} ExpériencesPro entreprise : string entrée : Date sortie : Date ● ● ● D. Longuet - UML * * Groupe thème : string création : Date L'âge est toujours positif L'âge est calculé comme la différence entre la date de naissance et la date d'aujourd'hui L'administrateur d'un groupe en est membre On a accès aux expériences professionnelles dans l'ordre 34
  • 35. Contraintes en OCL Banque nom : string 1..* 1 banque banques 1..* clients Client nom : string naissance : Date 1..* comptes Compte 1 propriétaire comptes numéro : int devise : Devise 1..* solde : float dest 1 1 orig Virement montant : float 0..* date : Date 0..* Tout propriétaire d’un compte est client de la banque hébergeant ce compte. context c : Compte inv : c.banque.clients -> include(c.propriétaire) Tout client d’une banque y possède au moins un compte. context b : Banque inv : b.clients -> forAll(cl | cl.comptes -> select(c | c.banque = b) -> size() >= 1) Les virements ne sont autorisés qu'entre des comptes partageant la même devise. context v : Virement inv : v.orig.devise = v.dest.devise D. Longuet - UML 35