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.5. EVALUATIE 43<br />

3.4.4.1 Inkapseling van een invariant in een booleaanse methode<br />

Inkapseling van klasse-invarianten bij het gebruik van de intelligente aanpak verschilt niet<br />

van de inkapseling van klasse-invarianten bij het gebruik van de naïeve aanpak. Elke klasseinvariant<br />

is in een booleaanse methode ingebakken. Voor meer informatie verwijzen we naar<br />

sectie 3.3.1.1<br />

Wat hier meer aandacht vereist is de inkapseling van de relevante klasse-invarianten in een<br />

gemeenschappelijke booleaanse methode. Dat gaan we hieronder bespreken.<br />

3.4.4.2 Inkapseling van alle relevante klasse-invarianten in een gemeenschappelijke<br />

booleaanse methode<br />

Bij de naïeve aanpak hebben we gezien dat alle klasse-invarianten in een gemeenschappelijke<br />

methode ingepakt waren door een conjunctie van deze te nemen.<br />

Een mogelijke oplossing voor de intelligente aanpak is opnieuw een conjunctie van de relevante<br />

klasse-invarianten te nemen die vervolgens in een gemeenschappelijke methode ingekapseld<br />

worden. Het bepalen van de verzameling van relevante klasse-invarianten hangt af van de<br />

postconditie of de implementatie van een publieke methode. Wat een nadeel hier kan zijn<br />

is dat we telkens voor elke operatie een gemeenschappelijke methode zullen hebben die een<br />

conjunctie van de bijbehorende relevante klasse-invarianten zou bevatten. Daarom stellen we<br />

hieronder een andere oplossing voor.<br />

Een tweede oplossing is om in plaats van een conjunctie van alle relevante klasse-invarianten<br />

te nemen, voegen we elke relevante klasse-invariant op het einde van een methode toe door<br />

gebruik van de assert constructie te maken. Met andere woorden zijn de relevante klasseinvarianten<br />

bij een operatie niet in een gemeenschappelijke methode ingepakt. Op deze manier<br />

verwijderen we de overhead van generatie van methoden die de geldigheid van klasseinvarianten<br />

voor elke operatie gaan controleren.<br />

3.4.5 Vertaling van pre- en postcondities<br />

Voor de vertaling van pre- en postcondities van een methode verwijzen we naar 3.3.2. Het<br />

enige verschil dat hier zou kunnen zijn is dat de gemeenschappelijke methode omtrent het<br />

nagaan van klasse-invarianten op basis van subsectie 3.4.4.2 zou gegenereerd worden. Met<br />

andere woorden kunnen we ofwel een conjunctie van de relevante klasse-invarianten nemen<br />

ofwel de relevante klasse-invarianten afdrukken door de assert constructie te gebruiken.<br />

3.5 Evaluatie<br />

In deze sectie zullen we de naïeve en de intelligente aanpak evalueren in functie van uitvoeringstijd.<br />

Om dat te kunnen doen hebben we een klein lopend voorbeeld bedacht (zie Figuur<br />

3.1). Daarna hebben we manueel de code met de bijbehorende beperkingen voor de naïeve en<br />

de intelligente aanpak gemodelleerd.

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

Saved successfully!

Ooh no, something went wrong!