22.11.2013 Views

Dankwoord - martes

Dankwoord - martes

Dankwoord - martes

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

3.2. BESCHRIJVING VAN DE METHODOLOGIE 27<br />

source->collect(body)<br />

De JAVA code ziet er zo uit:<br />

Listing 7 Sjabloon voor OCL collect operatie<br />

List result = new ArrayList();<br />

Iterator it = source.iterator();<br />

while(it.hasNext()){<br />

ElementType elem = (ElementType) it.next();<br />

Object bodyObj = elem.body;<br />

if(bodyObj != null){<br />

result.add(bodyObj);<br />

}<br />

}<br />

return result;<br />

iterate operatie<br />

De iterate operatie is de meest fundamentele en ingewikkelde operatie die over collecties<br />

itereert maar bijzonder generisch. De operaties reject, select, forAll, exists, collect<br />

kunnen allemaal in termen van iterate beschrijven worden. De collect operatie beschreven<br />

in termen van iterate is als volgt:<br />

Listing 8 collect operatie in termen van iterate<br />

collection->collect(x:T|x.property)<br />

is identiek aan :<br />

collection->iterate(x:T; acc: T2= Bag{}|<br />

acc->including(x.property))<br />

In deze thesis hebben we geen sjabloon voor iterate voorgesteld. We vinden dat wat men met<br />

iterate wil uitdrukken kan in de meeste gevallen ook uitgedrukt worden met een specieke<br />

collectieiterator. Bovendien is veel makkelijker en overzichtelijker indien we een collectieiterator<br />

gebruiken dan gewoon de OCL iterate operatie bij run-time OCL. Indien we de OCL<br />

expressies van Listing 8 met elkaar vergelijken dan is duidelijk dat de eerste indrukking overzichtelijker<br />

is die de collectieiterator collect gebruikt. In werkelijkheid zal een implementatie<br />

van de iterate operatie op zichzelf niet zo veel werk vragen.<br />

exists operatie<br />

Meestal wil men speciceren dat er minstens een element in een collectie is die aan een bepaalde<br />

conditie voldoet. De exists operatie kan hiervoor gebuikt worden. Deze operatie geeft een<br />

booleaans resultaat terug. Met andere woorden is het resultaat van deze operatie waar indien<br />

er minstens een element in de collectie bestaat dat aan de voorwaarden gespeciceerd in de<br />

body van de operatie voldoet. Indien we de volgende OCL expressie hebben

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

Saved successfully!

Ooh no, something went wrong!