La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

2003/2004Cours d'UML1 Les concepts d’UML - Le langage OCL -

Présentations similaires


Présentation au sujet: "2003/2004Cours d'UML1 Les concepts d’UML - Le langage OCL -"— Transcription de la présentation:

1 2003/2004Cours d'UML1 Les concepts d’UML - Le langage OCL -

2 2003/2004Cours d'UML2 OCL: what is it? OCL: Object Constraint Language Chapter 6 of UML 1.5 Langage formel pour exprimer les contraintes. Expression des invariants d’un système modélisé. Les expressions OCL sont évaluées, n’ont aucun effet de bord. Celui-ci s’applique non seulement au méta-modèle mais aussi au modèle.

3 2003/2004Cours d'UML3 Pourquoi OCL? Un diagramme UML peut manquer de précision pour exprimer tous les aspects d’une spécification. Besoin de décrire des contraintes additionnelles au modèle. Le langage naturel est souvent utilisé Pb: apparition d’ambiguïtés. OCL a pour but de combler ce manque! Langage formel  aucune ambiguïté Pure langage d’expression  aucun effet de bord Ce n’est pas un langage de programmation  ne modifie pas le modèle.

4 2003/2004Cours d'UML4 OCL: Comment l’utiliser Utilisation d’OCL dans plusieurs cas: Spécifier les invariants des classes et types du modèle de classes Spécifier les invariants pour les stéréotypes Décrire les pre et post conditions sur les opérations et méthodes. Décrire les gardes L’utiliser comme langage de navigation Spécifier les contraintes sur les opérations

5 2003/2004Cours d'UML5 OCL: Comment l’écrire? De manière graphique: De manière textuelle: Contexte Expression OCL Ex: context Compagny inv: self.numberOfEmployees > 50 {Règle OCL} Entité UML

6 2003/2004Cours d'UML6 OCL: Le contexte (1/2) Le contexte s’écrit de la manière suivante : Context entitéUML typeDecontexte [nomDeLaRègle]: Ex: Context compagny inv: Context c:Compagny inv enoughEmployees:

7 2003/2004Cours d'UML7 Dans le cas d’un contexte invariant: Context entitéUML inv: Expression OCL Ex: context Compagny inv: self.numberOfEmployees > 50

8 2003/2004Cours d'UML8 OCL: Le contexte (2/2) Dans le cas d’un contexte pre et postconditions S’applique aux opérations Context typeName::opérationName(param1: type1,...):ReturnType pre : param1>... post: result =... Ex: Context Person::income(date:Date):Integer post: result = 5000

9 2003/2004Cours d'UML9 OCL: Écriture d’une expression Type de base: Booléen : Boolean Entier : Integer Réel : Real Chaîne de caractères : String Opération sur les types: Booléen : and, or, xor, not, implies, if-then-else Entier : +, -,*, /, abs(), max()… Réel : +, -,*, /, floor(),max()… Chaîne de caractères : toUpper(), concat(),size()…

10 2003/2004Cours d'UML10 OCL: Écriture d’une expression Accès au propriété d’un objet: Objet.propriété Accès à un attribut: Ex: context Person inv: self.age > 0 Accès à une opération: Ex : aPerson.income(aDate)

11 2003/2004Cours d'UML11 OCL: Écriture d’une expression Accès à une fin d’association Objet.nomDuRôleOpposé context Company inv: self.manager.isUnemployed = false inv: self.employee->notEmpty() context Person inv: self.employer->isEmpty() -- Ensemble de personnes qui ont -- le rôle employeur

12 2003/2004Cours d'UML12 OCL: Écriture d’une expression Navigation vers la classe associations Context Person inv: self.employeeRanking[bosses]->sum() > 0  Ensemble des « employeeRanking » qui appartiennent à la collection « bosses »

13 2003/2004Cours d'UML13 OCL: Écriture d’une expression Quelques opérateurs Accès aux propriétés des supertypes Context B inv: Self.oclAsType(A).attributeA Self.attributeA Nous avons accès à la propriété définie dans la classe A. Ensuite, nous accédons à la propriété définie dans la classe B.

