如何在OCL中使用与计数相关的实例而不是属性

时间:2013-11-20 15:16:09

标签: collections attributes uml ocl

例如,如果我有一个图书馆,并且向借款人发放图书的前提条件是它只能在不是参考资料的情况下发出,而且还没有借给其他人,我可以说:

context Copy::issue() : Boolean
    pre: (referenceCopy and onLoan) == false

但是,这将使用属性onLoan作为书籍副本。相反,我想用收集方法来计算相关实体?

1 个答案:

答案 0 :(得分:1)

例如,您可以使用isEmpty()

context Copy::issue() : Boolean
    pre: not self.referenceCopy and self.borrowers->isEmpty()

或count()

context Copy::issue() : Boolean
    pre: not self.referenceCopy and self.borrowers->count() = 0

如果需要,可以省略上下文变量 self