这句话可以被视为一个类不变量吗?

时间:2011-12-02 00:15:38

标签: computer-science semantics design-by-contract invariants

这是一个非常笼统的想法,但在这个例子中我们使用C#。

鉴于此

  • 我有一个一次性课程Foo,它实现了IDisposable
  • Foo有一个布尔标志disposed false ,直到Dispose被调用,之后为真
  • Foo的所有公开方法ObjectDisposedException如果disposed 为真则会Foo

这句话是

吗?
  

除了Dispose之外,ObjectDisposedException的任何方法都会在Foo已被处置的实例上调用Foo

描述{{1}}

的不变量

2 个答案:

答案 0 :(得分:2)

没有

这是该类所有方法共有的一组规则。不变量不是方法的规则。

按合同设计包括定义合同的以下部分:

  • 方法前提条件
  • 方法后置条件
  • Class invariant

您所描述的是方法后置条件。它们属于每个函数的契约(当然是该类合同的一部分),但不属于类不变量。

答案 1 :(得分:0)

这不是一个不变的。这是关于对象状态的陈述。 IMO,你所描述的是一种处置方法的后置条件和所有方法的后置条件。