Fnac
Le langage de contraintes d'UML
Eric Cariou
19/11/2003
LIFL
1
Le langage de contraintes OCL
Plan
1. 2. 3. 4. Pourquoi OCL ? Introduction par l'exemple Les principaux concepts d'OCL Exemple d'application sur un autre modèle Utilisation en pratique d'OCL lors d'un développement logiciel
LIFL
2
Le langage de contraintes OCL
Exemple d'application
Application banquaire : Des comptes banquaires Des clients Des banques Spécification : Un compte doit avoir un solde toujours positif Un client peut posséder plusieurs comptes Un client peut être client de plusieurs banques Un client d'une banque possède au moins un compte dans cette banque Une banque gère plusieurs comptes Une banque possède plusieurs clients
LIFL 3 Le langage de contraintes OCL
Diagramme de classe
Banque
* clients *
1
Personne int age propriétaire 1
*
Compte int solde
*
créditer(int) débiter(int) int getSolde()
LIFL
4
Le langage de contraintes OCL
Manque de précision
Le diagramme de classe ne permet pas d'exprimer tout ce qui est défini dans la spécification informelle Exemple : Le solde d'un compte doit toujours être positif ⇒ ajout d'une contrainte sur cet attribut Le diagramme de classe permet-il de détailler toutes les contraintes sur les relations entre les classes ?
LIFL
5
Le langage de contraintes OCL
Diagramme d'instances
Banque
Banque:B1
* clients *
Compte:Co1 Personne:P1
1
Personne int age propriétaire 1
*
Compte int solde
Banque:B2
*
{ solde > 0 } Personne:P2
Compte:Co2
créditer(int) débiter(int) int getSolde()
Diagramme d'instances valide vis-à-vis du diagramme de classe et de la spécification attendue
LIFL 6 Le langage de contraintes OCL
Diagramme d'instances
Banque
* clients Banque:B1
*
Personne:P1
1
Personne int age propriétaire 1
Compte:Co1
*
Compte int solde
Banque:B2
Compte:Co2 créditer(int)