2012-06-29 42 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框架支持)。 –