2012-04-02 13 views
4

学校の割り当てのために、生徒と学部生を含むバイナリフラットファイルデータベースを作成して管理するC++プログラムを作成する必要があります。学部生は基本的に通常の学生と同じですが、いくつかのフィールドが追加されています。与えられたヒントはテンプレートを使用できることです。データベースのための最高のOOPデザイン

私の問題はこのデザインを構成することです。私は、次のことを試してみた:

  • それを継承し、フィールドの複数の変数を追加studentstring変数とundergradクラスを含むPersonクラスを作成します。これは動作しますが、それは、後の人々のより多くの種類を追加することが非常に困難となるので、私が試した:
  • UndergradStudent継承からmap<string, string>が含まれているPersonクラス、およびそれらが付加されたvector<Person>を含むdatabaseクラスを作成します。 Person::map<string, string>では、名前、住所などの異なるフィールドとその値を追加しました。

私はこれで正しい方法をとっているかどうかはわかりません。このようなものに使用される標準的なデザインパターンはありますか?

+5

投票者を閉じる、あなたは何を考えていたのですか? – GolezTrol

+0

@ゴレッツ - さあ、 "データベースのための最高のデザインは何ですか?" –

+0

@BoPerssonこれは単なる明らかな答えでの質問ではないことは分かっていますが、最初の解決策でコースを終わらせるのではなく、コミュニティからのインプットを求めれば、この課題からもっと多くを学ぶことができると思います。振り返ってみると、より良いタイトルを選ぶことができました。 –

答えて

2

正しいアプローチは、システムに必要なものによります。最初のアプローチは、システムがあなたが列挙した要件に特化し、より良い実行時のパフォーマンスが必要な場合、より標準的なC++アーキテクチャーです。

マップ方法では、より一般化されたアプローチを実装できますが、明快さ、専門のアクセサーなどを犠牲にして、ではなく、先生が求めているアプローチを推測しています。

システムのすべての要件(どのような種類のクエリが作成され、どのようなサポートが期待されているかなど)を知っていれば、決定に役立つはずですので、そのことを明確にする必要があります。

幸運を祈る!

2

"継承"のクラス階層には注意してください。たいていの場合、「Liskov Substitution Principle」がある場合にのみ導出されます。すなわち、「人物」というオブジェクトを取得して、その実際のタイプを知らなくても関数を呼び出すことができます。

リスコフは女性で、80年代前半にこの原則を公表したことに注意してください。

関連する問題