5

我正在处理这个问题。我正在创建数学问题,每个问题都有回应。例如。

  • 如果我的问题是关于“5x + 15 = 2 的结果?” ,我将只等待一个答案(作为整数)。
  • 如果我的问题是关于“给我这个形状的面积和许可者”,我将等待两个答案(作为双打)。
  • 在另一个中,我将等待一个字符串作为响应
  • 还有一些,我可以有多种数据类型的答案或响应。

我的大问题是。

班级问题和回答之间的关系如何。我也在处理这是否应该是一个关联、聚合或组合。

谢谢。

编辑:太好了,这是一个组合。最后一件事,根据上面的句子,我该如何表示设计?这些是我的一些想法,但我想我错了。

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

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

public class Response
{
}
4

2 回答 2

22

关联是所有对象都有自己的生命周期并且没有所有者的关系。让我们以教师和学生为例。多个学生可以与单个教师关联,单个学生可以与多个教师关联,但对象之间没有所有权,并且都有自己的生命周期。两者都可以独立创建和删除。

聚合是关联的一种特殊形式,其中所有对象都有自己的生命周期但有所有权:子对象不能属于另一个父对象。让我们以部门和老师为例。单个教师不能属于多个部门,但如果我们删除部门,教师对象不会被破坏。我们可以将其视为“拥有”关系。

组合再次是聚合的一种特殊形式,我们可以将其称为“死亡”关系。它是一种强大的聚合类型。子对象没有它们的生命周期,如果父对象被删除,所有子对象也将被删除。让我们再举一个 House 和 room 之间关系的例子。一个房子可以包含多个房间,一个房间没有独立的生命,一个房间不能属于两个不同的房子。如果我们删除房子,它的房间将被自动删除。让我们再举一个问题和选项之间的关系示例。单个问题可以有多个选项,一个选项不能属于多个问题。如果我们删除一个问题,它的选项也将被删除。

于 2012-12-13T15:17:44.893 回答
3

这两者之间存在关联。

问题组成答案。

这样做的原因是 - 聚合和组合都是关联。组合意味着子对象的生命周期取决于其父对象——没有父对象,子对象不能存在。

这正是你的情况。因此 - 组成。

于 2012-06-29T16:55:07.290 回答