Object Constraint Language (OCL) Une introduction

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimension: px
Commencer à balayer dès la page:

Download "Object Constraint Language (OCL) Une introduction"

Transcription

1 Object Constraint Language (OCL) Une introduction Master 2 IFPRU - Module Ingénierie des modèles - FMIN310 Marianne Huchard 7 novembre Présentation générale OCL est un langage formel, basé sur la logique des prédicats du premier ordre, pour annoter les diagrammes UML en permettant notamment l expression de contraintes. 1.1 Objectif du langage Voici les arguments avancés pour l introduction d OCL. Accompagner les diagrammes UML de descriptions : précises non ambiguës Eviter cependant les désavantages des langages formels traditionnels qui sont peu utilisables par les utilisateurs et les concepteurs qui ne sont pas rompus à l exercice des mathématiques : rester facile à écrire... et facile à lire Dans le cadre de l ingénierie des modèles, la précision du langage OCL est nécessaire pour pouvoir traduire automatiquement les contraintes OCL dans un langage de programmation afin de les vérifier pendant l exécution d un programme. 1.2 Historique OCL s inspire de Syntropy [CD94] méthode basée sur une combinaison d OMT (Object Modeling Technique) [RBE + 97] et d un sous-ensemble de Z. A l origine, OCL a été développé en 1997 par Jos Warmer (IBM), sur les bases du langage IBEL (Integrated Business Engineering Language). Il a été formellement intégré à UML 1.1 en Nous présentons dans ce document OCL tel qu il est proposé dans la version UML 2.0 [OMG03a]. Vous trouverez dans [MG00] une présentation d OCL (UML 1.4) qui a servi de base à la réalisation de ce support de cours, et dans [Nyt] quelques exemples complémentaires. 1

2 1.3 Principe La notion de contrainte Une contrainte est une expression à valeur booléenne que l on peut attacher à n importe quel élément UML. Elle indique en général une restriction ou donne des informations complémentaires sur un modèle. Langage déclaratif Les contraintes ne sont pas opérationnelles. On ne peut pas invoquer de processus ni d opérations autres que des requêtes. On ne décrit pas le comportement à adopter si une contrainte n est pas respectée. Langage sans effet de bord contraintes. Les instances ne sont pas modifiées par les 1.4 Utilisation Les contraintes servent dans plusieurs situations : description d invariants sur les classes et les types pré-conditions et post-conditions sur les opérations et méthodes contraintes sur la valeur retournée par une opération ou une méthode règles de dérivation des attributs description de cibles pour les messages et les actions expression des gardes (conditions dans les diagrammes dynamiques) invariants de type pour les stéréotypes Les contraintes servent en particulier à décrire la sémantique d UML ou de ses diverses extensions, en participant à la définition des profils. 2 La notion de contexte Une contrainte OCL est liée à un contexte, qui est le type, l opération ou l attribut auquel la contrainte se rapporte. context moncontexte <stéréotype> : Expression de la contrainte Personne age : entier /majeur : booléen + getage():entier {query} + setage(in a : entier) Fig. 1 Une classe Personne Le stéréotype peut prendre les valeurs suivantes : inv invariant de classe pre précondition post postcondition body indique le résultat d une opération query 2

3 init indique la valeur initiale d un attribut derive indique la valeur dérivée d un attribut Par exemple, on peut définir les contraintes suivantes dans le contexte de la classe Personne de la figure 1, puis dans le contexte de ses méthodes setage, getage et pour son attribut age. context Personne inv : (age <= 140) and (age >=0) - - l âge est compris entre 0 et 140 ans On peut placer des commentaires dans les expressions OCL, ils débutent par deux tirets et se prolongent jusqu à la fin de la ligne. context Personne::setAge(a :entier) pre : (a <= 140) and (a >=0) and (a >= age) post : age = a on peut écrire également a=age context Personne::getAge() :entier body : age context Personne::age :entier init : 0 context Personne::majeur :booléen derive : age>=18 Version visuelle La figure 2 présente une version alternative, graphique, de la contrainte sur l âge de la personne. Personne age : entier + setage(in a : entier) {<<invariant>> (age<=140 and age >=0) } Fig. 2 Une classe Personne Nommage de la contrainte context Personne inv ageborné : (age <= 140) and (age >=0) - - l âge ne peut depasser 140 ans Utilisation du mot-clef self pour désigner l objet Notez le caractère. qui offre la navigation (accès) à l attribut. context Personne inv : (self.age <= 140) and (self.age >=0) - - l âge ne peut depasser 140 ans 3

4 Utilisation d un nom d instance formel context p :Personne inv : (p.age <= 140) and (p.age >=0) - - l age ne peut depasser 140 ans Question 2.1 Ajoutez un attribut mère de type Personne dans la classe Personne. Ecrivez une contrainte précisant que la mère d une personne ne peut être cette personne elle-même et que l âge de la mère doit être supérieur à celui de la personne. Réponse 2.1 context Personne inv : self.mère <> self and self.mère.age > self.age 3 Types OCL La figure 3 présente la hiérarchie des types en OCL. Nous les décrirons progressivement dans cette section et dans les suivantes. OclAny OclType OclModelElement Réel Booléen String OclState Tuple Collection types et éléments du modèle Entier types de base prédéfinis Set OrderedSet Bag Sequence... OclVoid Fig. 3 La hiérarchie des types en OCL 3.1 Types de base Les types de base prédéfinis sont les suivants. Entier (Integer) Réel (Real) String Booléen (Boolean) Quelques types spéciaux s y ajoutent, en particulier : OclModelElement (énumération des éléments du modèle) OclType (énumération des types du modèle) OclAny (tout type autre que Tuple et Collection) OclState (pour les diagrammes d états) OclVoid sous-type de tous les types 4

5 Entier opérateurs = <> + - * / abs div mod max min < > <= >= - est unaire ou binaire Réel opérateurs = <> + - * / abs floor round max min < > <= >= - est unaire ou binaire String opérateurs = size() concat(string) toupper() tolower() substring(entier, Entier) Les chaînes de caractères constantes s écrivent entre deux simples quotes : voici une chaîne Booléen opérateurs = or xor and not b1 implies b2 if b then expression1 else expression2 endif Quelques exemples d utilisation des opérateurs booléens, sur la figure 4. Personne age : entier majeur : Booléen marié : Booléen catégorie : enum {enfant,ado,adulte} Fig. 4 La classe Personne précisée context Personne inv : marié implies majeur context Personne inv : if age >=18 then majeur=vrai else majeur=faux endif Cette dernière contrainte peut être plus concise (nous l avons même déjà écrite avec derive) : context Personne inv : majeur = age >=18 5

6 précédence des opérateurs. -> not - unaire * / + - if then else < > <= >= <> = and or xor implies 3.2 Types énumérés Leurs valeurs apparaissent précédées de #. Par exemple, pour donner un invariant supplémentaire pour la figure 4, nous pourrions écrire : context Personne inv : if age <=12 then catégorie =#enfant else if age <=18 then catégorie =#ado else catégorie=#adulte endif endif Cet invariant peut aussi s écrire avec derive. 3.3 Types des modèles Les types des modèles utilisables en OCL sont les «classificateurs», notamment les classes, les interfaces et les associations. On peut écrire en particulier des expressions impliquant des objets dont les types sont reliés par une relation de spécialisation, grâce aux opérateurs : oclastype(t) (conversion ascendante ou descendante de type vers t) ; la conversion ascendante sert pour l accès à une propriété redéfinie ; la conversion descendante sert pour l accès à une nouvelle propriété. oclistypeof(t) (vrai si t est supertype direct) ocliskindof(t) (vrai si t est supertype indirect) Dans le cadre de la figure 5, nous pourrions écrire par exemple les expressions (r est supposé désigner une instance de Rectangle) : p = r p.oclastype(rectangle) r.oclistypeof(rectangle) (vrai) r.ocliskindof(polygone) (vrai) Question 3.1 En supposant l existence d un attribut hauteur dans la classe Rectangle et d une méthode hauteur() :Réel dans Polygone, écrivez une contrainte dans Polygone disant que le résultat de hauteur() :Réel vaut hauteur pour les polygones qui sont des rectangles, sinon 0. Remarquez que c est un exemple de mauvaise conception objet mais une excellente illustration des opérateurs présentés ci-dessus! 6

