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.1. DESIGN BY CONTRACT 19<br />
Het principe achter pre- en postcondities is meestal gerefereerd naar het principe van Design<br />
By Contract (DBC) dat wij in de vorige sectie uitgelegd hebben.<br />
Vermits niet alle programmeertalen het principe van DBC ondersteunen, kan DBC op een of<br />
ander manier gesimuleerd worden in andere programmeertalen. Volgende sectie introduceert<br />
het begrip assertion en meer bepaald hoe dat kan geimplementeerd worden in de programmeertaal<br />
JAVA.<br />
3.1.3 Assertions in Java<br />
Een assertie (assertion) [14] is een booleaanse expressie die ons toelaat om een veronderstelling<br />
over een programma te toetsen. Als deze veronderstelling niet waar is, zal het programma een<br />
exceptie gooien. Indien de vericatie van deze booleaanse expressie waar levert dan bevestigt<br />
de corresponderende assertion de gemaakte veronderstelling. Als gevolg krijgt men foutsvrije<br />
programmas en de kwaliteit van de programmas is verhoogd.<br />
Ervaring toont dat het gebruik van assertions tijdens programmeren een van het snelste en<br />
meest eectieve manieren is om fouten te detecteren en corrigeren. Bovendien dienen assertions<br />
voor documentatie van programmas en op deze manier is de onderhoud verbeterd.<br />
In JAVA heeft assertion de volgende vorm:<br />
assert Expressie1 : Expressie2 ;<br />
waarbij Expressie1 een booleaanse expressie is en Expressie2 een expressie is die een waarde<br />
heeft (deze expressie kan geen invocatie van een methode zijn die als void gedenieerd is). Het<br />
systeem evalueert Expressie1 en als dat false is dan gooit het systeem een AssertionError.<br />
Dan wordt de waarde van Expressie2 doorgegeven aan de constructor van AssertionError die<br />
de stringrepresentatie van de waarde van Expressie2 gebruikt om een gedetailleerde bericht<br />
van de fout te geven.<br />
De assert constructie is een informele soort van Design By Contract. Toch kan men een<br />
ondersteuning voor klasse-invarianten, pre- en postcondities bieden. De assert constructie<br />
dwingt ons niet om een bepaalde soort van constraint-checking te gebruiken. Meestal is gelegen<br />
om de expressies die constraints op de objecten van ons systeem opleggen te combineren in een<br />
enkele booleaanse methode. Dan wordt deze booleaanse methode opgeroepen door de assertie<br />
clausule.<br />
3.1.3.1 Waarom assertie gebruiken?<br />
Veel mensen zouden zich afvragen waarom men een assertie faciliteit moet aanbieden. Deze<br />
speciale ondersteuning van assertie in de JAVA programmeertaal kan expliciet geprogrammeerd<br />
worden.<br />
Alhoewel een ad hoc implementatie mogelijk is is het meestal minder gestructureerd (ifstatements<br />
nodig voor elke assert) en ineciënt (evaluatie van de condities zelfs als asserties<br />
uitgeschakeld zijn). Ten tweede heeft elke ad hoc implementatie zijn eigen manier van aanen<br />
uitschakelen van asserties. Dit reduceert het nut van deze implementaties vooral bij debuggen.<br />
Bijgevolg is de assertie cultuur nooit gevolgd door software ingenieurs in de JAVA<br />
programmeertaal.