The most basic contract includes preconditions and postconditions for each modular unit (function  subroutine  method  or whatever it is called in a particular programming language) In object-oriented programming (OOP)  there is an additional part of the contract  as well as interesting relationships between contracts in an inheritance hierarchy