التصميم بالعقد (DbC) يعامل العلاقة بين method وطالبه كاتفاقية رسمية، معرّفة بثلاثة أشياء: preconditions (ما يجب على الطالب أن يضمنه)، postconditions (ما يضمنه method بالمقابل)، وinvariants (ما يبقى صحيحًا للـ object في كل الأوقات).
الثلاث التزامات
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
