Dankwoord - martes
Dankwoord - martes
Dankwoord - martes
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.