所以,我在3个小时前开始学习OCL。我对您何时可以使用inv
以及何时需要使用pre
和post
感到非常困惑。
所以我想知道你是否可以在这种情况下使用inv
?
context Service :: cost(d : double)
inv result = workDone.cost -> sum()
这是对一个问题的回答: 写一个OCL不变量,说明服务的总成本是成本的总和 对于在汽车上完成的所有工作,您必须假设存在一种方法 Service :: cost()并指定结果。
正如你可以看到它要求ocl不变声明,这是否意味着我必须使用inv
?
欢呼声
答案 0 :(得分:0)
我不认为使用不变量是正确的。当方法首先以某种实现语言开始时,在sum具有其最终值之前,将违反不变量。因此,我认为你想要一个后期条件。 post条件告诉你方法返回时应该是什么。