Object Constraint Language (OCL) Une introduction

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 = age@pre

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 : self.employé=self.employé@pre->including(p) 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

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

Développement d un interpréteur OCL pour une machine virtuelle UML.

Développement d un interpréteur OCL pour une machine virtuelle UML. ObjeXion Software Prototyping made easy SA au capital de 500 000 F Siret 421 565 565 00015 APE 722Z Téléphone : 03 89 35 70 75 Télécopie : 03 89 35 70 76 L embarcadère 5, rue Gutemberg 68 800 Vieux-Thann,

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

UML et les Bases de Données

UML et les Bases de Données CNAM UML et les Bases de Données UML et les Bases de Données. Diagramme de classes / diagramme d objets (UML)...2.. Premier niveau de modélisation des données d une application...2.2. Les éléments de modélisation...2.2..

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

LES TYPES DE DONNÉES DU LANGAGE PASCAL

LES TYPES DE DONNÉES DU LANGAGE PASCAL LES TYPES DE DONNÉES DU LANGAGE PASCAL 75 LES TYPES DE DONNÉES DU LANGAGE PASCAL CHAPITRE 4 OBJECTIFS PRÉSENTER LES NOTIONS D ÉTIQUETTE, DE CONS- TANTE ET DE IABLE DANS LE CONTEXTE DU LAN- GAGE PASCAL.

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

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

Langage SQL : créer et interroger une base

