您可以将类不变量视为健康标准,操作之间的所有对象都必须满足该标准。作为类的每个公共操作的先决条件,因此可以假设类不变量成立。此外,它可以假定为类不变量所具有的每个公共操作的后置条件。从这个意义上说,类不变量作为类中公共操作的前置条件和后置条件的一般强化。有效的前提条件是与类不变量一起制定的前提条件。类似地,有效的后置条件是与类不变量一起制定的后置条件。
public class Server
{
// other code ommited
public Output Foo(Input cmdIn)
{
...
return cmdOut;
}
}
public class Caller
{
// other code ommited
/* calls Server.Foo */
public void Call()
{...}
}
public class Input
{
// other code ommited
public int Length
{...}
}
public class Output
{
// other code ommited
public int Length
{...}
}
1.如果类上定义了类不变量Server:
a)前提条件通常是根据被调用操作的形式参数制定的,那么类不变量如何加强方法的 ( Foo')前提条件?
b)后置条件是根据被调用方法的返回值制定的,那么类不变量如何加强方法的Foo后置条件呢?
2.在类上定义的类不变量能否Caller以任何方式加强Foo的前置条件或后置条件?
3.如果在's参数上定义了类不变量:FoocmdIn
a) 如果在 range 内的状态的前提条件,但是在应该在 range 内的状态上定义的类不变量之一,那么前提条件确实得到了加强?FoocmdIn.Length1-20InputInput.Length2-19Foo
b) a ) 中的逻辑不是有点缺陷吗,因为如果类不变量已经声明Input.Length应该在范围内2-19,那么Foo定义一个并不总是存在的前提条件true不是错误(cmdIn.Length不能保存值1或20)
c) 但是如果在应该在 range 内的状态上定义类不变量,那么' 的前提条件不是加强吗?InputInput.Length0-100Foo
d)定义的类不变量cmdIn也能以某种方式加强后置条件吗?Foo
4.如果在返回值上定义了类不变量Foo
a)如果在 range 内的状态的后置条件,但是在应该在 range 内的状态上定义的类不变量之一,那么的后置条件确实是加强的?FoocmdOut.Length1-20OutputOutput.Length2-19Foo
b)但是如果在应该在 range 内的Output状态上定义不变量,那么' 的后置条件不是加强的吗?Output.Length0-100Foo
c)定义的类不变量Output也能以某种方式加强Foo的前提条件吗?
( _ _ _ _ _ Foo_还是强化Foo的前置条件和后置条件?如果这就是文章的实际含义,那怎么可能?
谢谢