微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

uml – 使用源代码区分聚合和组合关系

是否可以通过阅读源代码来区分组合和聚合关系?

我试图找到一些模式,我在下面列出了它们.

我以this site为例来解释我认为的模式

组成

public class Engine
{
    . . . 
}

public class Car
{
   Engine e = new Engine();
    .......
}

聚合

public class Address
{
. . .
}

public class Person
{
   private Address address;
   public Person(Address address)
   {
     this.address = address;
   }
   . . .
}

我发现这些模式可以区分

组成(是其中的一部分)

>定义为一个类的字段.

>示例:[Engine e] Engine定义为Car类的字段e

>在类中实例化和分配.

>示例:[Engine e = new Engine();]引擎在实例中被实例化

聚合(有)

>定义为一个类的字段

>示例:[私有地址;]地址定义为字段
类Person的地址

>在课堂上安排好

>示例:[Address address = new Address();]地址已实例化
外面的人.

>通过将实例作为参数发送到构造函数,在构造函数中分配.

>示例:[Person person = new Person(address);]实例
地址作为参数通过构造函数传递并分配
在Person类的构造函数中.

我可以考虑这些来区分聚合和组成关系吗?

是否存在更多用于区分的限制因素?

解决方法

不是真的,因为没有一种独特的方式来实现每种关联(事实上,问题是我们有三种关联,“正常关联”,“聚合”和“组合”).

如果语言有指针那么你可以尝试猜测如果引擎在Car中定义为指针那么编写那段代码的程序员建议汽车和引擎之间的关系(聚合或关联)更柔和,因为删除汽车不意味着丢失Engine对象.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