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.
12 HOOFDSTUK 2. STATE-OF-THE-ART<br />
lideerd worden voordat men code gaat genereren. Men kan niets aan de structuur van de<br />
gegenereerde code veranderen. Bovendien om de code te kunnen compileren moet men een<br />
bibliotheek importeren die bij het tool te vinden is.<br />
Alhoewel pre- en postcondities ondersteund zijn, worden de sleutelwoorden @pre en result niet<br />
correct geimplementeerd. Dat is te wijten aan het feit dat deze sleutelwoorden genegeerd zijn<br />
door de codegenerator.<br />
De controle over de constraints gebeurt door if-blokken. Indien de beperkingen in de specicatie<br />
geschonden zijn, wordt een boodschap getoond. Er is geen mogelijkheid om deze controles<br />
aan en uit te schakelen wanneer dat gewenst is. Dat is een min punt voor dit tool vermits<br />
volgens B.Meyer pre- en postcondities tijdens testen of debuggen moeten aangezet worden<br />
maar tijdens de echte uitvoering van het programma moeten afstaan [25].<br />
Bij collectieiteratoren worden geen hulpmethodes gegeneerd. Alle bewerkingen rond collectieiteratoren<br />
zijn te vinden in de methode van de invariant of pre- en postconditie zelf. Bijgevolg<br />
zijn de gegenereerde JAVA methoden langer en soms niet overzichtelijk.<br />
Hieronder tonen we in Listing 2 hoe een klasse met de bijbehorende specicatie eruit ziet.<br />
Listing 2 OCLE<br />
class X{<br />
private int attribute;<br />
public void operation(){<br />
class ConstraintChecker{<br />
public void checkPreconditions(){<br />
}<br />
public void checkPostconditions(){<br />
}<br />
ConstraintChecker ch = new ConstraintChecker();<br />
ch.checkPreconditions();<br />
ch.checkPostconditions();<br />
}<br />
}<br />
public class ConstaintChecker{<br />
public void checkConstaints(){<br />
check_X_inv0();<br />
check_X_inv1();<br />
}<br />
public void inv0(){<br />
//... <br />
if(!test)<br />
System.out.println(postcondition failed for object+X.this);<br />
}<br />
public void inv1(){<br />
}<br />
}<br />
}<br />
De gegenereerde code verkrijgen uit het OCLE tool is min of meer volledig in de zin dat we een