03.08.2013 Views

Rapport de fin de phase I - Haute école du paysage, d'ingénierie et ...

Rapport de fin de phase I - Haute école du paysage, d'ingénierie et ...

Rapport de fin de phase I - Haute école du paysage, d'ingénierie et ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

L’expression ci-<strong>de</strong>ssus r<strong>et</strong>ourne un bag contenant les dates <strong>de</strong> naissance <strong>de</strong> tous les<br />

employés <strong>de</strong> la société. La collection <strong>de</strong> départ est un s<strong>et</strong>(Employee) <strong>et</strong> la collection<br />

d’arrivée est un bag(Date).<br />

Il existe un raccourci pour utiliser la fonction « collect ». L’application d’une propriété<br />

à une collection est interprétée comme un appel implicite à « collect ».<br />

« forAll »<br />

self.employee.birthDate<br />

forAll(exprBool) : Boolean<br />

C<strong>et</strong>te fonction r<strong>et</strong>ourne vrai si la condition est vraie pour tous les éléments <strong>de</strong> la<br />

collection. Les trois formes <strong>de</strong> syntaxe sont possibles.<br />

« forAll » perm<strong>et</strong> également d’avoir plus d’un itérateur sur une même collection. Il<br />

s’agit en fait d’appliquer la fonction au pro<strong>du</strong>it cartésien <strong>de</strong> la collection avec ellemême.<br />

context Company inv<br />

self.employee->forAll(e1, e2 |<br />

e1 e2 implies e1.forename e2.forename<br />

context Company inv<br />

self.employee->forAll(e1, e2 : Person|<br />

e1 e2 implies e1.forename e2.forename<br />

Ces <strong>de</strong>ux contraintes sont i<strong>de</strong>ntiques. Elles perm<strong>et</strong>tent <strong>de</strong> s’assurer que tous les<br />

employés ont <strong>de</strong>s prénoms différents.<br />

forename<br />

A<br />

B<br />

C<br />

Pro<strong>du</strong>it cartésien<br />

e1.forename e2.forename e1 e2 implies e1.forename e2.forename<br />

A A VRAI<br />

A B VRAI<br />

A C VRAI<br />

B A VRAI<br />

B B VRAI<br />

B C VRAI<br />

C A VRAI<br />

C B VRAI<br />

C C VRAI<br />

On pourrait également écrire c<strong>et</strong>te contrainte <strong>de</strong> la façon suivante :<br />

22.06.2005 24/78

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!