Design by Contract. Design by Contract. Design by contract is the process of developing software based on the notion of contracts between objects, which are expressed as assertions . . Design by Contract.
The generalization relationship requires the use of the substitutability test to determine whether one object was a generalization of another: if an object of one type can be substituted for an object of another type in all circumstances, the type of the first object is a subtype of the second; that is, the second object is a generalization of the first.
When we come to examine the idea of subcontracts in software we must bear in mind that objects relate to one another in two basic ways:
1 through associations (e.g. has-a);
2 through generalizations (the is-a relationship).
Also, instances are related to classes.
If the objects of the subclasses are to be substitutable for those of the parent class, a certain relationship must hold. This relationship can be expressed in terms of the pre- and post-conditions associated with the overridden methods in the two classes.
if a.pre then a.r end