Design by Contract (DbC) behandler forholdet mellem en method og dens opkaldende som en formel aftale, defineret af tre ting: preconditions (hvad opkalderen skal garantere), postconditions (hvad metoden garanterer til gengæld), og invariants (hvad der forbliver sandt for objektet til alle tider).
De tre forpligtelser
PRECONDITION → caller's duty: inputs/state the method requires to run correctly
POSTCONDITION → method's duty: what it promises on return (if precondition held)
INVARIANT → always-true property of the object, before and after every method
