Диаграмма классов UML для простого веб-портала [закрыта]

Я хочу спросить вас о моей диаграмме классов. Я делаю диаграмму классов для простого веб-портала для учебы в университете на выходных. Правильно ли он сделан? Что бы ты изменил, если бы я был моим? Варианты использования вы можете найти здесь диаграмма классов из диаграммы вариантов использования.

Должен ли я создавать каждый пользовательский класс отдельно? Я имею в виду класс администратора, класс редактора, класс модератора и т. д. Я использовал поле привилегий (см. Класс пользователя) для имитации роли каждого пользователя. Это правильно?

Я предполагаю, что класс ContentManager содержит экземпляр класса User и используется внутри класса Article, Announcement, Advertisement и Comment, чтобы проверить, разрешены ли эти действия.

введите здесь описание изображения

Буду очень рад вашим ответам. Здесь вы можете найти файл XML для программы WhiteStarUML мой файл XML


person Jarmark    schedule 04.03.2016    source источник
comment
Пожалуйста, переместите диаграмму классов сюда.   -  person Jim L.    schedule 04.03.2016
comment
Я вставил его выше, но stackoverflow требует не менее 10 очков репутации для публикации и показа изображений. Я бы попросил вас нажать на ссылку.   -  person Jarmark    schedule 04.03.2016
comment
Я отредактировал это для вас.   -  person Jim L.    schedule 04.03.2016
comment
Нп. Где я могу это сделать? Я сделал это в прошлой теме о вариантах использования.   -  person Jarmark    schedule 04.03.2016
comment
Я с нетерпением жду вашего ответа о диаграммах классов.   -  person Jarmark    schedule 04.03.2016


Ответы (1)


Что вам нужно сделать, так это создать аналитическую модель вашего домена. Эта модель будет содержать такие классы, как Article, Announcement и т. д., как показано на вашей текущей диаграмме. Например, см. другой ответ, который я недавно опубликовал на чужой вопрос. Диаграмма для этого ответа снова показана здесь для вашего удобства:

введите здесь описание изображения

Обратите внимание, что модель, которую я предоставил в этом ответе, не имеет ничего общего с UserManager или ContentManager, которая просто содержит код для управления другими классами. Вы не хотите этого, если люди на самом деле не играют эти роли. Обратите внимание, что в конце каждой ассоциации есть глагольные фразы и кратности, чтобы сказать вам, почему вещи связаны. Обратите внимание, что в этих классах нет обычных операций CRUD, таких как создание, обновление и удаление.

Когда у вас есть модель анализа, вы должны распределить действия по соответствующим классам, которые обычно будут отражать ваши варианты использования. Например, ваш класс Comment может иметь операцию edit(). Но может и нет. Вы можете подумать о том, чтобы иметь операцию с именем replaceComment() в классе Article (если так работает ваш домен). Я не знаю, как должен работать ваш домен, потому что вам не хватает модели анализа, которая меня этому учит!

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

person Jim L.    schedule 04.03.2016
comment
Это только пример. Мне сложно представить, как должна выглядеть моя диаграмма классов. Не могли бы вы сделать рисунок, который поможет мне понять мою диаграмму классов? Я имею в виду использование имен классов, которые я использовал в предыдущем посте. - person Jarmark; 05.03.2016
comment
Я ничего не знаю о вашем домене. Можете ли вы перечислить некоторые факты, например те, что указаны в первом наборе пунктов в этом ответе? stackoverflow.com/a/29462410/2596664 - person Jim L.; 05.03.2016
comment
Некоторые догадки: Автор пишет много Статей, Статья содержит одно или несколько Рекламных объявлений, Читатель оставляет любое количество Комментариев, Комментарий аннотирует одну статью, ... - person Jim L.; 05.03.2016
comment
Человек играет роль, Автор - разновидность Роли, Читатель - разновидность Роли, ... (своего рода специализация/обобщение) - person Jim L.; 05.03.2016
comment
Незарегистрированный пользователь может просматривать статьи, комментарии, рекламу и объявления. Незарегистрированный пользователь может зарегистрироваться и войти в систему. Вошедший пользователь может выйти из системы, может оставить комментарий (или несколько комментариев), отредактировать, удалить его и т. д. Я думал, что примеры использования могут все хорошо объяснить. Я прав? Зарегистрированный пользователь может сбросить или изменить свой пароль и т. д. - person Jarmark; 05.03.2016
comment
Я бы перефразировал это так: когда читатель читает статью, идентифицированный читатель удаляет ноль или более комментариев. Забудьте о входе и выходе и смене паролей. Что, если для идентификации достаточно RFID-чипа в моей руке? Там нет входа, выхода или смены паролей. В модели анализа вы моделируете проблему, а не свое решение. Это одна из причин, по которой все говорят не моделировать вариант использования входа в систему. - person Jim L.; 05.03.2016
comment
Например. Должен ли я создать класс Reader с такими методами, как showArticle(), showAdvert() и т. д.? Я действительно извиняюсь за мои вопросы. Наш учитель плохо объяснил. - person Jarmark; 05.03.2016
comment
Забудьте об операциях, пока не сделаете анализ модели. Вы запутались, не разделяя проблемы. - person Jim L.; 05.03.2016
comment
У каждого актера есть свой отдельный класс? - person Jarmark; 05.03.2016
comment
В модели анализа человек может играть роли. Эти роли обычно являются действующими лицами в модели вариантов использования. Но не все роли взаимодействуют с системой. Например, ребенок в страховой форме, вероятно, не взаимодействует с системой. - person Jim L.; 05.03.2016
comment
Я предлагаю вам попробовать создать модель анализа, а затем запросить отзыв о ней в еще одном вопросе. - person Jim L.; 05.03.2016
comment
Итак, мои роли: Читатель (читает сайт), Комментатор (комментирует статьи), Администратор (управляет пользователями), Редактор (публикация статей), Модератор (управляет комментариями) и Рекламодатель (управляет рекламой). - person Jarmark; 05.03.2016
comment
Я не думаю, что Читатель читает Сайт. Возможно, читатель посетит сайт. В любом случае, попробуйте создать модель в UML. - person Jim L.; 05.03.2016