Давайте начнем со сценария.
Пользователь форума Джо смотрит на сайт
Джо вводит URL для форума на
его браузер.
Джо входит в форум. Он выбирает
возможность войти в систему
автоматически в следующий раз
Джо видит список своих форумов, сгруппированных
на категории, с названиями и
краткое описание.
Другие форумы существуют, но он не может видеть
те.
Форумы, содержащие новые темы или новые
ответы на темы с тех пор, как Джо последний раз
просмотренные форумы подсвечиваются.
Джо просматривает один из форумов с
активность с момента его последнего посещения. Он
видит список тем, в порядке
последнее действие (либо дата создания
новая тема или дата последнего ответа).
Темы изменены с момента последнего просмотра Джо
они выделены.
Джо рассматривает несколько тем, которые имеют
изменился с момента его последнего визита.
тема и любые ответы перечислены в
порядок создания (не модификации -
темы и ответы можно редактировать, но
это не меняет порядок)
Темы имеют тему, теги,
имя автора, дата создания и
Последнее редактирование и тело. Джо показано
все это, кроме даты последнего редактирования
отображается, только если он отличается от
дата создания. Ответы есть только
имя автора, дата создания и
дата последнего редактирования. Опять же, последнее редактирование
дата показывается, только если она не
совпадает с датой создания.
Джо возвращается к списку статей для
форум. На этот раз статьи он
больше не смотрел
выделены, но другие статьи
изменилось с момента его последнего визита, что он
еще не прочитал это.
Джо возвращается к статье и делает
ответ на один из других ответов.
Тело этого ответа включено,
цитируется с указанием автора в
окно редактора для его ответа. Он
удаляет часть тела и добавляет его
собственный ответ. Он выбирает «Отправить» и является
вернулся к теме.
Его предупреждают, что другой ответ
был добавлен в то время как он редактировал и
попросил подтвердить, что он все еще хочет
сообщение. Он подтверждает и возвращается
отображение темы с добавленным ответом
к концу. Он возвращается на форум.
Тема только что добавлена не
выделено, так как изменение было сделано
им.
Теперь, это может быть больше функциональности, чем вы хотите рассмотреть. Но если вы захотите его поддержать, это повлияет на ваш дизайн (очевидно). Моя точка зрения заключается в том, что вам нужно определить варианты использования, поддерживаемые функциональные возможности, чтобы сказать, является ли проект даже адекватным или отсутствует, или что будет трудно реализовать.
Из приведенного выше сценария мы можем извлечь некоторые варианты использования. Мы также можем определить, что необходимо включить в модель предметной области - пользователи, форумы, темы, ответы, а также некоторые из атрибутов - даты последнего изменения - и операции (список форумов по категориям, список тем по форуму за дату заказ и т. д.).
Я бы посоветовал сначала сосредоточиться на идентификации ключевых объектов и операций домена, поскольку это позволяет отложить принятие решений. Например, вам понадобится операция «Тема изменена с момента последнего посещения пользователя», но вам еще не нужно решать, знают ли темы, какие пользователи посещали когда, или пользователи знают, когда какие темы были просмотрены. Действительно, если ваш высокоуровневый дизайн интерфейса определяет только операцию, то какая вы используете, может быть деталью реализации и может быть изменена в любой момент, не затрагивая многое другое.
Если ваш вопрос вытекает из формулировки задания, обратите внимание, что вы сказали
"Какие классы и функции это будет
иметь. «
. Не то, какие поля будут у классов, хотя это в основном то, что охватывает ваш код в вопросе. Итак, задание спрашивает вас о том, какие ключевые объекты, каких типов и что нужно с ними сделать
Если у меня будет время, я могу вернуться и обсудить некоторые мысли о дизайне, но (поскольку я предполагаю, что это задание) было бы лучше, если бы вы все продумали.