Langage SQL : créer et interroger une base Langage SQL : créer et interroger une base Dans ce chapitre, nous revenons sur les principales requêtes de création de table et d accès aux données. Nous verrons aussi quelques fonctions d agrégation (MAX,

Plus en détail

Chapitre VI- La validation de la composition.

Chapitre VI- La validation de la composition. Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions

Plus en détail

IFT2255 : Génie logiciel

IFT2255 : Génie logiciel IFT2255 : Génie logiciel Chapitre 6 - Analyse orientée objets Section 1. Introduction à UML Julie Vachon et Houari Sahraoui 6.1. Introduction à UML 1. Vers une approche orientée objet 2. Introduction ti

Plus en détail

Présentation générale de la méthode orientée objet : O.M.T. (Rumbaugh & al.)

Présentation générale de la méthode orientée objet : O.M.T. (Rumbaugh & al.) Présentation générale de la méthode orientée objet : O.M.T. (Rumbaugh & al.) Bernard ESPINASSE Professeur à l'université d'aix-marseille Plan Introduction Les modèles d'omt Le Modèle Objet (MO) Le Modèle

Plus en détail

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML http://olivier-augereau.com Sommaire Introduction I) Les bases II) Les diagrammes

Plus en détail

Bases de données. Chapitre 1. Introduction

Bases de données. Chapitre 1. Introduction Références : Bases de données Pierre Wolper Email : pw@montefiore.ulg.ac.be URL : http : //www.montefiore.ulg.ac.be/~pw/ http : //www.montefiore.ulg.ac.be/ ~pw/cours/bd.html Henry F. Korth, Abraham Silberschatz,

Plus en détail

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes PLAN CYCLE DE VIE D'UN LOGICIEL EXPRESSION DES BESOINS SPÉCIFICATIONS DU LOGICIEL CONCEPTION DU LOGICIEL LA PROGRAMMATION TESTS ET MISE AU POINT DOCUMENTATION CONCLUSION C.Crochepeyre Génie Logiciel Diapason

Plus en détail

Chap. 3: Le modèle de données entité-association (E.A.)

Chap. 3: Le modèle de données entité-association (E.A.) Chap. 3: Le modèle de données entité-association (E.A.) En anglais: Entity-Relationship (ER) Origines: C.Bachman (1969), P.Chen (1976). Modèle de données > décrire la réalité perçue à travers les données

Plus en détail

3. UML - Unified Modeling Language Diagrammes statiques

3. UML - Unified Modeling Language Diagrammes statiques 3. UML - Unified Modeling Language Diagrammes statiques Laëtitia Matignon laetitia.matignon@univ-lyon1.fr Département Informatique - Polytech Lyon Université Claude Bernard Lyon 1 2012-2013 Laëtitia Matignon

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

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,

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

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

Classes et Objets en Ocaml.

Classes et Objets en Ocaml. Classes et Objets en Ocaml. Didier Rémy 2001-2002 http://cristal.inria.fr/ remy/mot/2/ http://www.enseignement.polytechnique.fr/profs/informatique/didier.remy/mot/2/ Cours Exercices Slide 1 1. Objets 2.

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

Génie Logiciel avec Ada. 4 février 2013

Génie Logiciel avec Ada. 4 février 2013 Génie Logiciel 4 février 2013 Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires I. Principes II. Notions propres à la POO I. Principes Chapitre

Plus en détail

Les diagrammes de modélisation

Les diagrammes de modélisation L approche Orientée Objet et UML 1 Plan du cours Introduction au Génie Logiciel L approche Orientée Objet et Notation UML Les diagrammes de modélisation Relations entre les différents diagrammes De l analyse

Plus en détail

Université de Bangui. Modélisons en UML

Université de Bangui. Modélisons en UML Université de Bangui CRM Modélisons en UML Ce cours a été possible grâce à l initiative d Apollinaire MOLAYE qui m a contacté pour vous faire bénéficier de mes connaissances en nouvelles technologies et

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

Développement de logiciel avec UML

Développement de logiciel avec UML Survol et exemples Pascal ANDRE Université de Nantes Master Miage M1 Introduction UML : un langage de spécification multi-formalisme UML : précision avec OCL UML : une méthode de développement UML : un

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

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

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

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

Master MIDO 2ème année. Spécification et Conception en UML Maude Manouvrier

Master MIDO 2ème année. Spécification et Conception en UML Maude Manouvrier Master MIDO 2ème année Spécification et Conception en UML Maude Manouvrier Spécifications initiales Analyse Conception du système Conception des classes Bibliographie Modélisation et conception orientées

Plus en détail

Recherche dans un tableau

Recherche dans un tableau Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6

Plus en détail

Algorithmique et programmation : les bases (VBA) Corrigé

Algorithmique et programmation : les bases (VBA) Corrigé PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours VBA, Semaine 1 mai juin 2006 Corrigé Résumé Ce document décrit l écriture dans le langage VBA des éléments vus en algorithmique. Table des matières 1 Pourquoi

Plus en détail

Débuter avec EXPRESS. Alain Plantec. 1 Schema 2

Débuter avec EXPRESS. Alain Plantec. 1 Schema 2 Débuter avec EXPRESS Alain Plantec Table des matières 1 Schema 2 2 Entité 2 2.1 Attributs simples................................................ 2 2.2 Attributs collection...............................................

Plus en détail

ALGORITHMIQUE ET PROGRAMMATION En C

ALGORITHMIQUE ET PROGRAMMATION En C Objectifs ALGORITHMIQUE ET PROGRAMMATION Une façon de raisonner Automatiser la résolution de problèmes Maîtriser les concepts de l algorithmique Pas faire des spécialistes d un langage Pierre TELLIER 2

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

UML (Paquetage) Unified Modeling Language

UML (Paquetage) Unified Modeling Language UML (Paquetage) Unified Modeling Language Sommaire Introduction Objectifs Paquetage Espace de nommage d un paquetage Dépendances entre paquetages 2 Notion introduite véritablement par UML car superficiellement

Plus en détail

Patrons de Conception (Design Patterns)

Patrons de Conception (Design Patterns) Patrons de Conception (Design Patterns) Introduction 1 Motivation Il est difficile de développer des logiciels efficaces, robustes, extensibles et réutilisables Il est essentiel de comprendre les techniques

Plus en détail

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

Modélisation de bases de données : Le modèle relationnel

Modélisation de bases de données : Le modèle relationnel Modélisation de bases de données : Le modèle relationnel Rappel chapitre 1 C est quoi un modèle? Type de modèle : Modèle hiérarchique Modèle réseau Modèle objet Modèle relationnel Cours BD Dr REZEG K 1

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

1 Introduction et installation

1 Introduction et installation TP d introduction aux bases de données 1 TP d introduction aux bases de données Le but de ce TP est d apprendre à manipuler des bases de données. Dans le cadre du programme d informatique pour tous, on

Plus en détail

Algorithme. Table des matières

Algorithme. Table des matières 1 Algorithme Table des matières 1 Codage 2 1.1 Système binaire.............................. 2 1.2 La numérotation de position en base décimale............ 2 1.3 La numérotation de position en base binaire..............

Plus en détail

M1 : Ingénierie du Logiciel

M1 : Ingénierie du Logiciel M1 : Ingénierie du Logiciel UNIVERSITE PIERRE & MARIE CURIE (PARIS VI) Examen Réparti 2eme partie 16 Mai 2013 (2 heures avec documents : tous SAUF ANNALES CORRIGEES). Barème indicatif sur 20,5 points (max

Plus en détail

Table des matières Sources

Table des matières Sources Table des matières Modélisation objet avec UML... 2 Introduction... 2 Modèle de système informatique :... 2 Pourquoi UML pour la modélisation Objet?... 3 Représentation dynamique du système... 5 Le diagramme

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

Le langage SQL Rappels

Le langage SQL Rappels Le langage SQL Rappels Description du thème : Présentation des principales notions nécessaires pour réaliser des requêtes SQL Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs,

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

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

Diagramme de classes

Diagramme de classes Diagramme de classes Un diagramme de classes décrit les classes et leurs relations (associations, généralisation/spécialisation, ). classe association méthodes attributs héritage Diagramme de classes :

Plus en détail

Chapitre I : le langage UML et le processus unifié

Chapitre I : le langage UML et le processus unifié I. Introduction Les méthodes d analyse orientées objet sont initialement issues des milieux industriels. La préoccupation dominante de leurs auteurs est le génie logiciel, c est-àdire les principes et

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

Chapitre 2. Eléments pour comprendre un énoncé

Chapitre 2. Eléments pour comprendre un énoncé Chapitre 2 Eléments pour comprendre un énoncé Ce chapitre est consacré à la compréhension d un énoncé. Pour démontrer un énoncé donné, il faut se reporter au chapitre suivant. Les tables de vérité données

Plus en détail

Cours de Génie Logiciel

Cours de Génie Logiciel Cours de Génie Logiciel Sciences-U Lyon Diagrammes UML (2) http://www.rzo.free.fr Pierre PARREND 1 Avril 2005 Sommaire Les Diagrammes UML Diagrammes de Collaboration Diagrammes d'etats-transitions Diagrammes

Plus en détail

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits Architecture des ordinateurs TD1 - Portes logiques et premiers circuits 1 Rappel : un peu de logique Exercice 1.1 Remplir la table de vérité suivante : a b a + b ab a + b ab a b 0 0 0 1 1 0 1 1 Exercice

Plus en détail

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections

Plus en détail

UML Diagramme de communication (communication diagram) Emmanuel Pichon 2013

UML Diagramme de communication (communication diagram) Emmanuel Pichon 2013 UML Diagramme de communication (communication diagram) 2013 Diagramme de communication (communication diagram) Utilisation / objectifs Sens Ce diagramme présente des objets, des acteurs, des liens et des

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

1 Recherche en table par balayage

1 Recherche en table par balayage 1 Recherche en table par balayage 1.1 Problème de la recherche en table Une table désigne une liste ou un tableau d éléments. Le problème de la recherche en table est celui de la recherche d un élément

Plus en détail

Cycle de vie du logiciel. Unified Modeling Language UML. UML: définition. Développement Logiciel. Salima Hassas. Unified Modeling Language

Cycle de vie du logiciel. Unified Modeling Language UML. UML: définition. Développement Logiciel. Salima Hassas. Unified Modeling Language Unified Modeling Language UML Salima Hassas Version Cycle de vie du logiciel Client Besoins Déploiement Analyse Test Conception Cours sur la base des transparents de : Gioavanna Di Marzo Serugendo et Frédéric

Plus en détail

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Cours Base de données relationnelles. M. Boughanem, IUP STRI Cours Base de données relationnelles 1 Plan 1. Notions de base 2. Modèle relationnel 3. SQL 2 Notions de base (1) Définition intuitive : une base de données est un ensemble d informations, (fichiers),

Plus en détail

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun> 94 Programmation en OCaml 5.4.8. Concaténation de deux listes Définissons maintenant la fonction concat qui met bout à bout deux listes. Ainsi, si l1 et l2 sont deux listes quelconques, concat l1 l2 constitue

Plus en détail

Compter à Babylone. L écriture des nombres

Compter à Babylone. L écriture des nombres Compter à Babylone d après l article de Christine Proust «Le calcul sexagésimal en Mésopotamie : enseignement dans les écoles de scribes» disponible sur http://www.dma.ens.fr/culturemath/ Les mathématiciens

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

Initiation à la Programmation en Logique avec SISCtus Prolog

Initiation à la Programmation en Logique avec SISCtus Prolog Initiation à la Programmation en Logique avec SISCtus Prolog Identificateurs Ils sont représentés par une suite de caractères alphanumériques commençant par une lettre minuscule (les lettres accentuées

Plus en détail

Générer du code à partir d une description de haut niveau

Générer du code à partir d une description de haut niveau Cedric Dumoulin Générer du code à partir d une description de haut niveau Ce projet vise à fournir un environnement de développement permettant de modéliser des UI Android à un haut niveau d abstraction,

Plus en détail

Nom de l application

Nom de l application Ministère de l Enseignement Supérieur et de la Recherche Scientifique Direction Générale des Etudes Technologiques Institut Supérieur des Etudes Technologiques de Gafsa Département Technologies de l Informatique

Plus en détail

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle. Université Montpellier-II UFR des Sciences - Département Informatique - Licence Informatique UE GLIN302 - Programmation Applicative et Récursive Cours No 3 : Identificateurs, Fonctions, Premières Structures

Plus en détail

Sommaire. G. Pujolle, F. Ravat, C. Soulé-Dupuy, G. Zurfluh

Sommaire. G. Pujolle, F. Ravat, C. Soulé-Dupuy, G. Zurfluh NOTATION UML AVEC RATIONAL ROSE G. Pujolle, F. Ravat, C. Soulé-Dupuy, G. Zurfluh Sommaire 1 GÉNÉRALITES...2 1.1 ENVIRONNEMENT LOGICIEL...2 1.2 LES VUES DU LOGICIEL ROSE...3 1.3 ORGANISATION RECOMMANDÉE...3

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

Vérification de programmes et de preuves Première partie. décrire des algorithmes

Vérification de programmes et de preuves Première partie. décrire des algorithmes Vérification de programmes et de preuves Première partie. décrire des algorithmes Yves Bertot September 2012 1 Motivating introduction A partir des années 1940, il a été compris que l on pouvait utiliser

Plus en détail

Paginer les données côté serveur, mettre en cache côté client

Paginer les données côté serveur, mettre en cache côté client Paginer les données côté serveur, mettre en cache côté client Vous voulez sélectionner des lignes dans une table, mais celle-ci comporte trop de lignes pour qu il soit réaliste de les ramener en une seule

Plus en détail

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Ces exercices portent sur les items 2, 3 et 5 du programme d informatique des classes préparatoires,

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Architecture des Systèmes d Information Architecture des Systèmes d Information

Architecture des Systèmes d Information Architecture des Systèmes d Information Plan... Tableaux et tris I3 - Algorithmique et programmation 1 Rappels Nicol Delestre 2 Tableaux à n dimensions 3 Initiation aux tris Tableaux - v2.0.1 1 / 27 Tableaux - v2.0.1 2 / 27 Rappels : tableau

Plus en détail

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE» MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE» Du cours Modélisation Semi -Formelle de Système d Information Du Professeur Jean-Pierre GIRAUDIN Décembre. 2002 1 Table de matière Partie 1...2 1.1

Plus en détail

Cours d initiation à la programmation en C++ Johann Cuenin

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions

Plus en détail

Chapitre 2 Le problème de l unicité des solutions

Chapitre 2 Le problème de l unicité des solutions Université Joseph Fourier UE MAT 127 Mathématiques année 2011-2012 Chapitre 2 Le problème de l unicité des solutions Ce que nous verrons dans ce chapitre : un exemple d équation différentielle y = f(y)

Plus en détail

Modélisation de Lignes de Produits en UML *

Modélisation de Lignes de Produits en UML * Modélisation de Lignes de Produits en UML * Tewfik ZIADI, Loïc HELOUET, Jean-Marc JEZEQUEL 2 IRISA, Campus de Beaulieu 35042 RennesCedex, France Tewfik.Ziadi@irisa.fr Loic.Helouet@irisa.fr, Jezequel@irisa.fr

Plus en détail

EXCEL TUTORIEL 2012/2013

EXCEL TUTORIEL 2012/2013 EXCEL TUTORIEL 2012/2013 Excel est un tableur, c est-à-dire un logiciel de gestion de tableaux. Il permet de réaliser des calculs avec des valeurs numériques, mais aussi avec des dates et des textes. Ainsi

Plus en détail

VIII- Circuits séquentiels. Mémoires

VIII- Circuits séquentiels. Mémoires 1 VIII- Circuits séquentiels. Mémoires Maintenant le temps va intervenir. Nous avions déjà indiqué que la traversée d une porte ne se faisait pas instantanément et qu il fallait en tenir compte, notamment

Plus en détail

OASIS www.oasis-open.org/committees/xacml/docs/docs.shtml Date de publication

OASIS www.oasis-open.org/committees/xacml/docs/docs.shtml Date de publication Statut du Committee Working Draft document Titre XACML Language Proposal, version 0.8 (XACML : XML Access Control Markup Language) Langage de balisage du contrôle d'accès Mot clé Attestation et sécurité

Plus en détail

Modèle Entité/Association

Modèle Entité/Association Base de données Modèle Entité/Association L3 Informatique Antoine Spicher antoine.spicher@u-pec.fr Contexte du cours Organisation du cours 1 ère partie (C. D.) Modèle et algèbre relationnel Langage SQL

Plus en détail

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

Modélisation Conceptuelle. Partie 2: Le modèle Entité-Association

Modélisation Conceptuelle. Partie 2: Le modèle Entité-Association Modélisation Conceptuelle Partie 2: Le modèle Entité-Association Modèle de type conceptuel But: permettre la description conceptuelle des structures de données d'une application Les concepts de base (correspondent

Plus en détail

Le Langage SQL version Oracle

Le Langage SQL version Oracle Université de Manouba École Supérieure d Économie Numérique Département des Technologies des Systèmes d Information Le Langage SQL version Oracle Document version 1.1 Mohamed Anis BACH TOBJI anis.bach@isg.rnu.tn

Plus en détail

V- Manipulations de nombres en binaire

V- Manipulations de nombres en binaire 1 V- Manipulations de nombres en binaire L ordinateur est constitué de milliards de transistors qui travaillent comme des interrupteurs électriques, soit ouverts soit fermés. Soit la ligne est activée,

Plus en détail

Comparaison de trois techniques de modélisation de processus: ADONIS, OSSAD et UML

Comparaison de trois techniques de modélisation de processus: ADONIS, OSSAD et UML Olivier Glassey Jean-Loup Chappelet Comparaison de trois techniques de modélisation de processus: ADONIS, OSSAD et UML Working paper de l'idheap 14/2002 UER: Management public / Systèmes d'information

Plus en détail

Génération de code à partir d une spécification B : Application aux bases de données

Génération de code à partir d une spécification B : Application aux bases de données Génération de code à partir d une spécification B : Application aux bases de données Amel Mammar * Régine Laleau ** Université du Luxembourg, LACL, Université Paris 12 SE2C, 6 rue Richard Courdenhove-Kalergi

Plus en détail

Modélisation des données

Modélisation des données Modélisation des données Le modèle Entité/Association Le MCD ou modèle Entité/Association est un modèle chargé de représenter sous forme graphique les informations manipulées par le système (l entreprise)

Plus en détail

Créer le schéma relationnel d une base de données ACCESS

Créer le schéma relationnel d une base de données ACCESS Utilisation du SGBD ACCESS Polycopié réalisé par Chihab Hanachi et Jean-Marc Thévenin Créer le schéma relationnel d une base de données ACCESS GENERALITES SUR ACCESS... 1 A PROPOS DE L UTILISATION D ACCESS...

Plus en détail