Форум Сообщества Аналитиков

×


Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Денис Иванов

Страницы: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
436
Budda
>Наверное, я плохо описал задачу. User - это владелец и игрок в одном лице. нет отдельной роли "игрок". Если он владелец, то он и игрок. Кроме того, не стоит задача поиска команды по её ИД. Т.е. ваша ассоциация, наверное, не нужна.

Если роли "игрок" нет, но значит ассоциация не нужна.

>пункты 2-4 - вроде прояснились, как я понимаю, ввиду того, что роли Player - реально нет, то верхнюю ассоциаци можно бы и убрать. Да?

В общем да, но тебе надо решить, как ты покажешь, что
"У одного игрока может быть либо 0 команд, либо одна, либо множество."
Или здесь "игрок" = "владелец"? Если так - добавь кратность на полюс Team

>5. Что такое квалификатор "Id", как его нужно читать?
>Это значит, что в классе, на другом конце ассоциации (team) есть поле id, зная значение которого можно снизить кратность на полюсе ассоциации.

Да

>Улыбающийся надо осмыслить... Улыбающийся
>в той книге, что я читаю, перед полем (Id) ставиться имя класса, потом точка, а уже потом имя поля, т.е. так: Team.Id - получается вроде немного
>понятнее, чем просто Id... а смысл по идее тот же самый.
Тот же самый. Пиши как нравится

>Но в любом случае, это обозначение (квалификатор) означает, что на другом конце ассоциации есть соответствующее поле, по которому можно найти соответствующий объект. да?
Найти один объект, несколько объектов или не найти ничего

>Но где хранится значение "поля Id" на "этом" конце ассоциации, т.е. внутри объекта класса User?
Нигде не хранится.
Смотри, ассоциация между user и team подразумевает, что user знает про team и наоборот.
Если тебе не нравится, что team знает про user, то нарисуй стрелку на конце ассоциации, показав тем самым направление возможной навигации.
Реализовывается ассоциация например с помощью ссылок или указателей. Т.е. в твоем случае в классе User будет член класса - например, map объектов типа team.
О чем, говорит квалификатор? что если у тебя имеется Объект типа user (а в нем естественно заполненный массив с team), то зная ключ (квалификатор), ты быстро найдешь или не найдешь нужную тебе команду (команды).
Ключ при этом НЕ хранится в User. Он  приходит извне.

>Как с точки зрения программиста читать диаграмму, чтобы реализовать классы User и Team?
см. выше. Но вообще ты занимаешься проектированием, а не реализацией.
Обычно программисту одной статики (диаграммы классов) мало. Нужна динамика. Например, диаграммы последовательности, на которых ты опишешь основные варианты использования данных классов. МОжешь представить их в виде коопераций, если захочется.




437
А. Квалификатор применяется для того чтобы показать что у нас есть один экземпляр нашей ассоциации м\у объектами. Более подробно см. http://www.xpdian.biz/UML2changes.html
Не верно.
Во-первых по ссылке ни о каких квалификаторах (qualifier) речи нет.
Там показаны именованные коннекторы.
Во-вторых, квалификаторы применяются для снижения кратности на полюсе ассоциации.

Б. Диаграмма объектов применяется, чтобы показать конкретное состояние объекта некоторого класса. Т.е. есть конкретный Юзер - Вася и он является либо владельцем, либо игроком команды. Поэтому надо сначала правильно нарисовать Диаграмму Классов, а потом уже нарисовать конкретное состояние Объектов, скорее всего двумя Диаграммами Объектов (либо владелец, либо игрок) с квалификаторами.

Диаграмма объектов НЕ применяется, чтобы показать конкретное состояние объекта некоторого класса.
Состояние показывается на диаграмме автоматов (терминология UML2).

>Т.е. есть конкретный Юзер - Вася и он является либо владельцем, либо игроком команды.
В постановки задачи не сказано либо-либо.

>Поэтому надо сначала правильно нарисовать Диаграмму Классов, а потом уже нарисовать конкретное состояние Объектов, скорее всего двумя Диаграммами Объектов (либо владелец, либо игрок) с квалификаторами.

Еще раз. Квалификаторы НЕ используются на диаграмме объектов.

Квалификаторы применяются на диаграммах классов, а не на диаграммах объектов. Диаграмма объектов служит другим целям.

438
Можете черкнуть как давно вы знакомы/работаете с UML?
Давно. Я провожу тренинги по UML.


1. Почему "Owner" у вас написано рядом с изображением класса юзер? Или это "стереотип" использования связи, который говорит, что в этой связи User выступает владельцем для Team. да?

Owner - это роль. Как и Player. Из условия задачи видно, что User может быть по отношению к команде как игроком (player), так и владельцем (owner)

2. Из нижней диаграммы не видно того факта, что у User'а может быть несколько Team'ов. Может на правой части нижней связи нижней диаграммы нужно показать "0..*"?

На верхней диаграмме я нарисовал * у ассоциации с ролью Player. "*" = "0..*"
На нижней диаграмме квалификатор позволяет снизить кратность (для этого он и нужен!).
Тут я не прав и если у пользователя несколько команд, то надо действительно писать "*", а не "0..1", как я написал. Просто обычно id нужен для уникальной идентификации...


3. Смысл верхней ассоциации на обоих диаграммах для меня вообще непонятен. И при том, что эти ассоциации ещё и отличаются принципиальным образом. На верхней диаграмме возле Team указано "*", тогда как на нижней - "0..1".

см. ответ на 1. Две ассоциации - так как две роли.
По поводу кратности на нижней диаграмме. Квалификатор нужен, чтобы показать, что существует способ снизить эту кратность.

4. Что такое "Player" в контексте ваших диаграмм?
Роль, которую ты описал в задаче (игрок).

5. Что такое квалификатор "Id", как его нужно читать?
Это значит, что в классе, на другом конце ассоциации (team) есть поле id, зная значение которого можно снизить кратность на полюсе ассоциации.

439
Но у меня возникает вопрос. На картинке показано, что объект user УЖЕ знает, что существует объект team... ??? т.е. фактически я имею только Id команды, но на UML-диаграмме должен нарисовать, что у меня уже есть этот объект team... верно?
Вопрос не понял.


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



Страницы: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30