关联,聚合,构成和依赖之间的差异

时间:2015-05-10 00:44:05

标签: class-relationship

我在各个网站中经历了协会,依赖,聚合和组合之间的区别,但我感到困惑。很少有地方互相混合。 能否请您告诉我下面示例中提到的类之间存在什么关系。 我可以看到像A& amp; B有多个关系依赖关系以及组合。在这种情况下,需要考虑哪一个。

前:

class DataEntity
{
    public int Id { get; set; }
    public string Name { get; set; }
}


class A
{
    C c;
    DataEntity DE = new DataEntity { Id = 1, Name = "sample" };
    void method1()
    {
        B b = new B();
        c = new C();
        b.method2(DE);
        int ret = c.method2(DE);
    }
}


class B
{
    public void method2(DataEntity de)
    {
        de.Name = "samplechange";
    }
}


class C
{
    DataEntity de1;
    public int method2(DataEntity de)
    {
        de1 = de;
        return 0;
    }
}

以下类之间的关系是什么:

A & D
A & B
A & C
B & D
C & D

1 个答案:

答案 0 :(得分:0)

软件工程是建立在不同的人身上有不同的哲学关于如何建模有效的方法来改善组织良好的产品。它是思考的方式,而不是你应该找到的数学方程式。

  • 据我所知,我们认为(聚合和组合)是协会关系的一部分:

协会表示班级如何相互沟通

  

注意:关联可以是双重的。

通过在表示关联的线上添加多重装饰来表示关联的多重性:

  • 0..0
  • 0..1
  • 0 .. *
  • 1..1
  • 1 .. *
  • *

关联也可以是对象本身,称为链接类或关联类。

现在让我们转向聚合与合成

之间的区别
  • 聚合指定a之间的整体关系 聚合物和组成部分,其中部分可以存在 独立于汇总
  • 作品表示强烈的所有权和一致的一生 整体上的部分(即它们作为一个整体生活和死亡)。成分 在关联上用填充钻石装饰物表示。 依赖性表示两个或更多个之间的语义关系 元素,如果我有两个类A& B:如果有一个对象 B类只存在于A类方法中,我们将其称为A的依赖关系 到B.
  • 根据我所说的让我们谈谈A& amp;的关系B:

我们注意到A中的所有Method都有一个B类对象,如果我从A创建一个Object,我就不会创建一个B类对象了吗?!

  

只有当我在A

中调用Method时,我才会从B类创建对象

所以这不是一个组合关系,因为我认为它更接近于依赖

  • A& amp;的关系d:

如果我从A创建一个Object,我将创建一个D类和D的对象    如果来自A的对象死亡,来自D的对象(在A内)也将死亡    它似乎是    的组合物

<小时/> 等等,考虑关系的原因以及这些类之间相互通信的方式,有些类有一个来自另一个类的对象而没有初始化,有些类有一个对象应该在使用之前初始化它,其他类不初始化对象但是通过方法分配:)

我不会解决你的家庭工作;)只是给你一个思考的方法。