2012-04-24 15 views
0

OOPの練習では、私はホビープロジェクト、txtファイルからテーブルを読み、テーブルのエントリについての質問をするクイズプログラムに取り組んでいます。アイデアは、私たちの学科の課程に与えられた教材の学習を容易にすることです。OOPのデザイン - 作成戦略/パターン

今まで私はI/Oビットを書いて、きわめて控えめなGUIと、データテーブル内のさまざまな種類のエンティティを表すクラスをまとめました。私はプログラムの中核をどのように進めるかについてはわかりませんが、質問の生成と検証を意味します。

私の最初のアイデアは、質問が何であるか、どのフィールド(文字列表現、回答、難易度)があるかを定義するクラスAbstractQuestionを持つことでした。次に、さまざまな種類の質問のクラスを書くことができると考えました。たとえば、単純な値の問い合わせ(エンティティ名の指定や特定のプロパティの質問など)、複雑な質問の別のクラス(たとえば、エンティティなど)。

しかし、これが最善の方法かどうかはわかりません。なぜ本当に理由を表明することはできませんが、私はこれが最善の方法ではないと感じています。 Factoryクラスで作業するのは理にかなっていますか?基本的に私が行う必要があります。

  • はランダムな質問のDataTableの
  • 異なる種類から選んだエンティティは、入力に基づいて、実行時に作成する必要がある、1、またはそれ以上に基づいて生成される質問のための手段を提供しますユーザーからの質問(希望難易度)
  • 質問を検証する必要があり、ユーザーはQuizクラスの主催者からの通知を受ける必要があります(質問にアクセスできる必要があります)。

私はシンプル始めることができ、それは仕事や時間に新しい機能を追加するために取得するには、質問の一種類のみを実装するが、私はそれがOOPの私の理解を改善することをお勧めだし、それが動作するかどうか、私は怖い以外だと思います私はそれをテストする人々のためにそれを与えることを始めます、私は結局何かに取り組むでしょう。私は自分のプロジェクトをよりよく概念化できるようにしたいと思っています。これはそれを改善する良い機会になると思います。

PS:それは明らかではなかった場合、私は学歴によってプログラマではないよ:)

答えて

1

私はシンプルなクイズのアプリケーションをプロダクションで実行しています=)さまざまなタイプの質問があります。 yは異なる方法で質問され、回答され、ヒントされるべきである)。質問にはさまざまな複雑さがあります。

私の状況では、最も適切な解決策は、いくつかの抽象メソッド(それはインターフェイスでもあります)と異なる実装でスーパークラスを作成することでした。そして、いくつかの入力リターンの異なる実装に基づいて、QuestionGenerator(工場として動作する)、ファクトリがありました。

あなたの質問のインターフェイス(共通部分)について考えて、工場パターンを使用してください。 AbstractFactoryまたはBuilderのパターンを使用することの利点を見つけることができる、より複雑なシナリオが存在する可能性があります。

私の単純なケースでは、抽出インターフェイスは十分でした

2

あなたは、特定のパラメータに基づいて質問を作成する方法を知っているファクトリを作成するためにAbstract Factoryを使用することができます。
通知についてはObserver Patternを使用できます。それらを研究し、

2

は二つの面で考えて自分の好みの言語での例を参照してください。使用質問オブジェクトをオブジェクト何

  1. ?何が必要なのですか?それは質問のインターフェースについて話しています。
  2. 質問はこれらのことをどのように行うのですか?質問の行動。

最初は、インターフェイスについてのみ考えてください。私は質問が必要なことを明確にしていません。答えは自由形式のテキストで、「AからDのうちの1つを選ぶ」という質問と、「AからDのうちの1つ以上を選ぶ」という質問はUIで非常に異なったものになるだろうと私には思えます。だからあなたは「質問:あなた自身を表示して、あなたの答えを得て、あなたに私のスコアを教えてください」または「質問:あなたのテキストは何ですか?質問:どのような答えを取るのですか?質問:あなたの4つの選択肢は何ですか?質問:ユーザーが「何を得たか」を入力しました。

質問の責任の明確さが分かれば、適切な数の異なるQuestionインターフェイスとクラスを検討し、こうした工場として生成に関するパターンを必要とするすべての同じインタフェースを実装する別のクラスの数を持っている場合は、出荷時にはうまく機能

工場:。。。私の質問作りに行く質問:ユーザーを行くと尋ねる

関連する問題