Как показать следующие классы и их ассоциации в UML? - PullRequest
0 голосов
/ 05 июня 2011

Давайте представим, что у меня есть два класса:

public class User {
 private Phone defaultPhone;
 private List<Phone> allPhones; 
}

public class Phone {
}

Как мне моделировать User и Phone в диаграмме классов UML?

В частности:

  • Необходимо ли создавать связь ассоциации между User и Phone?
    • Если это так, я должен создать две ссылки на ассоциации (одну для defaultPhone и одну для allPhones)?
    • Если я покажу эти ассоциации на диаграмме, я должен также отобразить defaultPhone и allPhones атрибутов в классе User или это будет избыточно?

Ответы [ 3 ]

3 голосов
/ 05 июня 2011

Это зависит от того, на чем стоит ваша диаграмма.Если связь между пользователем и телефоном важна, а также вы хотите показать некоторые подробности о классе телефона, то да, вы должны показать связь между этими классами.В противном случае вы можете отобразить defaultPhone и allPhones в качестве атрибутов класса User.Если вы рисуете ассоциации, то вам понадобятся ассоциации, по одной для каждого атрибута.Роль и множественность ассоциаций будут отличаться друг от друга. enter image description here

1 голос
/ 05 июня 2011

Ответы, которые я сейчас вижу выше, очень наглядны и достаточны.Таким образом, со своей стороны я могу только добавить, что вы могли бы рассмотреть (не означает, что это лучше всего в данном конкретном случае) использование составных ассоциаций между этими двумя классами, поскольку User является контейнером для объектов Phone (по крайней мере, с точки зрения реализации).Если это постоянные объекты и удаление пользователей каскадом на телефонах, то я бы использовал композит.

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

0 голосов
/ 05 июня 2011

Нужно ли создавать связь между пользователем и Телефон

Какова цель диаграммы UML? Кто зрители? Это необходимо, если требуется такой уровень детализации. Только вы можете решить это.

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

Если ваша аудитория - деловые люди, которым нужно понимание того, что вы делаете, возможно, нет.

Если это так, я должен создать две ассоциации ссылки (одна для defaultPhone и одна для всех телефонов)?

Да, одна будет ссылкой на ассоциацию, а другая - простой ссылкой.

Если я покажу эти ассоциации в диаграмма, я должен также отобразить атрибуты defaultPhone и allPhones в классе пользователя или это будет лишнее?

Если ваша диаграмма показывает каждый атрибут и каждый метод во всей его красе, тогда вы должны включить оба.

Но если это больше, чем несколько классов, я бы сказал, что ваша диаграмма рискует стать настолько подробной, что она будет бесполезной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...