Design by Contract (DbC) એક પદ્ધતિ અને તેના કૉલર વચ્ચેના સંબંધને ઔપચારિક કરાર તરીકે સમજે છે, જે ત્રણ બાબતો દ્વારા વ્યાખ્યાયિત છે: પ્રી-કન્ડીશન (કૉલર કોને ગ્યારંટી આપવું જોઈએ), પોસ્ટ-કન્ડીશન (પદ્ધતિ બદલામાં ગ્યારંટી આપે છે), અને ઇનવેરિયંટ્સ (ઑબ્જેક્ટ માટે હંમેશા સાચું રહે છે તે).
ત્રણ જવાબદારીઓ
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
