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

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

Saved successfully!

Ooh no, something went wrong!