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


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

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

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

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

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

1 2

1 ответ:

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

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

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

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

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