1

所以,我大约 3 小时前开始学习 OCL。我对何时可以使用inv以及何时需要使用preand感到非常困惑post。所以我想知道你是否可以inv在这种情况下使用?

context Service :: cost(d : double)
   inv result = workDone.cost -> sum()

这是对一个问题的回答:编写一个 OCL 不变量,说明服务的总成本是在汽车上完成的所有工作的成本总和,您必须假设存在方法 Service::cost() 并指定结果。

正如您所看到的,它要求使用 ocl 不变量声明,这是否意味着我必须使用inv?

干杯

4

1 回答 1

0

我不认为不变量是正确的使用方法。当该方法首次以某种实现语言启动时,在总和具有其最终值之前,将违反不变量。因此,我认为你想要一个后置条件。后置条件告诉您方法返回时应该为真。

于 2015-11-26T20:16:14.610 回答