ОО дизайн вопрос - PullRequest
       3

ОО дизайн вопрос

0 голосов
/ 12 декабря 2010

Как мне создать дискуссионный форум ОО. Какие классы и функции будут у него. Спасибо!

  Class User 
    {
     $name;
     $useid;
    $fname;
    $lname;
    Topic createTopic() ;
    postMessage(Topic topic_id);
    login ($userid)
    logout($userid)

    }

    Class Adminuser extends User
    {
       CreateForum()
    }

    Class Normaluser extends User
    {

    }

    Class Forum
    {
     Topic[]  topic_objs;
    $forum_id;
    $forum_name;
    $forum_desc;
    getAllTopics();
    }


    Class Topic
    {
    $topic_id;
    $topic_name;
    $topic_desc
    Replies[] reply_objs ;
    getAllMessages() ;

    }

    Class Replies
    {
       Topic topic_obj;
       $content ;
      }
    Class Site 
   {
     Users[] users_obj;
     Forum[] forums_obj;
   getUsersList();
   getForumsList();

   }

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

Ответы [ 3 ]

3 голосов
/ 12 декабря 2010

Давайте начнем со сценария.

Пользователь форума Джо смотрит на сайт

Джо вводит URL для форума на его браузер.

Джо входит в форум. Он выбирает возможность войти в систему автоматически в следующий раз

Джо видит список своих форумов, сгруппированных на категории, с названиями и краткое описание.

Другие форумы существуют, но он не может видеть те.

Форумы, содержащие новые темы или новые ответы на темы с тех пор, как Джо последний раз просмотренные форумы подсвечиваются.

Джо просматривает один из форумов с активность с момента его последнего посещения. Он видит список тем, в порядке последнее действие (либо дата создания новая тема или дата последнего ответа).

Темы изменены с момента последнего просмотра Джо они выделены.

Джо рассматривает несколько тем, которые имеют изменился с момента его последнего визита. тема и любые ответы перечислены в порядок создания (не модификации - темы и ответы можно редактировать, но это не меняет порядок)

Темы имеют тему, теги, имя автора, дата создания и Последнее редактирование и тело. Джо показано все это, кроме даты последнего редактирования отображается, только если он отличается от дата создания. Ответы есть только имя автора, дата создания и дата последнего редактирования. Опять же, последнее редактирование дата показывается, только если она не совпадает с датой создания.

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

Джо возвращается к статье и делает ответ на один из других ответов. Тело этого ответа включено, цитируется с указанием автора в окно редактора для его ответа. Он удаляет часть тела и добавляет его собственный ответ. Он выбирает «Отправить» и является вернулся к теме.

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

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

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

Я бы посоветовал сначала сосредоточиться на идентификации ключевых объектов и операций домена, поскольку это позволяет отложить принятие решений. Например, вам понадобится операция «Тема изменена с момента последнего посещения пользователя», но вам еще не нужно решать, знают ли темы, какие пользователи посещали когда, или пользователи знают, когда какие темы были просмотрены. Действительно, если ваш высокоуровневый дизайн интерфейса определяет только операцию, то какая вы используете, может быть деталью реализации и может быть изменена в любой момент, не затрагивая многое другое.

Если ваш вопрос вытекает из формулировки задания, обратите внимание, что вы сказали

"Какие классы и функции это будет иметь. «

. Не то, какие поля будут у классов, хотя это в основном то, что охватывает ваш код в вопросе. Итак, задание спрашивает вас о том, какие ключевые объекты, каких типов и что нужно с ними сделать

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

0 голосов
/ 12 декабря 2010

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

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

Кроме того, ваши Topics и Forums должны быть в отношениях "многие к одному", если вы хотите, чтобы форумы содержали Topics.Опять же, я не уверен насчет ваших вариантов использования, но одно предложение - дать каждому форуму список подфорумов (я имею в виду Forum[] subforums) и необязательную ссылку на более высокий форум.чтобы вы могли организовать свои форумы иерархически.

0 голосов
/ 12 декабря 2010

Да, я бы порекомендовал вам добавить некоторые отношения к этим объектам.Я ожидал, что у Форума будут коллекции пользователей и тем, потому что только один из них не будет интересным.

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