Можно ли сгенерировать настоящий код Java с помощью Dresden OCL Toolkit? - PullRequest
0 голосов
/ 28 марта 2012

Я пытался использовать Dresden OCL для описания ограничений для диаграммы классов UML. Похоже, что он может генерировать код AspectJ нормально, но я не смог найти способ для генерации Java-кода, представляющего моделируемые классы (а также их атрибуты и методы). Примеры, предоставляемые Dresden OCL Toolkit, также показывают, как генерировать код AspectJ, когда код Java уже присутствует (учебник по OCL22Java).

Можно ли сгенерировать код Java (не AspectJ) со встроенными в него ограничениями? И если это так, то как это делается?

Ответы [ 3 ]

1 голос
/ 01 мая 2012

Автономный движок DresdenOCL (StandaloneFacade) содержит функцию generateJavaCode. Я не уверен, хотя, если эта функция на самом деле «завершена» и генерирует правильный код Java для всех возможных ограничений OCL. Вы также не можете найти информацию об этой функции в Google, она просто используется в отдельном примере.

Редактировать: в качестве примера, какой код Java он генерирует:

Для этого выражения OCL (на некоторой простой модели UML, которую я создал)

context person
inv: self.age >= 0

вы получаете этот кусок кода Java

(aClass.age >= new Integer(0))

И для этого выражения OCL

context person::havingBirthday()
post: self.age = self.age@pre+1

вы получите это:

((Object) aClass.age).equals((atPreValue1 + new Integer(1)))

Таким образом, сгенерированный код Java не настолько удобен для использования, вам нужно немного изменить его (или ваши функции Java), чтобы фактически использовать его.

1 голос
/ 29 марта 2012

Это невозможно сделать с помощью Dresden OCL Toolkit, поэтому для этого нужно использовать какой-то другой инструмент.Я использовал Uml2Java для Acceleo.

0 голосов
/ 18 декабря 2017

Eclipse OCL предоставляет поддержку для обогащения Java, сгенерированной из моделей Ecore, полным встроенным Java-кодом для OCL, встроенным в Ecore.Eclipse UML2 обеспечивает поддержку преобразования UML со встроенным OCL в Ecore со встроенным OCL.Теперь это все, что вы просите.Это было доступно в течение нескольких лет.См. Учебник Code Generator в документации по Eclipse OCL для получения примера и дополнительной информации.

...