2015-06-13 5 views
0

Link to OCL documentationСортировка набор чисел

Если у меня есть коллекция автомобилей, я могу сортировать его по мощности двигателя, как это:

collectionOfCars -> sortedBy(car|car.power) 

или просто

collectionOfCars -> sortedBy(power) 

Как сортировать набор чисел? Правильны ли следующие выражения?

collectionOfNumbers -> sortedBy(a|a) 

collectionOfNumbers -> sortedBy() 
+0

В зависимости от того, как указаны ваши номера (т. е. какой тип/класс у них есть). –

+0

Предположим, что это набор целых чисел или реалов. – user5005689

+0

Они просто чистые числа, а не объект какого-то класса. В этом проблема, у меня нет атрибута для ссылки в sortedBy. Но я не думаю, что не могу сортировать набор целых чисел в OCL. – user5005689

ответ

1

Вы можете полностью есть набор чисел в OCL (а также коллекцию струнных и всех OCL «примитивные типы»), они называются коллекции литералов (стр.25 на OCL спецификации). Вы можете построить их с нуля, используя {}, например. Sequence{3,2,4,1}.

Кроме того, считает это c.ownedAttribute.name (где c это класс), вы будете строить набор строки (это выражения использовать неявный итератор .)

Если вы хотите, чтобы отсортировать коллекцию буквальных, вы можете сделать 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)

Вы можете найти больше примеров в этой статье "Object Constraint Language (OCL): Полное руководство" от Jordi Кабот и Мартин Gogolla, вы можете найти бумага здесь: http://www.db.informatik.uni-bremen.de/publications/Cabot_2012_SFM.pdf

Смежные вопросы