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.

context Company inv :<br />

self.manager->size() = 1 -- 1 manager<br />

C<strong>et</strong>te caractéristique peut être intéressante si une extrémité d’association à 0..1<br />

comme multiplicité.<br />

context Person inv :<br />

self.wife->notEmpty() <br />

implies self.wife.sex = Sex::female<br />

Par défaut, la navigation r<strong>et</strong>ourne une collection <strong>de</strong> type S<strong>et</strong>. Si l’extrémité<br />

d’association est enrichie par la contrainte {or<strong>de</strong>red], la collection r<strong>et</strong>ournée est <strong>de</strong><br />

type Sequence.<br />

OCL dé<strong>fin</strong>it trois types <strong>de</strong> collection : S<strong>et</strong>, Sequence, Bag. Ces collections disposent<br />

toutes d’opérations prédé<strong>fin</strong>ies.<br />

Une propriété <strong>de</strong> collection peut-être accédée au moyen <strong>de</strong> l’opérateur -> suivi <strong>du</strong><br />

nom <strong>de</strong> la propriété.<br />

context Person inv :<br />

self.employer->size() < 3<br />

context Person inv :<br />

self.employer->isEmpty()<br />

Lorsque le nom d’un rôle n’est pas explicitement spécifié, il faut utiliser le nom <strong>du</strong><br />

type à l’extrémité <strong>de</strong> l’association mais en le commençant par une minuscule. Si<br />

c<strong>et</strong>te procé<strong>du</strong>re engendre une ambiguïté dans les noms <strong>de</strong>s propriétés, le nom <strong>du</strong><br />

rôle est obligatoirement requis (c’est le cas notamment <strong>de</strong>s associations réflexives).<br />

self.person -- Navigation vers la classe Person<br />

Pour exprimer une navigation vers une classe associative, il faut utiliser l’opérateur .<br />

suivi <strong>du</strong> nom <strong>de</strong> l’association en le commençant par une minuscule.<br />

self.job -- Navigation vers la classe associative Job<br />

Si l’association est réflexive, if faut encore donner le nom <strong>du</strong> rôle pour pouvoir<br />

naviguer vers la classe associative.<br />

-- Navigation vers la classe associative EmployeeRanking<br />

-- en utilisant le rôle bosses<br />

self.employeeRanking[bosses]->sum() = 0<br />

La navigation <strong>de</strong>puis une classe associative vers une <strong>de</strong>s classes <strong>de</strong> l’association est<br />

considéré comme une navigation normale. Cependant, en raison <strong>de</strong> la dé<strong>fin</strong>ition <strong>de</strong><br />

la classe associative dans UML, la navigation <strong>de</strong>puis une classe associative ne<br />

22.06.2005 20/78

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

Saved successfully!

Ooh no, something went wrong!