0

链接到 OCL 文档

如果我有一系列汽车,我可以按发动机功率对其进行排序,如下所示:

collectionOfCars -> sortedBy(car|car.power)

或者干脆

 collectionOfCars -> sortedBy(power)

如何对一组数字进行排序?以下表达是否正确?

collectionOfNumbers -> sortedBy(a|a)

collectionOfNumbers -> sortedBy()
4

1 回答 1

1

您完全可以在 OCL 中收集整数(以及字符串和所有 OCL“原始类型”的集合),它们被称为文字集合(OCL 规范第 25 页)。{}您可以使用例如从头开始构建它们Sequence{3,2,4,1}

此外,考虑这个c.ownedAttribute.name(其中c是一个类),您将构建一个 String 的集合(这个表达式使用隐式迭代器.

如果要对文字集合进行排序,可以collection->sortedBy(a|a)按照建议进行。

Sequence{3,2,4,1}->sortedBy(a|a)结果Sequence{1,2,3,4} : Seqence(Integer)

Bag{8,7,8,9}->sortedBy(i|i)结果Sequence{7,8,8,9} : Sequence(Integer)

您可以在 Jordi Cabot 和 Martin Gogolla 的这篇论文“Object Constraint Language (OCL): A Definitive Guide”中找到更多示例,您可以在此处找到该论文: http ://www.db.informatik.uni-bremen.de/出版物/Cabot_2012_SFM.pdf

于 2015-06-16T06:52:21.140 回答