7 Polygone p : Polygone r : Rectangle Rectangle Fig. 5 Polygones et rectangles Réponse 3.1 context Polygone::hauteur() post : if self.ocliskindof(rectangle) then result=self.oclastype(rectangle).hauteur else result=0 endif 4 Navigation dans les modèles 4.1 Accès aux attributs L accès (navigation) vers un attribut s effectue en mentionnant l attribut, comme nous l avons déjà vu, derrière l opérateur d accès noté. Personne age : Entier Voiture propriétaire : Personne + getage():entier{query} Fig. 6 Personnes et voitures Pour la classe Voiture de la figure 6, on peut ainsi écrire la contrainte ci-dessous. context Voiture inv propriétairemajeur : self.propriétaire.age >= 18 Question 4.1 Ecrivez pour le diagramme de la figure 7 la contrainte qui caractérise l attribut dérivé cartevermeil. Un voyageur a droit à la carte vermeil si c est une femme de plus de 60 ans ou un homme de plus de 65 ans. Réponse 4.1 context Voyageur inv : cartevermeil = ((age >=65) or ((sexe=#féminin) and (age >=60))) Cette contrainte peut également s ecrire avec derive. 7

8 Voyageur nom:string age:int sexe:sexe / cartevermeil:boolean <<enumeration>> Sexe masculin féminin Fig. 7 Voyageur 4.2 Accès aux opérations query Il se fait avec une notation identique (utilisation du. ). Pour la classe Voiture de la figure 6, on peut ainsi réécrire la contrainte propriétairemajeur. context Voiture inv : self.propriétaire.getage() >= Accès aux extrémités d associations La navigation le long des liens se fait en utilisant : soit les noms de rôles soit les noms des classes extrémités en mettant leur première lettre en minuscule, à condition qu il n y ait pas ambiguïté Pour la classe Voiture de la figure 8, on peut ainsi réécrire la contrainte propriétairemajeur. Personne age : Entier + getage():entier{query} possède 1 * propriétaire Voiture Fig. 8 Personnes et voitures (avec association) context Voiture inv : self.propriétaire.age >= 18 context Voiture inv : self.personne.age >= 18 Question 4.2 Donnez un exemple où l utilisation du nom de classe conduit à une ambiguïté. Réponse 4.2 Deux associations entre Voiture et Personne (possède et aconduit) Question 4.3 (Exercice tiré de [Nyt]) Soient deux contraintes associées au diagramme de la figure 9 : context C1 inv : c2.attr2=c2.c3.attr3 8

9 C1 C2 C3 attr1:boolean * attr2:boolean attr3:boolean Fig. 9 Contraintes... context C2 inv : attr2=c3.attr3 Pensez-vous que les deux contraintes soient équivalentes? Réponse 4.3 La première dit que pour des instances de C2 et C3 liées avec une instance de C1 les attributs attr2 et attr3 sont égaux, mais n impose rien à des instances de C2 et C3 non liées à une instance de C1 (et il y en a à cause de la multiplicité). La deuxième dit que pour tout couple d instances de C2 et C3 liées, ces deux attributs sont égaux. 4.4 Navigation vers les classes association Pour naviguer vers une classe association, on utilise le nom de la classe (en mettant le premier caractère en minuscule). Par exemple dans le cas du diagramme de la figure 10 1 : context p :Personne inv : p.contrat.salaire >= 0 Ou encore, on précise le nom de rôle opposé (c est même obligatoire pour une association réflexive) : context p :Personne inv : p.contrat[employeur].salaire >= 0 Entreprise 0..1 emploie * employeur employé responsable Personne agentsecrétariat Contrat typecontrat dateembauche salaire encadre Encadrement datedébut évaluations Fig. 10 Emploi Pour naviguer depuis une classe association, on utilise les noms des rôles ou de classes. La navigation depuis une classe association vers un rôle ne peut donner qu un objet. Dans l exemple ci-dessous, c est un lien, qui associe par définition une seule entreprise à un seul employé. context c :Contrat inv : c.employé.age >= 16 1 en UML 2, contrairement à UML 1.xx, le nom de la classe d association et le nom de l association devraient être identiques car il s agit d un même élément UML ; le diagramme est donc ici écrit en UML 1.xx 9

10 Question 4.4 Dans la même figure 10, exprimez par une contrainte : le fait que le salaire d un agent de secrétariat est inférieur à celui de son responsable ; un agent de secrétariat a un type de contrat "agentadministratif" ; un agent de secrétariat a une date d embauche antérieure à la date de début de l encadrement (on suppose que les dates sont des entiers) ; écrire la dernière contrainte dans le contexte Personne. Réponse 4.4 Le salaire d un agent de secrétariat est inférieur à celui de son responsable. context e :encadrement inv : e.responsable.contrat.salaire >= e.agentsecrétariat.contrat.salaire Un agent de secrétariat a un type de contrat "agentadministratif". context e :encadrement inv : e.agentsecrétariat.contrat.typecontrat= agentadministratif Un agent de secrétariat a une date d embauche antérieure à la date de début de l encadrement (on suppose que les dates sont des entiers). context e :encadrement inv : e.agentsecrétariat.contrat.dateembauche <= e.datedebut L écrire dans le contexte Personne... context p :Personne inv : p.agentsecrétariat.contrat.dateembauche <= p.encadrement[agentsecrétariat].datedebut Dans ce dernier cas, pour être rigoureux il faudrait vérifier de manière préliminaire que p.agentsecrétariat est valué, mais nous ne verrons que plus loin dans le cours comment faire. 5 Eléments du langage 5.1 Désignation de la valeur antérieure Dans une post-condition, il est parfois utile de pouvoir désigner la valeur d une propriété avant l exécution de l opération. Ceci se fait en suffixant le nom de la propriété Par exemple, pour décrire une nouvelle méthode de la classe Personne : context Personne::feteAnniversaire() pré : age < 140 post : age =

11 5.2 Définition de variables et d opérations On peut définir des variables pour simplifier l écriture de certaines expressions. On utilise pour cela la syntaxe : let variable : type = expression1 in expression2 Par exemple, avec l attribut dérivé impot dans Personne, on pourrait écrire : context Personne inv : let montantimposable : Réel = contrat.salaire*0.8 in if (montantimposable >= ) then impot = montantimposable*45/100 else if (montantimposable >= 50000) then impot = montantimposable*30/100 else impot = montantimposable*10/100 endif endif Là encore, il serait plus correct de vérifier tout d abord que contrat est valué. Si on veut définir une variable utilisable dans plusieurs contraintes de la classe, on peut utiliser la construction def. context Personne def : montantimposable : Réel = contrat.salaire*0.8 Lorsqu il est utile de définir de nouvelles opérations, on peut procéder avec la même construction def. context Personne def : agecorrect(a :Réel) :Booléen = a>=0 and a<=140 Une telle définition permet de réécrire la pré-condition de l opération setage et l invariant sur l âge d une personne de manière plus courte. context Personne::setAge(a :entier) pre : agecorrect(a) and (a >= age) context Personne inv : agecorrect(age) - - l âge ne peut depasser 140 ans 5.3 Retour de méthode L objet retourné par une opération est désigné par result. context Personne::getAge() post : result=age Lorsque la postcondition se résume à décrire la valeur du résultat c est donc équivalent à l utilisation de body. 11

12 Question 5.1 Proposez une classe Etudiant, disposant de 3 notes et munie d une opération mention qui retourne la mention de l étudiant sous forme d une chaîne de caractères. Ecrivez les contraintes et en particulier utilisez le let pour écrire la postcondition de mention. Réponse 5.1 context Etudiant::mention() post : let moyenne : Real =(note1+note2+note3)/3 in if (moyenne >= 16) then result= très bien else if (moyenne >= 14) then result= bien else result= moins bien endif endif 6 Collections Collection Set Ensemble mathématique OrderedSet Bag Sequence Ensemble Famille Famille mathématique ordonnée ordonné Fig. 11 Les types de collections 6.1 Types de collections La figure 11 présente les cinq types de collections existant en OCL : Collection est un type abstrait Set correspond à la notion mathématique d ensemble OrderedSet correspond à la notion mathématique d ensemble ordonné Bag correspond à la notion mathématique de famille (un élément peut y apparaître plusieurs fois) Sequence correspond à la notion mathématique de famille, et les éléments sont, de plus, ordonnés. On peut définir des collections par des littéraux de la manière suivante : Set { 2, 4, 6, 8 } OrderedSet { 2, 4, 6, 8 } Bag { 2, 4, 4, 6, 6, 8 } Sequence { le, chat, boit, le, lait } Sequence { } spécification d un intervalle d entiers Les collections peuvent avoir plusieurs niveaux, il est possible de définir des collections de collections, par exemple : Set { 2, 4, Set {6, 8 }} 12

13 6.2 Les collections comme résultats de navigation Set On obtient naturellement un Set en naviguant le long d une association ordinaire (ne mentionant pas bag ou seq à l une de ses extrémités). Par exemple, pour la figure 10, l expression self.employé dans le contexte Entreprise est un Set. Bag La figure 12 illustre une navigation permettant d obtenir un Bag : c est le résultat de l expression self.occurrence.mot dans le contexte Texte. Cette expression est, par ailleurs, un raccourci pour une notation que nous verrons ci-après. Texte * Occurrence * 1 Mot Fig. 12 Occurrences de mots dans un texte OrderedSet On peut obtenir un ensemble ordonné en naviguant vers une extrémité d association munie de la contrainte ordonné, par exemple avec l expression self.personne dans le contexte FileAttente. FileAttente {ordonné} 0..1 * Fig. 13 File d attente Personne Sequence On peut obtenir une séquence en naviguant vers une extrémité d association munie de la contrainte seq, par exemple avec l expression self.mot dans le contexte Texte de la figure 14. Texte * {seq} * Mot Fig. 14 Une autre représentation des textes Question 6.1 Qu obtient-on en accédant à un attribut multi-valué? Réponse 6.1 (Question 6.1) On obtient un bag si une valeur peut être répétée plusieurs fois ; une séquence si les valeurs sont de plus ordonnées ; un set s il n y a jamais de doublon dans les valeurs ; un orderedset si les valeurs sont de plus ordonnées. 13

14 6.3 Opérations de Collection Notez que les langages de transformation de modèles qui voient le jour actuellement disposent d opérateurs assez semblables à ceux proposés par OCL, à des fins de parcours des modèles Remarques générales Dans la suite, nous considérons des collections d éléments de type T. Appel avec -> Les opérations sur une collection sont généralement mentionnées Itérateurs Les opérations qui prennent une expression comme paramètre peuvent déclarer optionnellement un itérateur, par exemple toute opération de la forme operation(expression) existe également sous deux formes plus complexes. operation(v expression-contenant-v) operation(v : T expression-contenant-v) Opérations sur tous les types de collections isempty() :Boolean notempty() :Boolean Permettent de tester si la collection est vide ou non. Ils servent en particulier à tester l existence d un lien dans une association dont la multiplicité inclut 0. Pour revenir sur l exemple des employés (dernière question) : context p :Personne inv : p.agentsecretariat->notempty() implies p est un responsable p.agentsecrétariat.contrat.dateembauche <= p.encadrement[agentsecrétariat].datedebut size() :Entier Donne la taille (nombre d éléments). count(unobjet :T) :Entier Donne le nombre d occurrences de unobjet. sum() :T Addition de tous les éléments de la collection (qui doivent supporter une opération + associative) Nous pouvons par exemple définir une variable représentant l âge moyen des employés d une entreprise. context e :Entreprise def : agemoyen : Real = e.employé.age->sum() / e.employé.age->size() Ou encore, pour une classe Etudiant généralisée, disposant d un attribut notes :Real[*], on peut définir la variable moyenne. context e :Etudiant def : moyenne : Real = e.notes->sum() / e.notes->size() 14

15 includes(o :T) :Boolean excludes(o :T) :Boolean Retourne vrai (resp. faux) si et seulement si o est (resp. n est pas) un élément de la collection. Toujours pour la classe Etudiant généralisée, disposant d un attribut notes :Real[*], on peut définir l opération esteliminé() :Boolean. Un étudiant est éliminé s il a obtenu un zéro. context e :Etudiant def : esteliminé() : Boolean = e.notes->includes(0) includesall(c :Collection(T)) :Boolean excludesall(c :Collection(T)) :Boolean Retourne vrai (resp. faux) si et seulement si la collection contient tous les (resp. ne contient aucun des) éléments de c. forall(uneexpression :Boolean) :Boolean Vaut vrai si et seulement si uneexpression est vraie pour tous les éléments de la collection. Dans une entreprise, une contrainte est que tous les employés aient plus de 16 ans. context e :Entreprise inv : e.employe->forall(emp :Personne emp.age >= 16) Cette opération a une variante permettant d itérer avec plusieurs itérateurs sur la même collection. On peut ainsi parcourir des ensembles produits de la même collection. forall(t1,t2 :T expression-contenant-t1-et-t2) En supposant que la classe Personne dispose d un attribut nom, on peut admettre que deux employés différents n ont jamais le même nom. context e :Entreprise inv : e.employe->forall(e1,e2 :Personne e1 <> e2 implies e1.nom <> e2.nom) exists(uneexpression :Boolean) Vrai si et seulement si au moins un élément de la collection satisfait uneexpression. Dans toute entreprise, il y a au moins une personne dont le contrat est de type "agent administratif". context e :Entreprise inv : e.contrat->exists(c :Contrat c.typecontrat= agent administratif ) iterate(i :T ; acc :Type = uneexpression ExpressionAvecietacc) : Cette opération permet de généraliser et d écrire la plupart des autres. i est un itérateur sur la collection acc est un accumulateur initialisé avec uneexpression L expression ExpressionAvecietacc est évaluée pour chaque i et son résultat est affecté dans acc. Le résultat de iterate est acc. Cette opération permet dans l exemple ci-dessous de caractériser le résultat d une hypothétique opération massesalariale d une entreprise. 15

16 context Entreprise::masseSalariale() :Real post : result = employé->iterate(p :Personne ; ms :Real=0 ms+p.contrat.salaire) Question 6.2 Ecrire size et forall dans le contexte de la classe Collection. Réponse 6.2 (Question 6.2) Voici comment ces méthodes sont spécifiées dans [OMG01]. context Collection : :size() post : result = self->iterate(elem ; acc :Integer=0 acc+1) context Collection : :forall(expr) post : result = self->iterate(elem ; acc :Boolean=true acc and expr) isunique(uneexpression :BooleanExpression) :Boolean Vrai si et seulement si uneexpression s évalue avec une valeur distincte pour chaque élément de la collection. sortedby(uneexpression) :Sequence Retourne une séquence contenant les éléments de la collection triés par ordre croissant suivant le critère uneexpression. L évaluation de uneexpression doit donc supporter l opération <. Question 6.3 Ecrire la post condition d une méthode salariéstriés dans le contexte de la classe Entreprise. Cette méthode retourne les employés ordonnés suivant leur salaire. Réponse 6.3 (Question 6.3) context Entreprise : : salariestries() :OrderedSet(Personne) post : result = self.employe->sortedby(p p.contrat.salaire) any(uneexpression :OclExpression) :T Retourne n importe quel élément de la collection qui vérifie uneexpression. one(uneexpression :OclExpression) :Booléen Vrai si et seulement si un et un seul élément de la collection vérifie uneexpression Opérations sur tous les types de collections, définies spécifiquement sur chaque type Le lecteur doit être averti du fait que la présentation des opérateurs proposée ci-dessous privilégie la concision de l exposé. Certaines opérations ont des signatures plus précises que celles mentionnées ici. Par exemple select, commune aux trois types de collection concrets, n est pas définie dans Collection, mais seulement dans les types concrets avec des signatures spécifiques : 16

17 select(expr :BooleanExpression) : Set(T) select(expr :BooleanExpression) : OrderedSet(T) select(expr :BooleanExpression) : Bag(T) select(expr :BooleanExpression) : Sequence(T) Dans un tel cas, nous présentons une généralisation de ces opérations select(expr :BooleanExpression) : Collection(T) Le lecteur est renvoyé à la documentation OCL [OMG03a] pour les signatures précises. select(expr :BooleanExpression) : Collection(T) reject(expr :BooleanExpression) : Collection(T) Retourne une collection du même type construite par sélection des éléments vérifiant (resp. ne vérifiant pas) expr. L expression représentant dans le contexte d une entreprise les employés âgés de plus de 60 ans serait la suivante : self.employé->select(p :Personne p.age>=60) collect(expr :BooleanExpression) : Collection(T) Retourne une collection composée des résultats successifs de l application de expr à chaque élément de la collection. La manière standard d atteindre les mots d un texte s écrit ainsi dans le contexte d un texte (Figure 12) : self.occurrence->collect(mot) self.occurrence->collect(o o.mot) self.occurrence->collect(o :Occurrence o.mot) Comme nous l avons évoqué précédemment, cette notation admet un raccourci : self.occurrence.mot including(unobjet :T) :Collection(T) excluding(unobjet :T) :Collection(T) Retourne une collection résultant de l ajout (resp. du retrait) de unobjet à la collection. On peut ainsi décrire la post-condition d une opération embauche(p :Personne) de la classe Entreprise. context Entreprise : :embauche(p :Personne) post : opération = union(c :Collection) :Collection 17

18 6.4 Opérations de conversion Chaque sorte de collection (set, orderedset, sequence, bag) peut être transformée dans n importe quelle autre sorte. Par exemple un Bag peut être transformé en : sequence par l opération assequence() :Sequence(T) ; l ordre résultant est indéterminé ensemble par l opération asset() :Set(T) ; les doublons sont éliminés ensemble ordonné par l opération asorderedset() :OrderedSet(T) ; les doublons sont éliminés ; l ordre résultant est indéterminé. A titre d illustration, si nous voulons exprimer le fait que le nombre de mots différents d un texte est plus grand que deux (figure 12) : context Texte inv : self.occurrence->collect(mot)->asset()->size() >= Opérations propres à Set et Bag intersection 6.6 Opérations propres à OrderedSet et Sequence ajout d un objet à la fin append(unobjet : T) : OrderedSet(T) pour les ensembles ordonnés append(unobjet : T) : Sequence(T) pour les séquences ajout d un objet au début prepend(unobjet : T) : OrderedSet(T) pour les ensembles ordonnés prepend(unobjet : T) : Sequence(T) pour les séquences objets d un intervalle suborderedset(inf :Entier, sup :Entier) : OrderedSet(T) pour les ensembles ordonnés subsequence(inf :Entier, sup :Entier) : Sequence(T) pour les séquences at(inf :Entier) : T first() : T last() : T insertion d un objet à un certain indice insertat(i :Integer, o :T) : OrderedSet(T) pour les ensembles ordonnés insertat(i :Integer, o :T) : Sequence(T) pour les séquences indexof(o :T) : Integer Question 6.4 Ecrire la post-condition de sortedby 6.7 Relation de «conformance de type» La figure 15 présente les relations de conformance de type prévues en OCL. Si la classe Assiette est sous-classe de Vaisselle, on peut en déduire : 18

19 Collection(X) Type2 Set(Type2) Sous types Sous types Sous types Set(X) OrderedSet(X) Bag(X) Sequence(X) Type1 Set(Type1) Fig. 15 Sous-typage de types paramétrés Set(Assiette) se conforme à Collection(Assiette) Set(Assiette) se conforme à Set(Vaisselle) Set(Assiette) se conforme à Collection(Vaisselle) OCL parle même de relation de sous-typage. Nous étudions la question de la substituabilité sur un bref exemple qui peut être généralisé et qui illustre le fait que, les collections étant constantes, la conformance rejoint ici la substituabilité. Prenons le cas d un Set(Assiette). Considéré comme un Set(Vaisselle), on peut lui appliquer l opération including(object :Vaisselle) :Set(Vaisselle) où object peut être tout à fait autre chose qu une assiette. Ce faisant on crée et retourne un Set(Vaisselle) (et non un Set(Assiette)), ce qui n est pas problématique (il n y a pas d erreur de type, on n a pas introduit un verre dans un ensemble d assiettes). 7 Utilisation d OCL pour les gardes et les actions De manière générale, OCL est un langage de navigation qui peut être utilisé dans différents points des diagrammes UML. Nous allons illustrer cet aspect d OCL dans le cadre des diagrammes d états, pour exprimer des gardes et préciser des actions. 7.1 Gardes Les gardes sont des expressions booléennes utilisées dans le cadre des diagrammes UML basés sur les automates d état finis : diagrammes d états et diagrammes d activités. Elles conditionnent le déclenchement d une transition lors de l occurrence d un événement. En UML elles sont notées entre crochets. Les diagrammes d états modélisent le comportement d éléments UML (le plus souvent le comportement d une instance d une classe donnée). Ils se composent d états et de transitions. Un état est un moment de la vie d une instance déterminé par le fait qu elle vérifie une condition particulière, est en train d effectuer une opération ou attend un événement. Il est représenté en UML par une boîte aux angles arrondis. Une transition représente le passage d un état à un autre. Ce passage est déclenché par un événement : une modification (une condition sur l instance devient vraie), l appel d une opération, la réception d un signal asynchrone, la fin d une période de temps. Les gardes sont associées aux transitions, elles sont évaluées lorsqu un événement survient. 19

OCL - Object Constraint Language

OCL - Object Constraint Language OCL - Object Constraint Language Laëtitia Matignon laetitia.matignon@univ-lyon1.fr Département Informatique - Polytech Lyon Université Claude Bernard Lyon 1 2012-2013 Laëtitia Matignon SIMA - OCL - Object

Plus en détail

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e P r o b l é m a t i q u e OCL : O b j e c t C o n s t r a i n t L a n g u a g e Le langage de contraintes d UML Les différents diagrammes d UML permettent d exprimer certaines contraintes graphiquement

Plus en détail

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml OCL Object Constraint Language Le langage de contraintes d'uml Plan 1. Introduction 2. Les principaux concepts d'ocl Object Constraint Language 1 Object Constraint Language 2 Exemple: une application bancaire

Plus en détail

Conception par contrats avec UML

Conception par contrats avec UML Conception par contrats avec UML OCL Object Constraint Language Gerson Sunyé gerson.sunye@univ-nantes.fr LINA Introduction à OCL p.1 Plan Introduction Invariants, pré et post-conditions Spécification de

Plus en détail

Conception par contrats avec UML

Conception par contrats avec UML OCL Object Constraint Language Gerson Sunyé gerson.sunye@univ-nantes.fr Master Alma Université de Nantes 6 avril 2009 G. Sunyé Master Alma U. Nantes 1/ 88 G. Sunyé Master Alma U. Nantes 2/ 88 Conception

Plus en détail

Bases de données Cours 2 : Modélisation d une base de données

Bases de données Cours 2 : Modélisation d une base de données Cours 2 : Modélisation d une base de données POLYTECH Université d Aix-Marseille odile.papini@univ-amu.fr http://odile.papini.perso.esil.univmed.fr/sources/bd.html Plan du cours 1 Modélisation d une base

Plus en détail

Chapitre 2 : Conception de base de données relationnelle

Chapitre 2 : Conception de base de données relationnelle Chapitre 2 : Conception de base de données relationnelle Le modèle entité-association 1. Les concepts de base 1.1 Introduction Avant que la base de données ne prenne une forme utilisable par le SGBD il

Plus en détail

Conventions communes aux profils UML

Conventions communes aux profils UML Conventions communes aux profils UML Auteur : Projet ACCORD (Assemblage de composants par contrats en environnement ouvert et réparti)* Référence : Livrable 2.1 Date : Juin 2002 * : Les partenaires du

Plus en détail

UML Diagramme de classes (class diagram) pour le recueil et l analyse des besoins. Emmanuel Pichon 2013 V1.1

UML Diagramme de classes (class diagram) pour le recueil et l analyse des besoins. Emmanuel Pichon 2013 V1.1 UML Diagramme de classes (class diagram) pour le recueil et l analyse des besoins 2013 V1.1 Objectif Diagramme de classes (class diagram) pour le recueil des besoins et l analyse Présenter un ensemble

Plus en détail

Traduction des Langages : Le Compilateur Micro Java

Traduction des Langages : Le Compilateur Micro Java BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant

Plus en détail

Programmation en Python - Cours 2 : Premiers programmes

Programmation en Python - Cours 2 : Premiers programmes Programmation en Python - Cours 2 : Premiers programmes 2013/2014 Diverses utilisations de python Utilisation en mode interactif Ecriture d un programme python Saisie de données par l utilisateur : input(),

Plus en détail

Examen CAR 2 Heures Tout documents autorisés le 17 Novembre 2005

Examen CAR 2 Heures Tout documents autorisés le 17 Novembre 2005 Examen CAR 2 Heures Tout documents autorisés le 17 Novembre 2005 Rappel : Tout méta-modèle ou profil doit être commenté! 1 Question de compréhension du cours barème indicatif : 5 points Q : Lorsque l on

Plus en détail

Points fixes de fonctions à domaine fini

Points fixes de fonctions à domaine fini ÉCOLE POLYTECHNIQUE ÉCOLE NORMALE SUPÉRIEURE DE CACHAN ÉCOLE SUPÉRIEURE DE PHYSIQUE ET DE CHIMIE INDUSTRIELLES CONCOURS D ADMISSION 2013 FILIÈRE MP HORS SPÉCIALITÉ INFO FILIÈRE PC COMPOSITION D INFORMATIQUE

Plus en détail

Concours 2015 Épreuve d Informatique Filière : MP Durée de l épreuve : 3 heures. L utilisation d une calculatrice est autorisée.

Concours 2015 Épreuve d Informatique Filière : MP Durée de l épreuve : 3 heures. L utilisation d une calculatrice est autorisée. A 2015 INFO. MP École des Ponts ParisTech, SUPAERO (ISAE), ENSTA ParisTech, Télécom ParisTech, Mines ParisTech, Mines de Saint-étienne, Mines Nancy, Télécom Bretagne, ENSAE ParisTech (filière MP), École

Plus en détail

CONCEPTION des SYSTÈMES d INFORMATION UML

CONCEPTION des SYSTÈMES d INFORMATION UML CONCEPTION des SYSTÈMES d INFORMATION UML 4 : Analyse organique Epitech 3 Automne 2007 Bertrand LIAUDET SOMMAIRE ANALYSE ORGANIQUE 2 Diagrammes de séquence 3 Exemple de diagramme de séquence 8 Diagramme

Plus en détail

Introduction aux bases de données Cours 2 : Modélisation d une base de données

Introduction aux bases de données Cours 2 : Modélisation d une base de données Cours 2 : Modélisation d une base de données ESIL Université de la méditerranée Odile.Papini@esil.univmed.fr http://odile.papini.perso.esil.univmed.fr/sources/bdmat.html Plan du cours 1 Modélisation d

Plus en détail

Partie I : Automates et langages

Partie I : Automates et langages 2 Les calculatrices sont interdites. N.B. : Le candidat attachera la plus grande importance à la clarté, à la précision et à la concision de la rédaction. Si un candidat est amené à repérer ce qui peut

Plus en détail

Épreuve d informatique 2011

Épreuve d informatique 2011 A 2011 INFO. MP ÉCOLE NATIONALE DES PONTS ET CHAUSSÉES, ÉCOLES NATIONALES SUPÉRIEURES DE L AÉRONAUTIQUE ET DE L ESPACE, DE TECHNIQUES AVANCÉES, DES TÉLÉCOMMUNICATIONS, DES MINES DE PARIS, DES MINES DE

Plus en détail

alg - Relations entre classes [kr]

alg - Relations entre classes [kr] alg - Relations entre classes [kr] Karine Zampieri, Stéphane Rivière, Béatrice Amerein-Soltner Unisciel algoprog Version 21 avril 2015 Table des matières 1 L association 2 1.1 Définitions...................................

Plus en détail

OI40: bases de données, TP 2

OI40: bases de données, TP 2 OI40: bases de données, TP 2 Frédéric Lassabe October 26, 2010 Ce TP requiert d avoir bien compris le TP précédent. 1 Sujet Lors de ce TP, il sera question d améliorer la base de données du TP précédent.

Plus en détail

L approche Bases de données

L approche Bases de données L approche Bases de données Cours: BD. Avancées Année: 2005/2006 Par: Dr B. Belattar (Univ. Batna Algérie) I- : Mise à niveau 1 Cours: BDD. Année: 2013/2014 Ens. S. MEDILEH (Univ. El-Oued) L approche Base

Plus en détail

Enveloppes convexes dans le plan

Enveloppes convexes dans le plan ÉCOLE POLYTECHNIQUE ÉCOLES NORMALES SUPÉRIEURES ÉCOLE SUPÉRIEURE DE PHYSIQUE ET DE CHIMIE INDUSTRIELLES CONCOURS D ADMISSION FILIÈRE MP HORS SPÉCIALITÉ INFO FILIÈRE PC COMPOSITION D INFORMATIQUE B (XECLR)

Plus en détail

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2 éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........

Plus en détail

TP3 : Manipulation et implantation de systèmes de fichiers 1

TP3 : Manipulation et implantation de systèmes de fichiers 1 École Normale Supérieure Systèmes et réseaux Année 2012-2013 TP3 : Manipulation et implantation de systèmes de fichiers 1 1 Répertoire de travail courant Le but de l exercice est d écrire une commande

Plus en détail

Héritage en java : Calculatrice SDC

Héritage en java : Calculatrice SDC Programmation orientée objet L3 MIAGE Héritage en java : Calculatrice SDC Travail à rendre : le code complet du projet SDC sous forme d une archive tar.gz. L archive comportera trois répertoires : un répertoire

Plus en détail

Use Cases. Introduction

Use Cases. Introduction Use Cases Introduction Avant d aborder la définition et la conception des UC il est bon de positionner le concept du UC au sein du processus de développement. Le Processus de développement utilisé ici

Plus en détail

Définitions. Numéro à préciser. (Durée : )

Définitions. Numéro à préciser. (Durée : ) Numéro à préciser (Durée : ) On étudie dans ce problème l ordre lexicographique pour les mots sur un alphabet fini et plusieurs constructions des cycles de De Bruijn. Les trois parties sont largement indépendantes.

Plus en détail

6.1 Une classe simple pour représenter des comptes bancaires

6.1 Une classe simple pour représenter des comptes bancaires Chapitre 6 Héritage Ce chapitre du cours traite de concepts relatifs à la programmation objet (hiérarchie de classe, héritage, extension, masquage) et sera illustré par un exemple de représentation de

Plus en détail

Object Constraint Language (OCL)

Object Constraint Language (OCL) Object Constraint Language (OCL) Eric Cariou Université de Pau et des Pays de l'adour UFR Sciences Pau Département Informatique Eric.Cariou@univ-pau.fr 1 Plan 1. Pourquoi OCL? Introduction par l'exemple

Plus en détail

I Arbres binaires. Lycée Faidherbe 2014-2015. 1 Rappels 2 1.1 Définition... 2 1.2 Dénombrements... 2 1.3 Parcours... 3

I Arbres binaires. Lycée Faidherbe 2014-2015. 1 Rappels 2 1.1 Définition... 2 1.2 Dénombrements... 2 1.3 Parcours... 3 I Arbres binaires 2014-2015 Table des matières 1 Rappels 2 1.1 Définition................................................ 2 1.2 Dénombrements............................................ 2 1.3 Parcours.................................................

Plus en détail

Les types utilisateurs (VBA) Corrigé

Les types utilisateurs (VBA) Corrigé PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours VBA, Semaine 2 avril mai 2013 Corrigé Résumé Ce document décrit comment traduire en VBA les types utilisateur du langage algorithmique. Table des matières

Plus en détail

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2 Langage et Concepts de Programmation Objet Travaux Dirigés no2 Pôle Informatique École Nationale Supérieure des Mines de St-Etienne Vous trouverez plus de détails sur les concepts abordés lors de ce TD

Plus en détail

UML. Diagrammes de classes (suite) Delphine Longuet. delphine.longuet@lri.fr

UML. Diagrammes de classes (suite) Delphine Longuet. delphine.longuet@lri.fr Polytech Paris-Sud Formation initiale 3 e année Spécialité Informatique Année 2014-2015 UML Diagrammes de classes (suite) Delphine Longuet delphine.longuet@lri.fr Opérations Opérations Service qui peut

Plus en détail

Programmation VBA. Identificateurs. Types de base. Déclaration d une variable. Commentaires. Activer l onglet Développeur (Excel)

Programmation VBA. Identificateurs. Types de base. Déclaration d une variable. Commentaires. Activer l onglet Développeur (Excel) Activer l onglet Développeur (Excel) Programmation VBA Michel Reid Cliquez sur le bouton Office (coin supérieur gauche) Cliquez sur le bouton Options Excel Dans la section Standard, cochez la case Afficher

Plus en détail

Université Paris-Dauphine DUMI2E 1ère année, 2009-2010. Applications

Université Paris-Dauphine DUMI2E 1ère année, 2009-2010. Applications Université Paris-Dauphine DUMI2E 1ère année, 2009-2010 Applications 1 Introduction Une fonction f (plus précisément, une fonction réelle d une variable réelle) est une règle qui associe à tout réel x au

Plus en détail

Tableaux (introduction) et types de base

Tableaux (introduction) et types de base Tableaux (introduction) et types de base A. Motivation..................................................... 4 B. Les tableaux.................................................... 5 C. Construction des tableaux.......................................

Plus en détail

Algèbre relationnelle

Algèbre relationnelle Algèbre relationnelle 1. Introduction L algèbre relationnelle est le support mathématique cohérent sur lequel repose le modèle relationnel. L algèbre relationnelle propose un ensemble d opérations élémentaires

Plus en détail

BE noté 2006 2007. Chantal Taconet et Christian Bac IO21

BE noté 2006 2007. Chantal Taconet et Christian Bac IO21 Chantal Taconet et Christian Bac IO2 Télécom INT 20 Novembre 2006 Corrigé Barème Groupe des Écoles des Télécommunications Télécom INT École d ingénieurs 2 ème année Contrôle de connaissances : Bureau d

Plus en détail

Cedric Dumoulin. Compilation de présentations de : Jean Bezivin Jeannine Leguy Laurent Henocque Mireille Blay-Fornarino Jean-Marc Jézéquel

Cedric Dumoulin. Compilation de présentations de : Jean Bezivin Jeannine Leguy Laurent Henocque Mireille Blay-Fornarino Jean-Marc Jézéquel Cedric Dumoulin Compilation de présentations de : Jean Bezivin Jeannine Leguy Laurent Henocque Mireille Blay-Fornarino Jean-Marc Jézéquel Plan Pourquoi OCL Base d OCL Collections Exemples Pourquoi OCL

Plus en détail

STAGE IREM 0- Premiers pas en Python

STAGE IREM 0- Premiers pas en Python Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer

Plus en détail

Programmation, partiel: sémantique d un tableur

Programmation, partiel: sémantique d un tableur Programmation, partiel: sémantique d un tableur Recommandations. Votre copie (papier ou électronique) devra être lisible et bien structurée. La note tiendra compte autant du fond que de la présentation.

Plus en détail

NFP121 Programmation Avancée. Relations entre classes

NFP121 Programmation Avancée. Relations entre classes NFP121 Programmation Avancée Relations entre classes Xavier Crégut ENSEEIHT Télécommunications & Réseaux Xavier Crégut (N7) NFP121 Programmation Avancée Relations entre classes

Plus en détail

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. Sciences et Technologies de l Industrie et du Développement Durable Formation des enseignants parcours : ET24 Modèle de

Plus en détail

Correction de programmes : Logique de Hoare

Correction de programmes : Logique de Hoare 16 juillet 2009 Logique et informatique Vis-à-vis de l informatique la logique a au moins 2 rôles : 1 Externe et théorique (fondements de l informatique - Électif en S4) : Logique comme méta-informatique

Plus en détail

Cours 3. La conditionnelle: instructions si et selon Les boucles Comment raisonner sur les boucles: les invariants de boucle

Cours 3. La conditionnelle: instructions si et selon Les boucles Comment raisonner sur les boucles: les invariants de boucle Cours 3 : Instructions qui changent l ordre d exécution séquentiel 1 Cours 3 Instructions qui changent l ordre d exécution séquentiel La conditionnelle: instructions si et selon Les boucles Comment raisonner

Plus en détail

GOL502 Industries de services

GOL502 Industries de services GOL502 Industries de services Conception d un service Partie IIb Version 2013 Introduction Conception d un service partie IIb Nous verrons dans ce chapitre Modélisation d un service; Langage de modélisation

Plus en détail

Les tableaux. Chapitre 3

Les tableaux. Chapitre 3 Chapitre 3 Les tableaux 3.1 Généralités Les tableaux en PERL sont identifiés par le symbole @ à l image du $ pour les variables. Comme ces dernières, les tableaux ne sont pas typés et un même tableau peut

Plus en détail

MODÉLISATION DES BESOINS

MODÉLISATION DES BESOINS MODÉLISATION DES BESOINS Diagrammes de cas d utilisation Cas d'utilisation : Use Case (Jacobson) Permettent déxprimer les attentes/besoins des utilisateurs Permettent de définir les limites du système

Plus en détail

INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens

INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens Année académique 2009 2010 1 Introduction Ce projet est le premier d une série de quatre projets qui ont

Plus en détail

Polytechnique. Épreuve d Informatique 1998

Polytechnique. Épreuve d Informatique 1998 Polytechnique Épreuve d Informatique 1998 Corrigé rédigé par Martine Lannaud, Lycée Chaptal, Paris Pour toute remarque ou correction martine.lannaud@prepas.org Motifs et automates Question 1. Quelques

Plus en détail

Représentation des nombres entiers et réels. en binaire en mémoire

Représentation des nombres entiers et réels. en binaire en mémoire L3 Mag1 Phys. fond., cours C 15-16 Rep. des nbs. en binaire 25-09-05 23 :06 :02 page 1 1 Nombres entiers 1.1 Représentation binaire Représentation des nombres entiers et réels Tout entier positif n peut

Plus en détail

GPA 789 : Analyse et Conception Orientées Objet. ETS Mickaël Gardoni Bureau A 3588 tel 84 11. Mise en Œuvre UML version du 24 avril 2009

GPA 789 : Analyse et Conception Orientées Objet. ETS Mickaël Gardoni Bureau A 3588 tel 84 11. Mise en Œuvre UML version du 24 avril 2009 GPA 789 : Analyse et Conception Orientées Objet ETS Mickaël Gardoni Bureau A 3588 tel 84 11 Mise en œuvre UML 1/ 25 Introduction Mise en œuvre d UML UML n est pas une méthode 2/ 25 1 UML n est qu un langage

Plus en détail

Projet de Programmation Fonctionnelle

Projet de Programmation Fonctionnelle Projet de Programmation Fonctionnelle L objectif de ce projet est de concevoir, en Objective Caml, un évaluateur pour le langage mini-ml (un sous ensemble du langage Objective Caml). Votre programme devra

Plus en détail

Ingénierie des Modèles. Méta-modélisation

Ingénierie des Modèles. Méta-modélisation Ingénierie des Modèles Méta-modélisation Eric Cariou Master Technologies de l'internet 2 ème année Université de Pau et des Pays de l'adour UFR Sciences Pau Département Informatique Eric.Cariou@univ-pau.fr

Plus en détail

Le langage UML 2.0 Diagramme de Déploiement

Le langage UML 2.0 Diagramme de Déploiement Claude Belleil Université de Nantes Le langage UML 2.0 Diagramme de Déploiement 1 Introduction Le diagramme de déploiement spécifie un ensemble de constructions qui peuvent être utilisées pour définir

Plus en détail

Introduction à la Programmation 1

Introduction à la Programmation 1 Introduction à la Programmation 1 Séance de cours/td Université Paris-Diderot Objectifs: Découverte du type String. Comprendre qu il y a des types différents. Maîtriser les expressions booléennes dans

Plus en détail

La Clé informatique. Formation Access XP Aide-mémoire

La Clé informatique. Formation Access XP Aide-mémoire La Clé informatique Formation Access XP Aide-mémoire Septembre 2003 Définitions de termes Base de données : Se compare à un énorme classeur ayant plusieurs tiroirs où chacun d eux contient des informations

Plus en détail

Spécification du profil UML d assemblage cible EJB (version 1)

Spécification du profil UML d assemblage cible EJB (version 1) Spécification du profil UML d assemblage cible EJB (version 1) Auteur : Projet ACCORD (Assemblage de composants par contrats en environnement ouvert et réparti) Référence : Livrable 2.2 Date : 31 mai 2002

Plus en détail

Modèle d implémentation

Modèle d implémentation Modèle d implémentation Les packages UML: Unified modeling Language Leçon 5/6-9-16/10/2008 Les packages - Modèle d implémentation - Méthodologie (RUP) Un package ou sous-système est un regroupement logique

Plus en détail

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

OCL : contraintes sur métamodèles

OCL : contraintes sur métamodèles OCL : contraintes sur métamodèles Philippe Collet (revisité by Sébastien Mosser) SI5 M2 IFI : Domain Specific Languages Novembre 2014 Objectifs r Comprendre la nécessité et la portée d OCL r Apprendre

Plus en détail

Maîtrise Informatique 2003 / 2004. Devoir de PROLOG. Julien Van Den Bossche / Benoît Moulin

Maîtrise Informatique 2003 / 2004. Devoir de PROLOG. Julien Van Den Bossche / Benoît Moulin Maîtrise Informatique 2003 / 2004 Devoir de PROLOG Julien Van Den Bossche / Benoît Moulin Devoir de PROLOG, Julien Van Den Bossche / Benoît Moulin Page 1 sur 10 Généralités sur le devoir Les codes sources

Plus en détail

Manuel d utilisation de la version en ligne. Février 2013

Manuel d utilisation de la version en ligne. Février 2013 Manuel d utilisation de la version en ligne Février 2013 Sommaire I- Contrôle de la saisie dans les formulaires... 3 II- Module de configuration... 4 1- Données créancier... 5 2- Préférences... 6 III-

Plus en détail

Analyse, Conception Objet. Diagrammes de classes. Sommaire. Utilisation

Analyse, Conception Objet. Diagrammes de classes. Sommaire. Utilisation Analyse, Conception Objet Sommaire Diagrammes de Classes Une partie du matériau de ce cours est issue du cours de S.Galland (Stephane.Galland@emse.fr) Septembre 2003 Définition Paquetages Classe Association

Plus en détail

1. Introduction. 2. Diagramme des exigences

1. Introduction. 2. Diagramme des exigences 1. Introduction La complexité des systèmes techniques est telle que, sans outils de représentations abstraites et progressivement enrichies, les intervenants d un projet auraient de nombreuses difficultés

Plus en détail

UML : DIAGRAMME D ETATS-TRANSITIONS

UML : DIAGRAMME D ETATS-TRANSITIONS DEFINITION: Décrit le comportement des objets d une classe au moyen d un automate d états associés à la classe Le comportement est modélisé par un graphe : Nœuds = états possibles des objets Arcs = transitions

Plus en détail

Conception des bases de données : Modèle Entité-Association

Conception des bases de données : Modèle Entité-Association Conception des bases de données : Modèle Entité-Association La modélisation d un problème, c est-à-dire le passage du monde réel à sa représentation informatique, se définit en plusieurs étapes pour parvenir

Plus en détail

SysML : les diagrammes

SysML : les diagrammes SysML : les diagrammes DIDIER FGNON, STÉPHNE GSTON [1] L outil SysML est un langage constitué de nombreux diagrammes. Nous vous proposons une ressource sous la forme de fiches-outils qui trouveront une

Plus en détail

Chapitre 4 Modélisation et Conception de BD

Chapitre 4 Modélisation et Conception de BD Pourquoi une modélisation préalable? Chapitre 4 Modélisation et Conception de BD Il est difficile de modéliser un domaine sous une forme directement utilisable par un SGBD. Stockage physique Cohérence/intégrité

Plus en détail

Licence Professionnelle TAI Programmation Orientée Objets Gestion de comptes en banque (Philippe.Genoud@imag.fr)

Licence Professionnelle TAI Programmation Orientée Objets Gestion de comptes en banque (Philippe.Genoud@imag.fr) Grenoble 1 IMA Informatique & Mathématiques Appliquées UNIVERSITE JOSEPH FOURIER Sciences, Technologie, Médecine Licence Professionnelle TAI Programmation Orientée Objets Gestion de comptes en banque (Philippe.Genoud@imag.fr)

Plus en détail

UML (Diagramme de classes) Unified Modeling Language

UML (Diagramme de classes) Unified Modeling Language UML (Diagramme de classes) Unified Modeling Language Sommaire Introduction Objectifs Diagramme de classes Classe (Nom, attribut, opération) Visibilité et portée des constituants d une classe Association

Plus en détail

Les circuits de validation

Les circuits de validation Les circuits de validation 1.1 Qu est-ce qu un workflow? 1.1.2 Définition Un workflow est la suite d actions consécutives qui constitue un circuit de validation. Cette suite d action est déclenchée par

Plus en détail

Le corps R des nombres réels

Le corps R des nombres réels Le corps R des nombres réels. Construction de R à l aide des suites de Cauchy de nombres rationnels On explique brièvement dans ce paragraphe comment construire le corps R des nombres réels à partir du

Plus en détail

Module Com231A - Web et Bases de Données Notion 3 : SQL

Module Com231A - Web et Bases de Données Notion 3 : SQL Module Com231A - Web et Bases de Données Notion 3 : SQL Qu est ce qu une base de données? Introduction Une base de données est un ensemble d au moins un tableau contenant des données. Exemple : une base

Plus en détail

Chapitre 2 Modélisation de bases de données

Chapitre 2 Modélisation de bases de données Pourquoi une modélisation préalable? Chapitre 2 Modélisation de bases de données 1. Première étape : le modèle conceptuel Eemple : le modèle Entités-Associations (E/A) 2. Deuième étape : le modèle Traduction

Plus en détail

IFT Génie logiciel

IFT Génie logiciel Rappel 2 Les diagrammes UML ne nous disent pas tout... IFT2255 - Génie logiciel Object Constraint Language (OCL) enfants parents Alice:Personne n est pas une instance valide de Bruno Dufour dufour@iro.umontreal.ca

Plus en détail

Plateforme d'évaluation professionnelle. Manuel d utilisation de l interface de test d EvaLog

Plateforme d'évaluation professionnelle. Manuel d utilisation de l interface de test d EvaLog Plateforme d'évaluation professionnelle Manuel d utilisation de l interface de test d EvaLog Un produit de la société AlgoWin http://www.algowin.fr Version 1.0.1 du 18/01/2015 Table des matières Présentation

Plus en détail

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Claude Delannoy Exercices en langage C++ 3 e édition Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Chapitre 3 Les fonctions Rappels Généralités Une fonction est un bloc d instructions éventuellement

Plus en détail

Cours de Mathématiques Seconde. Généralités sur les fonctions

Cours de Mathématiques Seconde. Généralités sur les fonctions Cours de Mathématiques Seconde Frédéric Demoulin 1 Dernière révision : 16 avril 007 Document diffusé via le site www.bacamaths.net de Gilles Costantini 1 frederic.demoulin (chez) voila.fr gilles.costantini

Plus en détail

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

Chapitre VIII. Les bases de données. Orientées Objet. Motivation Chapitre VIII Motivation Le modèle relationnel connaît un très grand succès et s avère très adéquat pour les applications traditionnelles des bases de données (gestion) Les bases de données Orientées Objet

Plus en détail

Rappel sur les bases de données

Rappel sur les bases de données Rappel sur les bases de données 1) Généralités 1.1 Base de données et système de gestion de base de donnés: définitions Une base de données est un ensemble de données stockées de manière structurée permettant

Plus en détail

Georgieva Diana Bourgouin Adrien Licence 3 ~ Faculté des Sciences et des Techniques UML ~ Bibliothèque. Projet UML.

Georgieva Diana Bourgouin Adrien Licence 3 ~ Faculté des Sciences et des Techniques UML ~ Bibliothèque. Projet UML. Projet UML Cas Bibliothèque Page 1 sur 35 S6 ~ 2008-2009 Sommaire I. Introduction 3 II. Modélisation A. Cas d utilisation 1. Première approche 4-6 2. Cas d utilisation avant la modélisation des diagrammes

Plus en détail

Projet : Plan Assurance Qualité

Projet : Plan Assurance Qualité Projet : Document : Plan Assurance Qualité 2UP_SPEC_DEV1 VERSION 1.00 Objet Ce document a pour objectif de définir la démarche d analyse et de conception objet ainsi les activités liées. Auteur Eric PAPET

Plus en détail

CSC4002 : Contrôle continu «Bureau d Étude noté» Date : lundi 3 décembre 2012 Durée : 2H. Coordonnateurs : Christian Bac et Denis Conan

CSC4002 : Contrôle continu «Bureau d Étude noté» Date : lundi 3 décembre 2012 Durée : 2H. Coordonnateurs : Christian Bac et Denis Conan Corrigé et Barème Contrôle de connaissances 2012/2013 des étudiants de 2 è année (EI2) CSC4002 : Contrôle continu «Bureau d Étude noté» Date : lundi 3 décembre 2012 Durée : 2H Coordonnateurs : Christian

Plus en détail

1. B e s o i n d! e x p r e s s i o n d e c o n t r a i n t e s e n U M L

1. B e s o i n d! e x p r e s s i o n d e c o n t r a i n t e s e n U M L Introduction à O.C.L. (Object Constraint Language) : le langage de contraintes d!uml Bernard ESPINASSE Professeur à l'université d'aix-marseille P l a n 1. Besoin d!expression de contraintes en UML 2.

Plus en détail

INF3143. Modélisation et spécification formelles des logiciels. Hiver Alexandre Terrasa Département d informatique, UQÀM

INF3143. Modélisation et spécification formelles des logiciels. Hiver Alexandre Terrasa Département d informatique, UQÀM INF3143 Modélisation et spécification formelles des logiciels Hiver 2017 Alexandre Terrasa Département d informatique, UQÀM Expression des contraintes en UML 2 Exprimer des contraintes avec UML Dans le

Plus en détail

Licence de Sciences et Technologies. Fiche de cours 1 - Nombres réels.

Licence de Sciences et Technologies. Fiche de cours 1 - Nombres réels. Licence de Sciences et Technologies EM21 - Analyse Fiche de cours 1 - Nombres réels. On connaît les ensembles suivants, tous munis d une addition, d une multiplication, et d une relation d ordre compatibles

Plus en détail

LINQ to SQL. Version 1.1

LINQ to SQL. Version 1.1 LINQ to SQL Version 1.1 2 Chapitre 03 - LINQ to SQL Sommaire 1 Introduction... 3 1.1 Rappels à propos de LINQ... 3 1.2 LINQ to SQL... 3 2 LINQ to SQL... 3 2.1 Importer des tables... 3 2.1.1 Le concepteur

Plus en détail

Séance de travaux pratiques n 1 Quelques éléments de correction

Séance de travaux pratiques n 1 Quelques éléments de correction Master Sciences, Technologies, Santé Mention Mathématiques, spécialité Enseignement des mathématiques Algorithmique et graphes, thèmes du second degré Séance de travaux pratiques n 1 Quelques éléments

Plus en détail

} 7 Variables (composantes)

} 7 Variables (composantes) Chapitre 4 Tableaux Jusqu ici, nous avons employé les variables pour stocker les valeurs individuelles de types primitifs : une variable de type int pour stocker un entier, une variable de type boolean

