对数字集合进行排序

时间:2015-06-13 07:54:09

标签: uml ocl

Link to OCL documentation

如果我有一系列汽车,我可以按发动机功率对它进行分类:

collectionOfCars -> sortedBy(car|car.power)

或只是

 collectionOfCars -> sortedBy(power)

如何对数字集合进行排序?以下表达式是否正确?

collectionOfNumbers -> sortedBy(a|a)

collectionOfNumbers -> sortedBy()

1 个答案:

答案 0 :(得分:1)

你可以完全拥有OCL中的整数集合(以及String和所有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)

您可以在本文中找到更多示例“对象约束语言(OCL): “权威指南”由Jordi Cabot和Martin Gogolla撰写,你可以在这里找到论文: http://www.db.informatik.uni-bremen.de/publications/Cabot_2012_SFM.pdf