- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
You can think of the class invariant as a health criterion, which must be fulfilled by all objects in between operations. As a precondition of every public operation of the class, it can therefore be assumed that the class invariant holds. In addition, it can be assumed as a postcondition of every public operation that the class invariant holds. In this sense, the class invariant serves as a general strengthening of both the precondition and the postcondition of public operations in the class. The effective precondition is the formulated precondition in conjunction with the class invariant. Similarly, the effective postcondition is the formulated postcondition in conjunction with the class invariant.
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
{...}
}
Server
上定义了类不变量类(class):
Foo
的)的先决条件?
Foo
的)后置条件?
Caller
上定义类不变量类(class)以任何方式加强
Foo
的先决条件还是后置条件?
Foo
上定义了类不变量的
cmdIn
范围:
Foo
为前提声明
cmdIn.Length
在范围内
1-20
,但在
Input
上定义的类不变量之一声明
Input.Length
应该在范围内
2-19
,然后
Foo
的前提确实加强了?
Input.Length
应该在范围内
2-19
,这不是
Foo
的错误吗?定义一个并不总是
true
的前提条件(
cmdIn.Length
不能保存值
1
或
20
)
Input
上定义了类不变量声明
Input.Length
应该在范围内
0-100
,然后
Foo
前提不是加强?
cmdIn
上的类不变量也以某种方式加强
Foo
的后置条件?
Foo
上定义了类不变量的返回值
Foo
上的后置条件声明
cmdOut.Length
在范围内
1-20
,但在
Output
上定义的类不变量之一声明
Output.Length
应该在范围内
2-19
,然后
Foo
后置条件确实加强了?
Output
上定义了不变量声明
Output.Length
应该在范围内
0-100
,然后
Foo
后置条件没有加强?
Output
上定义的类不变量也以某种方式加强
Foo
的前提?
Foo
的参数和/或返回值,它仍然会加强
Foo
的先决条件和后置条件吗?如果这就是文章实际暗示的内容,那怎么可能?
最佳答案
a) Preconditions are typically formulated in terms of the formal parameters of the called operation, so how can class invariant strengthen method's ( Foo's ) preconditions?
Class BoundedBuffer<T> {
public int max // max #items the buffer can hold
public int count // how many items currently in the buffer
void push(T item) {...}
T pop() {...}
}
push()
的前提条件将是缓冲区尚未达到其最大大小:
pre: count < max
inv: count >=0 //can't have -ve number of elements in the buffer
push()
之前必须为真。操作必须满足其后条件。这两个子句在逻辑上是“与”在一起的。所以有效的前提是
count >=0 AND count < max
.这是比单独的前提条件更强(更具限制性)的约束。
pre: count < max AND item.size() <= MAX_ITEM_SIZE
pre: count < max AND item.size() <= MAX_ITEM_SIZE AND count >=0
- Can class invariant defined on Caller class in any way strengthen Foo's preconditions or postconditions?
关于domain-driven-design - 类不变量如何加强前置条件和后置条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16344039/
从 iOS 9 及更高版本开始,出于安全目的,Apple 强制用户向特定主机发出 HTTPS 请求,或者如果必须发出 HTTP 请求,Apple 希望用户在 plist 中提供相同的信息。 类似于:
我想知道,除了使用 format compact 之外,是否还有一种方法可以使矩阵的显示更紧凑或更紧凑(可能是第三方包-格式化矩阵的输出?) 这是在 MATLAB 中显示的矩阵示例,格式为 compa
我有一个项目,需要在 HTTP Web 服务器上进行安全交易。我完全控制客户端(移动应用程序)并控制服务器。我想开发一个系统,客户端可以在其中添加或减去存储在服务器数据库中的值。存储的值是基于货币的,
我是一名优秀的程序员,十分优秀!