Связи классов UML

Я хотел бы подтвердить, действительно ли я нахожусь на правильном пути при определении общих отношений класса UML. Например, это соотношение между:

1 элемент stackoverflow и его/ее учетная запись пользователя stackoverflow, классифицированная как составное отношение или отношение агрегации? Сначала я думал, что это ассоциация, потому что у этого участника есть "учетная запись". Однако, во-вторых, я думаю о его составе, потому что каждая "часть" (учетная запись пользователя) принадлежит только одному целому (пользователю) за раз, что означает, что до тех пор, пока я зарегистрирован в stackoverflow, я должен использовать это одно и только пока я не выйду из системы. Если я снова войду в stackoverflow с другой учетной записью, тогда ее состав снова. Вы согласны?

2 база данных и учетная запись пользователя пользователя связаны с агрегацией? Я думаю, так потому, что 1 база данных (целое) может хранить 0... * количество учетных записей пользователей (частей), но другая база данных может хранить одни и те же учетные записи пользователей.

Наконец, может ли кто-нибудь рекомендовать веб-сайт, специализирующийся на разработке кода с использованием UML? Спасибо заранее

+3
14 мар. '10 в 1:18
источник поделиться
6 ответов

Член stackoverflow и его/ее учетная запись пользователя stackoverflow, классифицированные как отношение композиции или отношение агрегации?

Хорошо, давайте посмотрим на следующую диаграмму

  • агрегирование

Возможна пересадка

Aggregation

Если я пропущу какой-нибудь палец, то другая рука сможет получить мой отсутствующий палец


  • Состав

Пересадка невозможна

Composition

Если я пропущу какой-нибудь палец, то никакая другая рука не сможет получить мой отсутствующий палец

И Агрегация, и Композиция, A Finger (Часть) имеет свой жизненный цикл, привязанный к жизненному циклу принадлежащего ему экземпляра Entity (если я пропущу свою руку, поэтому его Finger будет пропущен). Итак, если я удалю свой член Stackoverflow, его UserAccount будет удален,

Вернемся к вашему вопросу: хотя ваша учетная запись UserAccount связана со своим жизненным циклом с участником Stackoverflow, в случае пропуска может быть назначена другому участнику Stackoverflow??? Я так не думаю. Итак, это композиция

+8
14 мар. '10 в 4:53
источник

Спецификация UML некогерентна в отношении определений агрегации и состава. Они не определены должным образом, как показали некоторые авторы (например, Henderson-Sellers). Я предлагаю вам не тратить время на то, чтобы определить, лучше ли что-то в вашем уме сопоставляет с тем или другим. Правильного ответа нет.: -)

Я сам часто использую абстрактное целое/частичное отношение для моделирования целых частей и частей. Семантика о привязке, времени жизни и исключительности может быть задана псевдокодом или аннотациями. Существует так много разных случаев и сценариев, которые пытаются заранее предусмотреть все возможности, не стоит того. Изменить. Этот подход был предложен Хендерсоном-Селлерсом и мной для OMG во время обзорного раунда более ранней версии UML, несколько лет назад. К сожалению, этого не произошло.: -)

Даже если UML были согласованными, есть неправильные или неправильные модели; некоторые модели полезны, а некоторые нет. Вы создаете модели в зависимости от цели, которую вы преследуете.

+3
14 мар. '10 в 1:28
источник

Лучшей книгой для UML является Мартин Фаулер "UML Distilled". Это было в третьем издании, поэтому он выдержал испытание временем. У этого есть редкое достоинство быть упакованным с хорошей информацией и остающейся тонкой.

В нем хорошо обсуждается агрегация и ассоциация.

У Мартина Фаулера также есть хорошие мысли о разных лагерях UML: MDA против "sketchers". Я твердо в лагере эскизов: не слишком зацикливайтесь на обработке UML, как если бы он производил инженерные чертежи. Это устройство связи, не более того.

+2
14 мар. '10 в 1:51
источник

Согласие, которое я использую, чтобы запомнить, что такое то, что составное отношение означает, что содержащиеся экземпляры не могут существовать без его включения типа, тогда как в агрегированном отношении объекты могут существовать без закрывающего типа В качестве примера:

  • Автомобиль имеет "4.Whels(агрегация)

  • Автомобильный идентификационный номер автомобиля является "частью" автомобиля (композиции)

(Пример мусора, но лучшее, что я мог бы припомнить:)

+1
14 мар. '10 в 3:43
источник

Агрегация: слабый "имеет" Состав: сильный 'имеет'

+1
14 мар. '10 в 2:19
источник

Эта дополнительная информация доступна только в UML, потому что вы не можете, например, увидеть разницу в коде Java между агрегацией и композицией. Поэтому я не согласен с тем, что агрегация и состав не являются блестящей идеей, потому что эта информация важна для качества проекта!

0
17 мар. '10 в 9:45
источник

Посмотрите другие вопросы по меткам или Задайте вопрос