urbanisation-si

urbanisation-si

Cours complet sur ATL (ATLAS Transformation Language) : les tuples

cours-complet-atl-atlas-transformation-language-les-tuples.jpg

 

Dans l'article précédent :

http://www.urbanisation-si.com/cours-complet-sur-atl-atlas-transformation-language-les-enumerations

nous avion abordé les énumérations ATL. Voyons à présent les tuples.

 

Le type tuple

Le type tuple permet de mettre plusieurs valeurs dans une seule variable.

Un tuple est constitué de champs nommés pouvant avoir des types différents.

ATTENTION : un tuple type n’est pas nommé, donc à chaque fois que l’on doit l’identifier, il faut mentionner sa déclaration au complet !

La declaration d’un tuple :

TupleType(var_name1 : var_type1, ..., var_nameN : var_typeN)

L’ordre de declaration n’est pas significatif.

 

Exemple de déclaration :

TupleType(a : MMAuthor!Author, title : String, editor : String)

L’instanciation d’une variable tuple :

Tuple{var_name1 [: var_type1]? = init_exp1, ..., var_namen [: var_typen]? = init_expn}

Les 2 instanciations de tuple suivantes sont équivalentes :

Tuple{editeur : String = 'www.urbanisation-si.com', titre : String = 'Cours complet ATL', a : MMAuthor!Author = unAuteur}
Tuple{titre = 'Cours complet ATL', a = unAuteur, editeur = 'www.urbanisation-si.com'}

Pour accéder à un memebre du tuple :

Tuple{titre = 'Cours complet ATL', a = unAuteur, editeur = 'www.urbanisation-si.com'}.titre

Le type tuple possède une operation asMap() renvoyant une map dans laquelle les noms des champs du tuple sont associés avec leurs valeurs respectives.

 

Le type Map

Ce type a été ajouté dans ATL et n’existe pas dans OCL. Il est identique à la classe Map de Java. Chaque valeur est associée à une unique clé d’accès.

 

La declaration suit la syntaxe suivante :

Map(key_type, value_type)

Comme pour le tuple, un type map n’est pas nommé, ce qui oblige à répêter la declaration complete à chaque que l’on veut y faire référence.

Map(Integer, MMAuthor!Author)

L’instantiating suit la syntaxe :

Map{(key1, value1), ..., (keyn, valuen)}

Exemple :

Map{(0, anAuthor1), (1, anAuthor2)}

Le type map possède les operations suivantes :

  • get(key : oclAny) renvoie la valeur associée à key (ou OclUndefined si key n’est pas une clé de self);
  • including(key : oclAny, val : oclAny) renvoie une copie de self dans laquelle le couple ( key, val) a été inséré à la condition que key ne soit pas déjà une clé de self
  • union(m : Map) renvoie une map contenant tous les éléments de self auxquels sont ajoutés les éléments de m à condition que leurs clés n’existent pas dans self
  • getKeys() renvoie un set contenant toutes les clés de self
  • getValues()renvoie un bag contenant toutes les valeurs de self 

 

Une robe de femme, doit être comme une plaidoirie : assez longue pour couvrir le sujet, assez courte pour être suivie.

 

Voir aussi :  

 

http://urbanisation-si.wix.com/blog

http://urbanisme-si.wix.com/blog

http://urbanisation-si.wix.com/urbanisation-si

http://urbanisation-si.over-blog.com/

http://rhonamaxwel.over-blog.com/

http://urbanisation-des-si.blogspot.fr/

http://bonnes-pratiques-si.eklablog.com/

http://urbanisation-si.eklablog.com/



30/09/2015
0 Poster un commentaire

A découvrir aussi


Inscrivez-vous au blog

Soyez prévenu par email des prochaines mises à jour

Rejoignez les 132 autres membres