SO からインスピレーションを得たリレーショナル UML 図のインターフェイス [重複]
-
19-09-2019 - |
質問
重複の可能性:
SO からインスピレーションを得たリレーショナル UML 図
私は宿題を作成しました ポスト.
問題: SO と同様に投稿を行い、最初の投稿が質問となり、他の投稿が質問の後の返信になるようにします。
質問: インターフェースをどのように改善しますか?データ構造がもっと単純であれば作業は簡単になるでしょうか?
解決
あなたの最初の質問は私を混乱させます。UML というとオブジェクトを思い出し、「Posts-table」というとリレーショナル データベースを思い出します。どちらのことを指しますか?オブジェクトが必要だと仮定します。
質問と回答の両方を表すインターフェイスまたは抽象化が必要です。おそらく、それが Post インターフェイスです。テキスト、作成者、投稿時のタイムスタンプなどの属性が含まれます。
質問が回答の前に来ることはないため、Post インスタンスのコレクションがある場合、タイムスタンプで並べ替えると正しい順序になります。
アップデート:UMLとはオブジェクト指向プログラミングのことです。Python はオブジェクト指向言語でもあり、関数型言語でもあります。つまり、最初にオブジェクトの観点から問題を考えることになります。
オブジェクトの観点から考えるということは、ユーザー インターフェイスとデータベースに関する懸念を脇に置くことを意味します。必要な種類の動作を提供するようにオブジェクトを設計します。最初は単純なテキスト インターフェイスを使用することができ、永続化のためにオブジェクトのシリアル化を行うことができます。ただし、最初にオブジェクトを正しく取得します。
「インターフェース」というと、Java インターフェースを思い浮かべます。これらはクラスの署名を宣言しますが、実装については何も述べません。そのため、Post インターフェイスには質問と回答の実装がある可能性があります。
すべての Post インスタンスは何に含まれていますか?何がそれらを所有しているのでしょうか?投稿のコレクションを所有するために、KnowledgeExchange という別のオブジェクトを用意します。すべての実装の詳細を非表示にし、getQuestion と getAnswers のメソッドを提供します。クライアントにこれらの詳細をすべて知らなければならないことや、それをスタックまたはリストとして実装するかどうかさえも知る必要があることを強制しないでください。
先ほども言いましたが、テーブルや永続性についてはまだ心配する必要はありません。オブジェクトについて考えてみましょう。投稿、質問、回答だけではなく、オブジェクトの観点から問題全体を作成するのが最善です。