Определение ассоциации в спецификации UML
Ассоциация определяет semantic relationship
между классификаторами. Примерами ассоциации являются set of tuples relating instances of the classifiers
, каждыйtuple value may appear at most once
, Ассоциация представляет set of connections
среди экземпляров классификаторов. Экземпляр Ассоциации - это Ссылка, которая являетсяtuple of Instances
взяты из соответствующих классификаторов
Интересно, есть ли кто-нибудь, кто помогает мне понять каждое слово определения ассоциации, особенно выделенные? Потому что я читаю об этом из разных источников, но все они говорят одни и те же слова, но я хотел бы получить более подробное определение
1 ответ
семантические отношения
Это означает, что существует структурная связь между связанными вещами, которая возникает из проблемного пространства. Например: ассоциация Person owns Dog
, В заявлении на лицензирование собаки это отношение является центральной концепцией; Приложение существует для управления связями между людьми и собаками. Это "семантические" отношения, потому что они имеют значение, которое происходит из проблемного пространства.
набор кортежей, относящихся к экземплярам классификаторов
Кортеж - это "упорядоченный набор элементов" ( википедия). Примером ассоциации Собаки Собственности может быть ("Fido", "Fred")
где "Фидо" представляет собаку, а "Фред" человека. Ассоциация может быть представлена как набор кортежей в том смысле, что для каждой комбинации Dog и Person существует один кортеж, для которого выполняется отношение; например
[("Fido", "Fred"), ("Angel", "Chuck Norris"), ("Boatswain", "Lord Byron")]
Обратите внимание, что нет пар для пар, где отношения не сохраняются; например ("Fido", "Lord Byron")
,
каждое значение кортежа может появляться не более одного раза
Невозможно, чтобы набор содержал дубликаты, так как это просто повторяет одно и то же дважды. Так что нет смысла добавлять ("Fido", "Fred")
снова к списку выше; мы уже знаем, что Фред владеет Фидо.
Ассоциация представляет собой набор связей между экземплярами классификаторов
Это просто еще один способ думать об отношениях. Для каждого кортежа в наборе вы можете подумать о связи или связи между связанными объектами.
Экземпляр Ассоциации - это Ссылка, которая является кортежем Экземпляров.
Смотри выше. Каждый кортеж представляет одну связанную пару объектов. Ссылки на ассоциации, как объекты на классы. У классов есть много объектов; Ассоциации имеют много ссылок.
Фундаментальные ассоциации существуют, чтобы показать, где вещи систематически связаны с другими вещами. Кортежи и наборы - это способ думать и / или представлять эти связанные вещи. (На самом деле, я бы немного сошлся с определением в вашем OP: ссылки в ассоциации могут быть представлены в виде набора кортежей: но это не то, чем они являются, а то, как они моделируются. Та же информация может быть в равной степени смоделирован графом, где каждый объект был представлен вершиной (узлом), а каждая ассоциация - ребром.
НТН.
РЕДАКТИРОВАТЬ:
Отвечая на ваши вопросы. Похоже, вы понимаете это довольно хорошо; некоторые наблюдения.
Во-первых, вот как я бы смоделировал это:
Теперь к каждому из ваших пунктов:
Имя: имя ассоциации (необязательно, можете ли вы дать ему имя или нет)
Я предпочитаю глагол, основанный на именовании, так как он выявляет смысл отношений. Моя модель может быть прочитана непосредственно как:
- Каждый человек имеет много собак (где "много" означает 0 или более)
- Каждая собака принадлежит ровно одному человеку
Это устраняет необходимость в явном названии ассоциации, хотя вы все равно можете сделать это, если хотите.
видимость (меня это не волнует, по крайней мере сейчас, я не осознавал его важность до сих пор).
Я бы согласился. Лично я никогда не аннотирую модели с наглядностью.
Имя: (здесь имя MemberEnd), поэтому я оставил его имя по умолчанию на скриншоте
Смотрите комментарий об именах ассоциаций выше. Я предпочитаю именование на основе глаголов, а не на основе ролей: "собственные" гораздо более явно описывают цель отношений, чем именование конца ассоциации "собака" или "собака".
владелец memberEnd [...]
Лично я этим не пользуюсь. Есть целый другой разговор об этом, который, я не верю, оказывает существенное влияние в большинстве случаев.
Судоходный [...]
Опять же, я не использую это лично. В действительности навигация должна быть основана на базовом поведении. Требуется ли навигация в одну сторону / в обе? Затем установите навигацию соответственно. Однако некоторые люди предпочитают указывать это явно, исходя из этого, это делает реализацию более понятной (если только с возможностью навигации это можно реализовать с помощью ссылок (ссылок) только в одном классе; если двунаправленный, ему нужны ссылки в обоих направлениях - с сопутствующей логикой чтобы все было согласованно).
множественность
Я согласен с вашим выбором.
Надеюсь, это поможет.