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.
18 HOOFDSTUK 3. METHODOLOGIE<br />
Een contract beschrijft de diensten die door een object aangeboden worden. Voor elke dienst<br />
speciceert het contract:<br />
• Onder welke voorwaarden de dienst zal aangeboden worden.<br />
• De specicatie van het resultaat van de aangeboden dienst gegeven dat alle voorwaarden<br />
voldaan zijn.<br />
Elk object kan een aantal operaties uitvoeren. Deze operaties zijn te vinden in de interface<br />
van het object zelf. Voor elke van deze operaties kan een contract geëxpliciteerd worden.<br />
De rechten van het object komen met precondities overeen en de verplichten van het object<br />
corresponderen met de postcondities.<br />
Indien minstens een van beide partijen de voorwaarden van het contract niet respecteren, is<br />
het contract geschonden. Als dat gebeurt dan is het duidelijk wie aan de voorwaarden van<br />
het contract niet voldeed. Ofwel heeft de klant de aangeboden diensten niet correct gebruikt,<br />
ofwel heeft de leverancier de aangeboden dienst niet correct uitgevoerd. De programmeertaal<br />
EIFFEL [19] is de enige taal die een implementatie van DBC voorziet. DBC kan gebruikt<br />
worden binnen de context van object-georiënteerde ontwikkeling.<br />
In volgende sectie zullen we bespreken wat klasse-invarianten, pre- en postcondities zijn.<br />
3.1.1 Klasse-invarianten<br />
Klasse-invariant - is een booleaanse expressie die een conditie vaststelt. Deze conditie moet<br />
altijd voldaan zijn voor alle instanties waarvoor deze conditie gedenieerd is. Een invariant<br />
moet juist na de afhandeling van een constructor of na de afhandeling van elke publieke<br />
operatie waar zijn maar niet noodzakelijk tijdens het uitvoeren van de operatie. Anders<br />
gezegd, een klasse-invariant moet waar zijn op eender welke consistente toestand van een<br />
systeem. Indien het systeem bijvoorbeeld een operatie uitvoert dan is ons systeem niet in een<br />
consistente toestand en bijgevolg moet de invariant niet meer waar zijn. Uiteraard moet na<br />
de uitvoering van de operatie de invariant opnieuw waar zijn.<br />
3.1.2 Precondities en postcondities<br />
Pre- en postcondities zijn gebruikt om operaties te speciceren. Deze vervolledigen de interface<br />
van een operatie. Pre- en postcondities speciceren niet hoe het lichaam van een operatie<br />
geimplementeerd moet worden. Hieronder zijn deze concepten gedenieerd:<br />
Preconditie - is een booleaanse expressie die op het moment dat het uitvoeren van de operatie<br />
begint waar moet zijn.<br />
Postconditie - is een booleaanse expressie dat op het moment dat het uitvoeren van de operatie<br />
eindigt waar moet zijn.<br />
Met andere woorden pre- en postcondities moeten alleen op bepaalde tijdstippen (respectievelijk<br />
voor en na het uitvoeren van operaties) waar zijn in tegenstelling tot invarianten die<br />
altijd waar moeten zijn.