Plus en détail

L enseignement de l algorithmique au Lycée

L enseignement de l algorithmique au Lycée L enseignement de l algorithmique au Lycée Sisteron 12 novembre 2009 Fernand Didier didier@irem.univ-mrs.fr Approche naïve C est une méthode, une façon systématique de procéder, pour faire quelque chose

Plus en détail

Les graphes d intervalles

Les graphes d intervalles Les graphes d intervalles Complément au chapitre 3 «Vol aux archives cantonales» Considérons un ensemble de tâches ayant chacune une heure de début et une heure de fin bien précises. Supposons qu on demande

Plus en détail

Bases de la programmation orientée objet en Java

Bases de la programmation orientée objet en Java Bases de la programmation orientée objet en Java Jean-Baptiste Vioix (jean-baptiste.vioix@iut-dijon.u-bourgogne.fr) IUT de Dijon-Auxerre - LE2I http://jb.vioix.free.fr 1-33 Avant propos Difficultés...

Plus en détail

MODÉLISATION DYNAMIQUES DIAGRAMMES D ACTIVITÉS DIAGRAMMES D ETATS-TRANSITIONS

MODÉLISATION DYNAMIQUES DIAGRAMMES D ACTIVITÉS DIAGRAMMES D ETATS-TRANSITIONS MODÉLISATION DYNAMIQUES DIAGRAMMES D ACTIVITÉS DIAGRAMMES D ETATS-TRANSITIONS 1 PRÉSENTATION Un diagramme d activité est un diagramme UML qui modélise les aspects dynamiques d un système Le diagramme d

