Ce document décrit les opérations disponibles pour les collections dans le langage OCL 2.2, en particulier les filtres, sélections, inclusions et accès aux propriétés des éléments des collections.
0 évaluation0% ont trouvé ce document utile (0 vote)
51 vues2 pages
Ce document décrit les opérations disponibles pour les collections dans le langage OCL 2.2, en particulier les filtres, sélections, inclusions et accès aux propriétés des éléments des collections.
Ce document décrit les opérations disponibles pour les collections dans le langage OCL 2.2, en particulier les filtres, sélections, inclusions et accès aux propriétés des éléments des collections.
Ce document décrit les opérations disponibles pour les collections dans le langage OCL 2.2, en particulier les filtres, sélections, inclusions et accès aux propriétés des éléments des collections.
Téléchargez comme PDF, TXT ou lisez en ligne sur Scribd
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 2
Aide Mémoire OCL 2.
2 Eric Cariou – Université de Pau et des Pays de l’Adour
1 Constructions de base 2.1.2 Filtre / sélection
Invariant : Syntaxe, au choix :
context Type inv nomInv: expr-bool col –> operation ( prop ...) Spécification d’une méthode : col –> operation ( elt | elt.prop ...) context Type::methode(var : Type, ...) : Type pre nomPre: expr-bool col –> operation ( elt : Type | elt.prop ...) post nomPost: expr-bool (... result ... val@pre) select(expr-bool) retourne le sous-ensemble de la col- Conditionnelles : lection dont les éléments respectent la contrainte if expr-bool then expr-bool else expr-bool endif spécifiée expr-bool implies expr-bool reject(expr-bool) idem mais ne garde que les éléments Définition d’une variable locale (invariant, pre/post) : ne respectant pas la contrainte let maVar : Type = expr in exists(expr-bool) au moins un élément respecte la Définition d’une variable globale : contrainte spécifiée context Type def: maVar : Type = expr forAll(expr-bool) tous les éléments respectent la Définition d’une opération : contrainte spécifiée context Type def: monOp(param : Type, ...) : Type = expr one(expr-bool) un et un seul des éléments respecte la contrainte spécifiée Fermeture transitive : elt -> closure(assoc) any(expr-bool) retourne un des éléments de la collection respectant la contrainte spécifiée Élément d’une énumération : #valeur ou Enum::valeur collect(expr) retourne une collection (mise à plat) construite à partir d’une expression donnée Accès aux propriétés : – Collections : col –> prop collectNested(expr) idem que collect mais sans la mise – Objet / élément : elt.prop (le « . » s’utilise aussi à plat si retourne une imbrication de collections pour les navigations sur le modèle même quand on isUnique(expr) calcule une nouvelle collection comme récupère des collections) pour le collect et retourne vrai s’il n’y existe pas deux éléments identiques sortedBy(expr) retourne un ordered set contenant tous 2 Collections les éléments de la collection triés selon expr Sauf précision explicite d’un autre type de retour, les opérations suivantes pour les collections et les objets re- 2.1.3 Divers tournent une valeur booléenne. isEmpty() la collection est vide
2.1 Opérations communes notEmpty() la collection n’est pas vide
size() nombre d’éléments de la collection 2.1.1 Inclusion count(elt) nombre d’occurences de l’élément elt dans la includes(elt) la collection contient l’élément elt collection excludes(elt) la collection ne contient pas l’élément elt max() / min() / sum() retourne le max / le min / la includesAll(col) la collection contient tous les éléments somme des éléments de la collection (si d’un type de la collection col d’éléments compatible) excludesAll(col) la collection ne contient aucun des Type.allInstances() la collection de tous les éléments de éléments de la collection col type Type présents dans le modèle 2.1.4 Conversions asSet(), asBag(), asSequence(), asOrderedSet() transforme la collection courante en une collection équivalente d’un autre type flatten() mise à plat de collections imbriquées
2.2 Opérations spécifiques à certaines col-
lections Voir le tableau ci-contre pour savoir quelle opération spécifique est accessible selon le type de la collection sur laquelle elle s’applique.
2.2.1 Relations entre collections
union(col) l’union de la collection avec col intersection(col) l’intersection de la collection avec col including(elt) la collection augmentée de l’ajout de l’élément elt excluding(elt) la collection dont on a enlevé l’élément elt - col la collection dont on a retiré les éléments se trouvant dans col symmetricDifference(col) les éléments se trouvant dans la collection ou dans col mais pas dans les deux à la fois
2.2.2 Accès ordonné au contenu
first() le premier élément de la collection last() le dernier élément de la collection at(index : Integer) l’élément de la collection se trouvant en position index indexOf(elt) la position de l’élément elt dans la collec- tion append(elt) la collection augmentée de l’élément elt placé à la fin prepend(elt) la collection augmentée de l’élément elt placé au début insertAt(index : Integer, elt) la collection augmentée de l’élément elt placé à la position index subOrderedSet(lower : Integer, upper : Integer) l’ordered set contenant les éléments de la position lower à upper à partir d’un ordered set subSequence(lower : Integer, upper : Integer) la séquence contenant les éléments de la position lo- wer à upper à partir d’une séquence reverse() la même collection mais avec les éléments in- versés en position