按契约和类不变式设计

lou*_*imo 4 java design-by-contract

我正在阅读有关 dbc 的内容(http://en.wikipedia.org/wiki/Design_by_contract)有人能给我一个使用与继承相关的类不变量的简单示例吗?

Pas*_*uoq 5

当契约概念适用于面向对象语言时,设计会变得稍微复杂一些。

类不变量是一个属性,在调用方法时保证类的每个实例都具有该属性(就像所有方法的公共前提条件),并且作为回报,每个方法和构造函数必须确保在终止时保持 true(例如常见的后置条件)。

它们适合表达一致性条件。模拟实际钱包的类Wallet可能具有类不变量,即所含金额始终为正。

类不变量与契约的其余部分一样,是继承的。方法的新实现必须提供与其替换的方法相同的保证。