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 37<br />

Listing 26 Sjabloon voor OCL result sleutelwoord<br />

int operation(int attribute2){<br />

int result = 0;<br />

// ...<br />

// <br />

// ...<br />

assert checkPostP2Operation(result,attribute2);<br />

return result;<br />

}<br />

public boolean checkPostP2Operation(int result,int i){<br />

return result == this.getAttribute2()*1000;<br />

}<br />

3.3 Naïeve aanpak<br />

In deze sectie illustreren we de meest evidente aanpak. In deze aanpak worden klasseinvarianten,<br />

pre- en postcondities ingekapseld in booleaanse methoden. Klasse-invarianten<br />

moeten waar zijn op ieder consistent moment. Met andere woorden zijn klasse-invarianten<br />

gecontroleerd voor en na elke uitvoering van publieke methodes en constructoren. Alle klasseinvarianten<br />

zijn verder in een gemeenschappelijke booleaanse methode ingekapseld door een<br />

conjunctie van deze invarianten te nemen. Pre- en postcondities worden respectievelijk voor<br />

en na de executie van de publieke methoden en constructoren nagegaan.<br />

3.3.1 Vertaling van invarianten<br />

In de vorige sectie hebben we een beschrijving van een mogelijke vertaling van OCL expressies<br />

naar JAVA gezien. Nu kunnen we deze methodologie op klasse-invarianten in een model<br />

toepassen.<br />

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

De inkapseling van klasse-invarianten en de bijbehorende sjablonen waren al in de vorige<br />

sectie besproken. Hier zullen we meer uitgebreid deze vertaling bespreken. Stel voor dat we<br />

een klasse met een aantal klasse-invarianten hebben:<br />

Listing 27 voorbeeld<br />

context ClassA<br />

inv invariant_1: <br />

inv invariant_2: <br />

inv invariant_3: -> forall()<br />

De vertaling van deze klasse-invarianten naar JAVA is hieronder gegeven. Elke invariant is<br />

vertaald in een booleaanse methode. Bij de naam van elke van deze booleaanse methoden is<br />

de naam van de invariant geconcateneerd. Op deze manier is er een garantie voor consistentie<br />

tussen de verschillende gegenereerde invarianten. In invariant_3 zien we dat we met een

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

Saved successfully!

Ooh no, something went wrong!