2010-12-12 9 views
0

オブジェクト指向のディスカッションフォーラムはどのように設計するのですか?どのようなクラスと機能がありますか。 ありがとう!オブジェクト指向設計の質問

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(); 

    } 

私はデザインを改善して完成させるためにいくつかのアイデアを提案できます。

+0

がどこでありますトピックのメッセージのクラス?...またはトピッククラスに配列がありますか? –

+1

これは氷山の一角でもありません。あなたは本質的にあなたにアーチを書こうと依頼していますitecture(!?)起こらないだろう。 –

+0

明らかに割り当て。ユースケースは何ですか? (コードを議論するのはとても良いことだが、ユーザーにとって何が必要なのか分からなければ、多くの助けにならないだろう)。 –

答えて

3

シナリオから始めましょう。

フォーラムユーザジョーはジョーが 彼のブラウザ上でのフォーラムのためのURLを入力し、サイト

に見えます。

Joeはフォーラムにログインします。彼は 自動的 にログインするためのオプション次回

ジョーは彼のフォーラムのリストを見てを選択し、タイトルや 簡単な説明と、カテゴリに をグループ化。

他のフォーラムは存在しますが、彼はそれらを見ることができません 。

新しいトピックが含まれているフォーラム、または さんから最後にトピックに返信しました。 フォーラムが表示されます。

Joeは最後に訪問してから というアクティビティを持つフォーラムの1つを表示します。彼は の最後のアクティビティ( の作成日か最後の返信日)のいずれかの順番で、トピックのリストを表示します。

Joeが最後に閲覧した以降に変更されたトピックが で強調表示されます。

Joeは前回の訪問から が変更されたトピックをいくつか見ています。 トピックと何らかの応答が作成 順序(ない修正 - トピックと返信が編集したが、順序を変更しない することができます)に記載されてい

トピックは、件名行、タグ、 著者を持っています名前、作成日、最後に編集した 、および本文。 Joeは最終編集日を除いて と表示されています。 は、作成日が と異なる場合にのみ表示されます。返信は著者名、作成日、 最終編集日のちょうど です。再び、最後の編集 の日付は、作成日と同じ でない場合にのみ表示されます。

Joeは の記事のリストを再訪します。今回は、 の記事は が強調表示されなくなりましたが、他の記事 は彼の訪問時に変更されたため、 はまだ読まれていません。

Joeは記事を再訪し、他の返信の1つに の返信を行います。返信の 本文には、 が含まれており、返信用の エディタウィンドウには、投稿者の属性が引用されています。彼は 体のいくつかを削除し、彼の 自身の応答を追加します。彼は "Send"を選択し、 がトピックに返されました。彼は彼が編集している間に、別の回答が が追加されたことを警告し です

は、彼がまだ ポストに望んで確認するよう要請しました。彼は確認し、 に返信されます。返信は の最後に表示されます。彼はフォーラムに戻ります。 変更されたのは でしたので、追加したトピックは ではありません。

ここでは、これは考慮するよりも多くの機能性があります。しかし、あなたがそれをサポートしたいのであれば、あなたのデザインに影響を与えます(明らかに)。私のポイントは、設計が適切であるかどうか、または欠落しているかどうか、実装が困難になるかどうかを判断するために、ユースケース、サポートされる機能を判断する必要があることです。

上記のシナリオから、いくつかのユースケースを引き出すことができます。ユーザー、フォーラム、トピック、返信だけでなく、それらの属性のいくつか(最後に変更された日付)および操作(カテゴリ別のフォーラムのリスト、日付ごとのフォーラムごとのトピックのリスト注文など)。

まず、重要なドメインオブジェクトと操作を識別することに集中し、決定を延期できるようにすることをお勧めします。たとえば、「前回のユーザーからの訪問以降にトピックが変更されました」という操作が必要ですが、どのユーザーがいつどのトピックを訪問したのか、ユーザーがいつどのトピックを知っているのかを判断する必要はありません。実際、あなたの高水準/インターフェースデザインが操作のみを指定している場合、どちらを使用するかは実装の詳細になり、他の多くの部分に影響を与えることなくいつでも変更できます。

、割り当ての文言から派生あなたの質問を想定すると、あなたは

を言っ注意「それ は何のクラスや関数を持つことになります。"

。このクラスは、ほとんどの場合、あなたのコードでカバーされていますが、キーオブジェクトの種類、タイプ、必要なものについて質問しています私は時間を取得した場合、それらを使って行うこと

、私は戻ってきてもBraindumpのいくつかの設計思想が、(私は仮定していて、これは割り当てである)あなたは物事を通じ思った場合、それが良いだろう。

+0

こんにちはポール、このような詳細で説明する時間をとってくれてありがとう。私はユースケース 1)\t通常のユーザーは\t管理者がフォーラムを作成することができます)2)\t通常のユーザーが回答 3を投稿することができます をcreateTopicすることができますを実装したいと思い、いくつかのユースケースを作った 4)フォーラム 5のリストにアクセスすることができます\tユーザー) \tユーザーはトピックのリストにアクセスできます 6)\tユーザーはログインできます。ログアウト 私が今作成したクラスを見て、それらにコメントしますか?私は質問自体を修正しました – Vidya

+0

また私の質問は、トピックとフォーラムのリスト – Vidya

+0

コメント(仕事の日は今日:)のために今は時間がありませんが、私はユーザーとフォーラムのリストを持つSiteクラスを提案します。トピックのリストは、フォーラムオブジェクト –

0

はい、これらのオブジェクトにいくつかの関係を追加することをお勧めします。私はForumがユーザーとトピックのコレクションを持つことを期待していたでしょう。それぞれのトピックのうちの1つだけが面白くないからです。

0

私が考える最初のことは、用途になると思います。どのような機能をサポートしますか?その後、あなたがしたいクラスについて考えることができます。

一見すると、メッセージはどのように来るのかはオブジェクトではありません。オブジェクトであれば操作が簡単です(例えば、削除や隠蔽はよりエレガントになります)。しかし、私はあなたのユースケースを知らないので、私はそれがどのように動作するのか分かりません。

TopicsForumsは、フォーラムにTopicsを含める場合は、多対1の関係にする必要があります。再びあなたのユースケースについてはわかりませんが、各フォーラムにサブフォーラムのリスト(私はForum[] subforumsを意味します)と、より高いフォーラムへのオプションのリンクを与えることを提案します。フォーラムを階層的に編成することができます。

関連する問題