2013-03-12 10 views
0

我有我的主要代碼設置爲一個項目與其他兩個項目(精簡版和專業版)引用它。從庫重寫方法到不同的項目

這就是我想要的Quiz類尋找精簡版:

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

這就是我想要的Quiz類尋找親:

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

要做到這一點,我需要設置類Quiz在庫中進行抽象,然後定義它們,但是我想在lite和pro項目中使用?或者我應該將庫定義爲上面的第一個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")); 
} 
+0

代碼不是很清楚。 「公衆測驗{」實際上是指構造函數嗎? (公共測驗(){),你正在初始化該構造函數中的不同對象? – bschandramohan 2013-03-12 17:54:57

+1

我在實際代碼的片段中添加以幫助澄清。在實際的'''Quiz''''類中,大約有500個'''Question''''對象。 – Matt 2013-03-12 17:58:51

回答

2

假設你是指構造的問題是不明確

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

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

您可以在其他圖書館Pro延長Quiz,然後提供更加專業化實現,它是有道理的你圖書館。這就是爲什麼專業化在OOP中可用的原因,所以你可以擴展父類功能並提供一些額外的行爲(在你的情況下,在arraylist中添加更多元素)。

UPDATE: 的片段看您正在使用的構造函數添加問題,這將是一個不好的地方做。

您應該提供類似addQuestion(...), removeQuestion(...), clearQuestions(...)的方法。這些會更有意義。

+0

所以,如果我理解正確,我可以在我的庫中定義''''Quiz'''類,我希望我的lite版本看起來像樣,然後在我的專業版中我可以擴展''''Quiz'' '',調用''''super()''''並添加更多的對象。這樣我的lite項目不需要添加任何東西。這聽起來是對的嗎?我會整合並報告結果。 – Matt 2013-03-12 18:07:32

+0

是的,這似乎是正確的。你的問題並不完全清楚,所以不得不承擔一些細節。但是這似乎是正確的。 – 2013-03-12 18:09:06

+0

downvoter care to comment? – 2013-03-12 18:21:35

1

同意Narendra的答案,它應該工作。不過,我猜想下面的設計應該足夠了。 {再次取決於最終產品的實際需求}

測驗類與數組列表定義一起存儲數據,但在構造函數中沒有初始化。它提供了添加一堆問題的方法。

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

我將在客戶端類的精簡版和專業正如構件初始化或提供一種創建這些2類型的對象,並返回它QuizHelper類。

相關問題