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