我在各个网站中经历了协会,依赖,聚合和组合之间的区别,但我感到困惑。很少有地方互相混合。 能否请您告诉我下面示例中提到的类之间存在什么关系。 我可以看到像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
答案 0 :(得分:0)
软件工程是建立在不同的人身上有不同的哲学关于如何建模有效的方法来改善组织良好的产品。它是思考的方式,而不是你应该找到的数学方程式。
协会表示班级如何相互沟通
注意:关联可以是双重的。
通过在表示关联的线上添加多重装饰来表示关联的多重性:
关联也可以是对象本身,称为链接类或关联类。
现在让我们转向聚合与合成
之间的区别我们注意到A中的所有Method都有一个B类对象,如果我从A创建一个Object,我就不会创建一个B类对象了吗?!
只有当我在A
中调用Method时,我才会从B类创建对象
所以这不是一个组合关系,因为我认为它更接近于依赖
如果我从A创建一个Object,我将创建一个D类和D的对象 如果来自A的对象死亡,来自D的对象(在A内)也将死亡 它似乎是 的组合物强>
<小时/> 等等,考虑关系的原因以及这些类之间相互通信的方式,有些类有一个来自另一个类的对象而没有初始化,有些类有一个对象应该在使用之前初始化它,其他类不初始化对象但是通过方法分配:)
我不会解决你的家庭工作;)只是给你一个思考的方法。