您可以将类不变量视为健康标准,操作之间的所有对象都必须满足该标准。作为类的每个公共操作的先决条件,因此可以假设类不变量成立。此外,它可以假定为类不变量所具有的每个公共操作的后置条件。从这个意义上说,类不变量作为类中公共操作的前置条件和后置条件的一般强化。有效的前提条件是与类不变量一起制定的前提条件。类似地,有效的后置条件是与类不变量一起制定的后置条件。
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参数上定义了类不变量:Foo
cmdIn
a) 如果在 range 内的状态的前提条件,但是在应该在 range 内的状态上定义的类不变量之一,那么前提条件确实得到了加强?Foo
cmdIn.Length
1-20
Input
Input.Length
2-19
Foo
b) a ) 中的逻辑不是有点缺陷吗,因为如果类不变量已经声明Input.Length
应该在范围内2-19
,那么Foo
定义一个并不总是存在的前提条件true
不是错误(cmdIn.Length
不能保存值1
或20
)
c) 但是如果在应该在 range 内的状态上定义类不变量,那么' 的前提条件不是加强吗?Input
Input.Length
0-100
Foo
d)定义的类不变量cmdIn
也能以某种方式加强后置条件吗?Foo
4.如果在返回值上定义了类不变量Foo
a)如果在 range 内的状态的后置条件,但是在应该在 range 内的状态上定义的类不变量之一,那么的后置条件确实是加强的?Foo
cmdOut.Length
1-20
Output
Output.Length
2-19
Foo
b)但是如果在应该在 range 内的Output
状态上定义不变量,那么' 的后置条件不是加强的吗?Output.Length
0-100
Foo
c)定义的类不变量Output
也能以某种方式加强Foo
的前提条件吗?
( _ _ _ _ _ Foo
_还是强化Foo
的前置条件和后置条件?如果这就是文章的实际含义,那怎么可能?
谢谢