0

メインコードをプロジェクトとして設定し、他の2つのプロジェクト(liteとpro)がそれを参照しています。

これが私がQuizクラスにライトを探す方法です:

class Quiz {
    public Quiz {
        object1();
        object2();
        object3();
        object4();
    }
}

これは私がQuizクラスにプロを探す方法です:

class Quiz {
    public Quiz {
        object1();
        object2();
        object3();
        object4();
        object5();
        object6();
        object7();
        object8();
    }
}

これを実現するにQuizは、ライブラリでクラスを抽象化するように設定してから、それらを定義する必要がありますが、ライトプロジェクトとプロプロジェクトでは定義しますか?または、ライブラリをQuiz上記の最初の例として定義してから、プロバージョンで何らかの方法で上書きしてみる必要がありますか?

編集

以下のコメントに基づいて、実際のコードのスニペットを次に示します。

public class Quiz {

    ArrayList<Question> exodus = new ArrayList<Question>(200);

    public Quiz() {

        exodus.add(new Question("Aaron", "Abraham", "Jacob", "Joseph", 0, "What was the name of Moses' brother?", -1, "Exodus 7:1-2"));
        exodus.add(new Question("5", "10", "7", "12", 1, "How many plagues did God send on Egypt?", -1, "Exodus 7-12"));
        exodus.add(new Question("Pharaoh's maid", "Pharaoh's wife", "Pharaoh's daughter", "Pharaoh's mother", 2, "Who found baby Moses in a basket along the riverside of the Nile river?", -1, "Exodus 2:3-5"));
        exodus.add(new Question("Hail", "Frogs", "Boils", "Flies", 1, "What was the 2nd plague?", -1, "Exodus 8:2"));
        exodus.add(new Question("Darkness for 3 days", "All water turns to blood", "Boils", "Flies", 3, "What was the 4th plague?", -1, "Exodus 8:24"));
        exodus.add(new Question("Frogs", "Boils", "Hail", "Lice", 1, "What was the 6th plague?", -1, "Exodus 9:10"));
        exodus.add(new Question("Boils", "All livestock dies", "Lice", "Locusts", 3, "What was the 8th plague?", -1, "Exodus 10:14"));
        exodus.add(new Question("Darkness for 3 days", "Death of firstborn", "All water turns to blood", "All livestock dies", 1, "What was the 10th plague?", -1, "Exodus 12:29"));
}
4

2 に答える 2

2

質問が明確でないため、コンストラクターを参照していると仮定します

class Quiz {
    public Quiz (){
        object1();
        object2();
        object3();
        object4();
    }
}

class QuizForPro extends Quiz{
    public QuizForPro() {
        super();
        object5();
        object6();
        object7();
        object8();
    }
}

Quiz他のライブラリでを拡張してから、ライブラリにとって意味のある、より特殊なPro実装を提供できます。これが、OOPで特殊化が利用できる理由です。これにより、親クラスの機能を拡張し、いくつかの追加の動作を提供できます(この場合、arraylistに要素を追加します)。

更新: コンストラクターを使用して質問を追加しているスニペットを見ると、これは不適切な場所です。

のようなメソッドを提供する必要がありますaddQuestion(...), removeQuestion(...), clearQuestions(...)。これらはここでより意味があります。

于 2013-03-12T17:57:43.477 に答える
1

ナレンドラの答えに同意すると、うまくいくはずです。ただし、以下のデザインで十分だと思います。{最終製品の実際の要件によって異なります}

データを格納するための配列リスト定義を使用してクラスとしてクイズしますが、コンストラクターでの初期化は行いません。一連の質問を追加するメソッドを提供します。

public final class Quiz {
  ArrayList<Question> exodus = new ArrayList<Question>(200);
  public Quiz() { }
  public addQuestions(List<Question> questions) {
     // ... implementation here ... 
  }
}

クライアント クラスでメンバーの初期化と同じように lite と pro を使用するか、これら 2 種類のオブジェクトを作成して返す QuizHelper クラスを提供します。

于 2013-03-12T18:15:11.830 に答える