联想,聚合和组成

时间:2012-06-29 16:40:59

标签: c# oop composition aggregation

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

  • 如果我的问题是关于“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
{
}

2 个答案:

答案 0 :(得分:19)

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

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

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

答案 1 :(得分:3)

这两者之间存在联系。

问题是答案。

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

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