开始学习UML和OCL以及何时使用Inv,pre,post

时间:2015-11-26 18:19:37

标签: uml ocl

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

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

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

正如你可以看到它要求ocl不变声明,这是否意味着我必须使用inv

欢呼声

1 个答案:

答案 0 :(得分:0)

我不认为使用不变量是正确的。当方法首先以某种实现语言开始时,在sum具有其最终值之前,将违反不变量。因此,我认为你想要一个后期条件。 post条件告诉你方法返回时应该是什么。