Какая разница в ECore между защитой и справкой?

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

2 ответа

Решение

Ссылка: Ссылка представляет собой простое отношение "А знает В". Отдельные ссылки не влияют друг на друга. A может знать B, а B может знать C. Следовательно, если у вас есть A, вы можете перейти к C над B. Если вы удалите ссылку, A, B и C все еще будут существовать, они просто больше не будут знать друг друга,

Сдерживание: сдерживание - это отношение типа "А имеет В". Обычно используется для списков, например, "A имеет несколько B". ECore/EMF может затем выполнять атомарные команды в таких коллекциях, например, перемещать все объекты из одного контейнера в другой. Он также может навязывать ограничения, такие как минимальное количество содержащихся объектов или максимальное количество содержащихся объектов, или гарантировать, что содержащийся объект не содержится ни в каком другом контейнере.

Пример:

Предположим, у вас есть объект с именем ShoppingCart со ссылкой под названием Customer и сдерживание называется OrderedProducts, OrderedProducts имеет ссылку на Product,

Что эта модель говорит вам?

  • Вы можете назначить Клиента в ShoppingCart. Если вы удалите Customer из ShoppingCart, сам объект Customer все еще будет существовать (например, в базе данных).
  • Для объектов OrderedProduct необходима корзина ShoppingCart. Если вы удалите один из ShoppingCart, он перестанет существовать.
  • Каждый заказанный продукт имеет ссылку на существующий продукт в базе данных. Если вы удалите один из OrderedProducts из ShoppingCart, продукт в базе данных все еще будет там - только заказ этого продукта для данного конкретного клиента исчез

Ссылка: может быть как ассоциация в UML

Сдерживание: это композиционное отношение из UML

Также это можно увидеть на диаграмме ЭДС, если вы установите containment Значение true, тогда строка будет иметь заполненную сторону, показывающую содержание / состав. Это то, что я заметил.

Другие вопросы по тегам