如果我有一系列汽车,我可以按发动机功率对它进行分类:
collectionOfCars -> sortedBy(car|car.power)
或只是
collectionOfCars -> sortedBy(power)
如何对数字集合进行排序?以下表达式是否正确?
collectionOfNumbers -> sortedBy(a|a)
collectionOfNumbers -> sortedBy()
答案 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