2014-10-11 2 views
2

Как определить новый тип данных в OCL? (пример - дата)Определить тип данных в OCL

OCL уже имеет предопределенные типы (Integer, String, Real & Boolean). Но как я могу определить новый тип данных?

Пример: У меня есть человек, вызывающий вызов класса. Класс Person имеет следующие атрибуты, имя: String Возраст: Integer рождения: Дата

ответ

1

В OCL выражениях, которые всегда прикреплены к модели UML (обычно на модели класса), образующих их контекст, вы можете использовать типы определенных в модели. Например, в модели класса вы можете определить тип данных Date, а затем вы можете использовать Date в выражениях OCL.

+0

Я использую USE: среда спецификации на основе UML для моделирования и проверки дизайна с использованием OCL. Я не могу найти способ определить новый тип в модели UML в USE. Я был бы очень признателен, если бы вы могли дать мне некоторые рекомендации по определению нового типа в USE. –

+0

@RumeshKavinda USE - странный инструмент, изобретенный в Университете Бремена, Германия. Инструмент не поддерживает стандартное моделирование классов UML, а не стандартный формат данных обмена UML * .xmi. Вы можете попытаться получить определенную поддержку, отправив почту по контактному адресу, указанному в файле readme, или разместив вопрос на форуме поддержки инструмента - http://sourceforge.net/p/useocl/discussion/928881/ – xmojmr

1

(+1) Для правильного вопроса я не видел, кто положил «-1», не указав причину.

OCL & UML используются togheter. Новые типы данных не определяются непосредственно в OCL, но сначала в UML. Позже вы использовали новый объявленный тип данных в OCL.

Значения перечисления являются примером объявления нового типа данных.

Suppouse Вы моделируете программное обеспечение для автомобилей. Вы описываете транспортные средства, имеют двигатель, и каждый двигатель имеет «состояние» или «статус».

Состояние двигателя ограничено перечислением, набором значений.

В U.M.L. диаграммы классов, новый статус описывается как поле , аналогичное классу со значениями и может иметь другие классы, , которые относятся к этому новому типу.

.................................................................... 
..+----------------------+.........+-----------------------------+.. 
..|  <<enum>>  |.........|   <<class>>   |.. 
..| EngineStatusEnum |.........|   MotorClass   |.. 
..+----------------------+.........+-----------------------------+.. 
..| * Unknown   +---------+ [+] EngineStatusEnum Status |.. 
..| * Stopped   |.........| [+] ... other members  |.. 
..| * Running   |.........+------------+----------------+.. 
..| * Testing   |......................|................... 
..| * Damaged   |......................|................... 
..+----------------------+.........+--------------+---------\--+.... 
...................................|       \ |.... 
...................................| (Status <= Stopped &&) \|.... 
...................................| (Status >= Running)  |.... 
...................................|       |.... 
...................................+---------------------------+.... 
.................................................................... 

И примечание, отображающее какое-либо условие в OCL, применяя объявленный новый тип.

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