2012-06-29 45 views
3

我正在處理這個問題。我正在創建數學問題,每個人都有迴應。例如。關聯,聚集和組合

  • 如果我的問題是關於「5x + 15 = 2的結果?」,我只會等待一個答案(如整數)。
  • 如果我的問題是關於說「給我這個形狀的區域和許可證」,我會等待兩個答案(作爲雙打)。
  • 在一個又一個,我會等待響應作爲一個字符串
  • 和anothers,我可以有幾個答案,或與各種數據類型的反應。

我的大問題是。

問題與回答之間的關係如何?此外,我正在處理,如果這應該是一個協會,聚合或組成。

謝謝。

編輯:好極了,它是一種成分。最後一點,根據上面的句子,我怎樣才能代表設計?這些是我的一些想法,但我想我錯了。

public class Question 
{ 
    public Response _response; 
    //public List<Response> 
    //public Dictionary<string, Response> 

    public Question() 
    { 
     this._response = new Response(); 
    } 
} 

public class Response 
{ 
} 

回答

12

關聯是一種關係,所有對象都有自己的生命週期,並且沒有所有者。我們舉一個老師和學生的例子。多名學生可以與單個教師聯繫,單個學生可以與多名教師聯繫,但對象之間沒有所有權,並且都有自己的生命週期。兩者都可以獨立創建和刪除。

聚合是一種關聯的特殊形式,其中所有對象都有自己的生命週期但有一個所有權:一個子對象不能屬於另一個父對象。我們以部門和老師爲例。單個教師不能屬於多個部門,但是如果我們刪除部門,則教師對象不會被銷燬。我們可以將其視爲一種「有一個」的關係。

構圖又是一種聚合的特殊形式,我們可以稱之爲「死亡」關係。這是一種強大的聚合類型。子對象沒有其生命週期,如果父對象被刪除,所有的子對象也將被刪除。讓我們再次舉一個房子和房間之間關係的例子。房子可以包含多個房間,並且房間沒有獨立的生活,房間也不能屬於兩個不同的房屋。如果我們刪除房屋,房間將被自動刪除。我們再來看看問題和選項之間的另一個示例關係。單個問題可以有多個選項,一個選項不能屬於多個問題。如果我們刪除一個問題,它的選項也將被刪除。

3

這兩者之間存在關聯。

問題組成答案。

原因是 - 聚合和合成都是關聯。組合意味着子對象的生命期取決於其父 - 子不能在沒有父母的情況下存在。

這正是你的情況。因此 - 組成。

+0

好!你會推薦什麼來編寫這個組合(請看編輯) –

+0

這並不重要。選擇適合您需求的組合類型(例如,由您的ORM框架支持)。 –