В чем разница в Экоре между сдерживанием и справочником?
-
05-10-2019 - |
Вопрос
При создании ссылок между объектами ECORE есть возможность отметить ссылку как «сдерживание». Может кто-нибудь объяснить мне в простых словах, в чем разница между простой ссылкой и сдерживанием? Определения и объяснения, которые я нашел до сих пор, не сделал для меня трюк.
Решение
Ссылка: Ссылка это просто "A знает б" связь. Отдельные ссылки не влияют друг на друга. A может знать B и B может знать C. Следовательно, если у вас есть, вы можете перейти к C более чем B. Если вы удалите ссылку, A, B и C все равно существуют, они просто не знают друг друга Отказ
Сдерживание: Сдерживание - это "А имеет б" Вид отношения. Обычно используется для списков, например, «A имеет несколько B». ECORE / EMF может затем выполнять атомные команды на таких коллекциях, таких как перемещение всех объектов из одной защиты в другой. Он также может применять ограничения, такие как минимальное количество содержащихся содержащихся объектов или максимальное количество содержащихся объектов или обеспечение того, чтобы содержащийся объект не содержался в каком-либо другом сдержите.
Пример:
Предположим, у вас есть объект под названием ShoppingCart
со ссылкой ссылаться Customer
и сдерживание называется OrderedProducts
. Отказ То OrderedProducts
имеет ссылку на Product
.
Что эта модель говорит вам?
- Вы можете назначить заказчику магазин. Если вы удалите клиента из ShoppingCart, сам объект клиента все еще будет существовать (например, в базе данных)
- Предметы упорядоченной продукции нужны покупки для существования. Если вы удалите один из Корзината, он перестанет существовать.
- Каждый заказProduct имеет ссылку на существующий продукт в базе данных. Если вы удалите один из упорядоченных продуктов из Корзакварта, продукт в базе данных все равно будет там - просто порядок этого продукта для этого конкретного клиента
Другие советы
Ссылка : Может быть как объединение в UML
Сдерживание : это отношение композиции от UML
Также это можно увидеть на диаграмме ЭДС, если вы установите containment
Действительно, то линия будет иметь заполненную сторону, показывая содержание / композицию. Это то, что я наблюдал.