Design by Contract (DbC) käsittelee methodin ja sen kutsujan välistä suhdetta muodollisena sopimuksena, joka määritellään kolmella asialla: preconditions (mitä kutsuja on velvollinen takaamaan), postconditions (mitä method takaa vastineeksi), ja invariants (mitä pysyy totta objektille kaikissa tapauksissa).
Kolme velvoitetta
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
