Композиция модели, в которой экземпляр класса используется несколько раз - PullRequest
0 голосов
/ 05 ноября 2018

Я хочу смоделировать следующий сценарий:

  • Сообщение a состоит из одного или нескольких базовых типов.
  • Базовые типы: uint8 .. uint64 и int8 .. int64.
  • Сообщение также может содержать другие сообщения.

Пример:

Положение сообщения

  • uint8 x
  • uint8 y

Сообщение о движении

  • Положение начала
  • конец позиции
  • скорость uint8

Это то, что я смоделировал на Сириусе до сих пор Sirius model

Проблема в том, что я не могу дважды связать позицию сообщения с движением сообщения. Можете ли вы предоставить подход моделирования этой проблемы?

1 Ответ

0 голосов
/ 09 ноября 2018

В вашей модели не хватает одного "слоя" для представления структуры "тип сообщения" / "экземпляр сообщения".

Я думаю, что вам нужно сделать что-то вроде этого:

  • Класс MessageType с сдерживанием в направлении BaseType (которое ИМО следует переименовать в нечто вроде MessageDataType)
  • Класс MessageInstance с сдерживанием для себя и ссылкой на MessageType.

Затем конечный пользователь должен сначала создать экземпляр MessageType, называемый «позиция», а второй - «движение». Затем создайте три экземпляра MessageInstance, два из которых указывают на "движение" MessageType, а другой содержит первые два экземпляра MessageInstance.

Я бы также посоветовал серьезно подумать о том, как вы хотите назвать свои концепции, потому что существует потенциальная путаница между экземпляром Ecore одного из вашего EClass и тем фактом, что вы эффективно моделируете структуру типа / экземпляра.

...