Plus en détail

CONCOURS D ADMISSION. Option économique MATHEMATIQUES III. Année 2006

CONCOURS D ADMISSION. Option économique MATHEMATIQUES III. Année 2006 ESSEC M B A CONCOURS D ADMISSION Option économique MATHEMATIQUES III Année 2006 La présentation, la lisibilité, l orthographe, la qualité de la rédaction, la clarté et la précision des raisonnements entreront

Plus en détail

Héritage [he] Exercices résolus

Héritage [he] Exercices résolus Héritage [he] Exercices résolus Karine Zampieri, Stéphane Rivière, Béatrice Amerein-Soltner Unisciel algoprog Version 29 avril 2015 Table des matières 1 Comptes bancaires 1 1.1 Classe CBancaire...............................

Plus en détail

Support du cours de Probabilités IUT d Orléans, Département d informatique

Support du cours de Probabilités IUT d Orléans, Département d informatique Support du cours de Probabilités IUT d Orléans, Département d informatique Pierre Andreoletti IUT d Orléans Laboratoire MAPMO (Bât. de Mathématiques UFR Sciences) - Bureau 126 email: pierre.andreoletti@univ-orleans.fr

Plus en détail

Analyse abstraite de missions sous PILOT

Analyse abstraite de missions sous PILOT Analyse abstraite de missions sous PILOT Damien Massé EA 3883, Université de Bretagne Occidentale, Brest damien.masse@univ-brest.fr Résumé Nous étudions la possibilité de réaliser un analyseur par interprétation

Plus en détail

Contrôler les programmes VBA

Contrôler les programmes VBA 7 Contrôler les programmes VBA Au sommaire de ce chapitre Répéter une série d instructions : les boucles Utiliser des instructions conditionnelles Définir l instruction suivante avec GoTo Interagir avec

Plus en détail