CSC/ECE 517 Fall 2011/ch18 6a sc: Difference between revisions
Line 31: | Line 31: | ||
1. [http://c2.com/cgi/wiki?DesignByContract Cunningham & Cunningham, Inc., Design by Contract] | 1. [http://c2.com/cgi/wiki?DesignByContract Cunningham & Cunningham, Inc., Design by Contract] | ||
<br> | <br> | ||
2. [http://www.cs.unc.edu/~stotts/204/contract.html University of North Carolina] | |||
http://en.wikipedia.org/wiki/Design_by_contract | http://en.wikipedia.org/wiki/Design_by_contract | ||
<br> | <br> |
Revision as of 18:36, 15 November 2011
Programming by Contract
Common programming errors
Programming by contract
History
The paradigm was first introduced by Bertrand Meyer, the creator of Eiffel programming language. Although Eiffel has implemented assertions as built in programming by contract support, the concepts can be applied in any language. It uses pre-conditions and post-conditions to document or programmatically assert the change in state caused by a piece of a program. (1)
Methodology
Programming by contract creates a contract between the software developer and software user - in Meyer's terms the supplier and the consumer. Before enters a method or routine, a pre-condition that must be satisfied by the consumer of the routine. Each routine ends with post-conditions which the supplier guarantees to be true (if and only if the preconditions were met). Also, each class has an invariant which must be satisfied after any changes to an object represented by the class. In the other words, the invariant guarantees the object is in a valid state. (2)
Benifit
How does it work with inheritance?
Examples
Example 1
Example 2
Example 3
Summary
References
1. Cunningham & Cunningham, Inc., Design by Contract
2. University of North Carolina
http://en.wikipedia.org/wiki/Design_by_contract
http://www.cs.unc.edu/~stotts/204/contract.html
http://www.cs.usfca.edu/~parrt/course/601/lectures/programming.by.contract.html