2011-09-14 107 views
2

我正在嘗試開發一個調查應用程序,它可以處理各種類型的響應,如布爾值,多項選擇以及範圍從1-5,1- 10,1-100,-2到+2,甚至十進制值。所以,我創建響應類型的層次結構:定義分層數據的結構與實際存儲數據

class Response { 
     String name 
} 

class BooleanResponse extends Response { 
     boolean score 
} 

class SimpleGradeResponse extends Response { 
     char score // A-F 
} 

class ComplexGradeResponse extends Response { 
     char score // A-F 
     char modifier // +, -, blank 
} 

class IntegerResponse extends Response { 
     int min, max, score 
} 

class DecimalResponse extends Response { 
     double min, max, score 
} 

我認爲,作爲元數據。它描述了調查響應類型。你可能會有問題1是從1到10的IntegerResponse,問題2是從0-100的IntegerResponse,問題3是DecimalResponse等。

我不確定的地方是存儲用戶的實際響應的地方。您是否將分數與元數據混合在一起,就像我在上面的分數字段中所做的那樣?這似乎很尷尬,因爲每個範圍類型的響應都帶有最小值和最大值。

我真正想要的(我認爲)是能夠咖喱範圍響應參數來創建一個新類型,然後在實際響應表中反映該類型。因此,一個1-10範圍的問題將成爲IntegerResponse中的一行,min = 1,max = 10。但是,ActualResponse表(我需要改進命名約定,一旦我找到了!)持有一個分數,並用min和max集引用Curried IntegerResponse?

如果有更好的方法來解決這個問題,我很想聽到它。

感謝, 李

+0

聽起來像我這樣的問題是不是Grails或Groovy相關,但更多的領域是在領域建模和麪向對象的設計領域... –

回答

0
  1. minmax而應被存儲在一個Question對象,甚至在QuestionType - 取決於系統如何靈活的在運行時。
  2. 對不同種類的Response s會有任意的限制嗎?數據結構非常依賴於它。您可以硬編碼不同的Response類型或在運行時支持它們。第一種方法更簡單一個數量級。
+0

謝謝,維克多。我試圖理解你的帖子,但我不確定我是否明白。問題與迴應之間的關係是什麼?你如何強制某個特定的回答屬於某個問題類型?關於你的第2項,我認爲硬編碼響應類型是可以的,但我不太明白如何簡化事情。這不僅僅是一個恆定最小/最大值問題,而是最小/最大成員變量?或者你是指比我的例子更復雜的東西?我很抱歉地說你可能不得不用勺子餵我。 :-)非常感謝您的回覆。 – greymatter

+0

也許我心中有一個非常不同的調查結構。您能否提供一些您正在考慮的問題樣本? –