ڈیزائن بائے کنٹریکٹ (DbC) ایک میتھڈ اور اس کے کالر کے درمیان تعلق کو ایک رسمی معاہدے کے طور پر سمجھتا ہے، جو تین چیزوں سے متعین ہے: preconditions (جو کالر کو یقینی بنانا چاہیے)، postconditions (جو میتھڈ بدلے میں یقینی بناتا ہے)، اور invariants (جو ہمیشہ آبجیکٹ کے لیے صحیح رہتا ہے)۔
تین ذمہ داریاں
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
