urbanisation-si.com

urbanisation-si.com

Cours complet sur ATL (ATLAS Transformation Language) : quelques trucs et astuces sur les expressions

cours-complet-atl-atlas-transformation-model-trucs-et-astuces-expression.jpg

 

Dans l'article précédent :

https://www.urbanisation-si.com/cours-complet-sur-atl-atlas-transformation-language-les-expressions-declaratives-dans-ocl-atl

nous avion abordé les énumérations ATL. Voyons à présent quelques trucs et astuces sur les expressions.

 

Quelques trucs et astuces sur les expressions

Les langages issus de la grande famille du “C” (C++, Java, C#, JavaScript, …), possèdent un optimiseur d’expression booléenne. Par exemple l’évaluation s’arrête quand le 1er membre est vrai et l’opérateur suivant est un or ou bien encore quand le 1er membre est false et que l’opérateur est un and.

Ce n’est pas la cas dans OCL. Toutes les expressions seront entièrement évaluées.

Parconséquent certaines expressions à priori correctes généreront une erreur dans ATL !

Exemples :

not person.oclIsUndefined() and person.name = 'Isabel'

Cette expression génère bien une erreur dans ATL dans le cas ou person n’est pas défini, une erreur est générée à l’évaluation de person.name.

Pour être certain de n’avoir aucune erreur :

if person.oclIsUndefined()
then
        false
else
        person.name = 'Isabel'
endif

Idem avec un or :

person.oclIsUndefined() or person.name = 'Isabel'

Pour être à l’abri d’erreurs comme précédemment :

if person.oclIsUndefined()
then
        true
else
        person.name = 'Isabel'
endif

Autre exemple :

collection->select(person | not person.oclIsUndefined() and person.name = 'Isabel')

La bonne solution pour être tranquille :

collection->select(person |
        if person.oclIsUndefined()
        then
               false
        else
               person.name = 'Isabel'
        endif
)

Plusieurs solutions existent, en voici une 2ème :

collection
        ->select(person | not person.oclIsUndefined())
        ->select(person | person.name = 'Isabel')

En terme de performance la 1ère solution est préférable à la 2ème car l’itération sur la collection est effectuée qu’une seule fois.

 
"Faites ce que vous aimez, pensez ce que vous ressentez et vivez de la façon dont vous voulez."
Santosh Kalwar

 

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/



03/10/2015
0 Poster un commentaire

A découvrir aussi


Inscrivez-vous au site

Soyez prévenu par email des prochaines mises à jour

Rejoignez les 705 autres membres