-1

重複の可能性:
SOに触発されたリレーショナルUML図

私は宿題をポストから開発しました。

問題:最初の投稿が質問であり、他の投稿が質問の後の返信になるように、SOと同様に投稿を行うこと。

質問:インターフェースをどのように改善しますか?より単純なデータ構造で物事が簡単になりますか?

4

1 に答える 1

2

あなたの最初の質問は私を混乱させます。UML はオブジェクトを思い起こさせ、「Posts-table」はリレーショナル データベースを思い起こさせます。どっちのことですか?オブジェクトが必要だと仮定します。

質問と回答の両方を表すインターフェースまたは抽象化が必要です。おそらくそれが Post インターフェースです。テキストや作成者などの属性と、投稿時のタイムスタンプが含まれます。

質問が回答の前に来ることはないため、Post インスタンスのコレクションがある場合は、タイムスタンプで並べ替えると適切な順序になります。

更新: UML はオブジェクト指向プログラミングを意味します。Python はオブジェクト指向言語であり、関数型言語でもあります。つまり、最初にオブジェクトの観点から問題を考えるということです。

オブジェクトの観点から考えるということは、ユーザー インターフェイスとデータベースに関する懸念を脇に置くことを意味します。必要な種類の動作を提供するようにオブジェクトを設計します。最初は単純なテキスト インターフェイスを使用できます。オブジェクトのシリアル化は永続化のために行います。ただし、最初にオブジェクトを正しく取得してください。

「インターフェース」というとJavaインターフェースを思い浮かべます。クラスの署名を宣言しますが、実装については何も言いません。したがって、Post インターフェースには質問と回答の実装が含まれる場合があります。

すべての Post インスタンスを含むものは? それらを所有しているのは何ですか?投稿のコレクションを所有するために、KnowledgeExchange という別のオブジェクトが必要です。すべての実装の詳細を非表示にし、getQuestion および getAnswers へのメソッドを提供します。これらすべての詳細や、スタックまたはリストとして実装するかどうかさえも、クライアントに強制しないでください。

私が言ったように、まだテーブルや永続性について心配する必要はありません。オブジェクトについて考えてみましょう。Post、Question、Answer だけでなく、オブジェクトの観点から問題全体を作成することをお勧めします。

于 2009-07-25T11:49:41.693 に答える