Есть ли способ указать отношение, посредством которого класс генерирует код для другого класса?UML - PullRequest
0 голосов
/ 18 марта 2012

Я пишу систему, которая генерирует код для ряда классов, и мне нужно документировать его с помощью диаграммы UML. Классы будут следовать той же структуре, но у них будут имена, установленные пользователем. Есть ли способ указать, что CCodeGenerator генерирует код для этих классов?

Кроме того, в настоящее время у меня есть связь между моим CDataDefinition классом (который определяет, что должно быть включено в каждый из сгенерированных классов) и CCodeGenerator, есть ли способ обозначить, что кратность отношений между сгенерированные классы и генератор в точности равны количеству CDataDefinition экземпляров?

Эти классы будут использоваться в другой системе, для которой также понадобятся диаграммы классов UML. Есть ли способ показать, что класс в этом проекте (CEditior) использует их?

Пример операции:

У меня есть 3 CDataDefinition объекты, которые определяют классы X, Y и Z. Мой экземпляр CCodeGenerator создаст из них 3 класса (код C # в файлах .cs).

CEditor в отдельном решении будет взаимодействовать с этими 3 классами.

Ответы [ 2 ]

0 голосов
/ 08 июня 2016

Вам нужно создать шаблонный класс (CDataDefinition), который будет представлять структуру класса, который может быть создан CCodeGenerator. Когда вы создаете фактический класс, вы делаете привязку, поэтому все, что вам нужно сделать, это показать, что CCodeGenerator имеет операцию(скажем,) classGenerator (name: String), а затем вы можете показать, что этот метод создает класс как надлежащую привязку для CDataDefinition.

0 голосов
/ 28 марта 2012

Если вы прочитаете некоторую вводную информацию по MOF , вы увидите, что в семействе UML экземпляр метакласса в одном слое является классификатором в следующем.

В вашем случае класс в генераторе кода, описывающий класс в его выходных данных, будет метаклассом (CDataGenerator), а классы в выходных данных представлены экземплярами метакласса.

В простом UML нет способа, чтобы ассоциации, отличные от 'X, имеют тип Y', пересекались между слоями.

Возможно, вы сможете смоделировать такие отношения, используя MOV QVT (запрос, просмотр, преобразование - то есть язык для отображения одной модели на другую), но я не знаю текущего состояния поддержки инструмента для этого, и если вы Если у вас есть инструмент QVT, вам, вероятно, не понадобится писать генератор кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...