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.

32 HOOFDSTUK 3. METHODOLOGIE<br />

Een eerste oplossing die wie hier voorstellen is als volgt: telkens we een collectieoperatie<br />

tegenkomen dan gaan we een hulpmethode voor deze genereren in de klasse (context) waarbij<br />

deze hoort. In deze context zijn hulpmethode OCL collectieoperaties die geen tegenhangers<br />

in JAVA Collection API hebben. Bijgevolg is er de mogelijkheid van gedupliceerde methoden<br />

met dezelfde inhoud niet uitgesloten.<br />

Een tweede oplossing zou kunnen zijn om een keer een standaard bibliotheek te genereren die<br />

alle hulpoperaties zal bevatten die geen tegenhangers in de JAVA API hebben. Vermits onze<br />

sjablonen zowel een vast als een variabel deel hebben, moeten we in de signatuur van deze<br />

operaties als argumenten de source collectie en de body expressie meegeven om het variabele<br />

gedeelte in te vullen. Dit lijkt een goede oplossing maar aan de andere hand moeilijk te<br />

implementeren.<br />

Een derde oplossing zou kunnen zijn om in plaats van een standaard bibliotheek met statische<br />

methoden te genereren nemen we de eerste oplossing en passen we paar verbeteringen erop toe.<br />

Voor we een hulpoperatie gaan genereren, gaan we eerst nagaan of al deze niet gegenereerd<br />

was. Indien dat het geval was, moeten we deze niet meer gaan genereren. Om deze aanpak<br />

te kunnen implementeren, moeten we ergens alle onze gegenereerde hulpoperaties met hun<br />

bijbehorende source collectie en de body expressies bijhouden.<br />

In deze thesis gebruiken we de eerste aanpak. De uiteindelijke geproduceerde code zorgt voor<br />

heel wat duplicatie van methoden bij gebruik van collectieiteratoren. Indien dat door een<br />

programmeur handgeschreven is kan dat heel wat lastig zijn en tot fouten leiden. Vermits de<br />

code door een tool gegenereerd is, is deze code replicatie niet een probleem. Het enige nadeel<br />

is de grootte van de geproduceerde code. In alle systemen behalve embedded systemen is dat<br />

geen probleem. In embedded systemen waarin de geheugengrootte beperkt is is deze aanpak<br />

minder geschikt. Maar dit ligt buiten het bereik van onze thesis.<br />

3.2.4 Vertaling van OCL if-then-else expressies<br />

Er zijn twee mogelijkheden voor de vertaling van de OCL if-then-else constructie naar<br />

JAVA. Ofwel gebruiken we de corresponderende if-then-else constructie in JAVA ofwel de<br />

korte notatie voor deze constructie. Als voorbeeld geven we de volgende OCL if-then-else<br />

expressie.<br />

Listing 16 Een voorbeeld van een OCL if-then-else expressie<br />

if <br />

then <br />

else <br />

endif<br />

In dit eenvoudige voorbeeld hebben we geen collectieoperaties (collectieiteratoren) opgenomen<br />

maar indien dat het geval was dan zouden we extra hulpmethoden genereren. De JAVA code<br />

maakt gebruik van de verkorte notatie van de if-then-else constructie ook bekend als de<br />

ternaire operator ( ? : ). We gebruiken toch de verkorte notatie van de if-then-else<br />

constructie want deze past eleganter in onze sjablonen.

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

Saved successfully!

Ooh no, something went wrong!