14 2003/2004Cours d'UML14 OCL: Écriture d’une expression Les notions d’ensemble: Set C’est un ensemble au sens mathématique, les doublons ne sont pas admis. {1, 5, 4, 8} Bag Cet ensemble accepte plusieurs même éléments, les doublons sont admis. {1, 1, 5, 4, 4, 8} Sequence Cet ensemble peut contenir des doublons et tous ses éléments sont ordonnés. {1, 1, 4, 4, 5, 8}

15 2003/2004Cours d'UML15 OCL: Écriture d’une expression Celui-ci est utilisé pour spécifier les pre et post-conditions sur les opérations et méthodes dans UML. Il indique la valeur de la propriété au début de l’opération. Il est post fixé Ex: context Person::birthdayHappens() post: + 1

16 2003/2004Cours d'UML16 OCL: Écriture d’une expression Sélection dans un sous ensemble Collection->select(…) Ex : context Company inv: self.employee->select(age>50)->notEmpty() Rejet d’un élément d’une collection Collection->reject(…) Ex: context Company inv: self.employee-> reject (isMarried)->isEmpty()

17 2003/2004Cours d'UML17 OCL: Écriture d’une expression Existence Collection->exist(…) Ex : context Company inv: self.employee->exists(forename =‘Jack’) Iteration collection->iterate(elem:Type;acc:type= )| expression-with-elem-and-acc) Ex : self.employee->iterate(p:Person;acc=Bag{} |acc->including (p.forename<>’Jack’)

18 2003/2004Cours d'UML18 OCL : l’expression « let » ‘Let’ permet de définir un attribut ou une opération dans une contrainte Ex: context Person inv: let income : Integer=self.job.salary-> sum() let hasTitle (t: string):Boolean= self.job->exists(title=t) in if isUnemployed then self.income <100 else self.income>=100 and self.hasTitle(‘manager’) endif

19 2003/2004Cours d'UML19 Manipulation des collections Opérations sur les collections: Collection->size(), Collection->includes(objet), Collection->excludes(objet), Collection->count(objet), Collection->includesAll(collection), Collection->excludesAll(collection), Collection->isEmpty(), Collection->notEmpty(), Collection->sum(), Collection->exist(expressionOCL), Collection->sortedBy(expressionOCL)

20 2003/2004Cours d'UML20 Opérations sur les collections de type Set et Bag set->union (set2:Set(T)) ou Bag->union(bag2:Bag(T)) = set->intersection(set2:Set(T)) ou set->intersection(bag2:Bag(T)) (set ou bag)->select(expressionOCL (set ou bag)->reject(expressionOCL) (set ou bag)->count(object)

21 2003/2004Cours d'UML21 Etude de Cas Système de gestion pour le prêt d’un livre. L’étudiant ne peut emprunter que 4 livres au maximum. La durée de l’emprunt dure 3 semaines. Si le livre est rendu N jours en retard, l’étudiant ne peut pas emprunter de livres pendant N jours. …

22 2003/2004Cours d'UML22 Analyse rapide Déterminons les classes: Livre Auteur Étudiant Emprunt Les attributs Livre: titre Étudiant: nom, prénom, age Auteur: nom, prénom Emprunt: dateDébut, DateFin

23 2003/2004Cours d'UML23 Diagramme de classe 1/2

24 2003/2004Cours d'UML24 Diagramme de classes 2/2

25 2003/2004Cours d'UML25 Cas d’études Les contraintes OCL L’étudiant peut emprunter si il a moins de 4 emprunts en cours. Vérifier la cohérence des dates. Le livre ne peut pas être emprunter s’il est déjà. Lorsqu’un livre est acheté, il peut être emprunté

26 2003/2004Cours d'UML26 Règles OCL Context Etudiant::effectuerEmprunt(livre:Livre) pre :emprunt->size()<4 post : Context Emprunt::emprunt(livre:Livre) Post : dateDebut=System.currentdate Context Livre::emprunter() pre : libre=true post : libre= false Context Etudiant inv: self.dateDebut<=dateFin Context Livre::livre() Post : libre=true

27 2003/2004Cours d'UML27 Améliorations !! Exprimer le fait que la durée de l’emprunt ne doit pas excéder 3 semaines (21 jours). Nous avons oublié que l’étudiant pouvait rendre le livre. Quels sont les éléments à ajouter? Quels sont les contraintes OCL à ajouter?


Télécharger ppt "2003/2004Cours d'UML1 Les concepts d’UML - Le langage OCL -"

Présentations similaires


Annonces Google