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.3. NAÏEVE AANPAK 39<br />

Listing 30 voorbeeld operatie met pre- en postcondities<br />

context ClassA :: operation1() : <br />

pre pre1: <br />

pre pre2: <br />

post post1: <br />

Voor elke pre- en postconditie zullen we een aparte booleaanse methode genereren. Daarna<br />

voegen we de pas gegenereerde pre- en postconditiemethoden in in de juiste plaatsen van onze<br />

operatie. Voor precondities is dat in het begin van de operatie. Voor postcondities is dat op<br />

het einde van deze operatie. Het invoegen van deze code gebeurt door de assert constructie<br />

die we in het begin van dit hoofdstuk besproken hebben.<br />

De naam van elke pre- en postconditiemethode is geconcateneerd met de naam van de preof<br />

postconditie die ze voorstellen en met de naam van de operatie waartoe ze behoren. Dat<br />

zorgt voor unieke namen van methoden en lost het probleem van name clashes op.<br />

De JAVA code ziet er als volgt uit:<br />

Listing 31 Sjabloon voor pre- en post-condities bij de naïeve aanpak<br />

operation1(){<br />

assert(checkAllInvariants());<br />

assert(checkPrePre1Operation1());<br />

assert(checkPrePre2Operation1()) ;<br />

//<br />

// body of operation<br />

//<br />

assert(checkPostPost1Operation1());<br />

assert(checkAllInvariants());<br />

}<br />

private boolean checkPrePre1Operation1(){<br />

return ;<br />

}<br />

private boolean checkPrePre2Operation1(){<br />

return ;<br />

}<br />

private boolean checkPostPost1Operation1(){<br />

return ;<br />

}<br />

We moeten ook niet vergeten dat bij operaties klasse-invarianten ook gecontroleerd moeten<br />

worden alhoewel ze niet opgenomen zijn in de operatie. De controle op invarianten moet<br />

voor en na de uitvoering van elke publieke methode en na de uitvoering van elke constructor<br />

gebeuren. Bijgevolg moeten we een assertie van alle invarianten toevoegen. Dat is te zien in<br />

de eerste en laatste regel van de JAVA vertaling voor de operation1() methode.

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

Saved successfully!

Ooh no, something went wrong!