gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 14:06:01 25 4
gpt4 key购买 nike

看源码能不能区分组合和聚合关系?

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

我以 this site 中的例子为例只是为了解释我认为是一种模式

成分

enter image description here

 public class Engine
{
. . .
}

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

聚合

enter image description here
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();] Engine 在内部实例化
    类(class)

  • 聚合 (有一个)
  • 定义为类的字段
  • 示例:[private Address address;] 地址定义为一个字段
    Person 类的地址
  • 在类外建立
  • 示例:[Address address = new Address();] Address is instatiated
    外人。
  • 通过将实例作为参数发送给构造函数,在构造函数中赋值。
  • 例子:[Person person = new Person(address);] 的实例
    地址作为参数通过构造函数传递并分配
    在类 Person 的构造函数中。

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

    是否有更多用于区分的约束条件?

    最佳答案

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

    如果语言有指针,那么您可以尝试猜测,如果 Engine 在 Car 中定义为指针,那么编写那段代码的程序员建议在 Cars 和 Engines 之间建立更软的关系(聚合或关联),因为移除 Car 并没有意味着丢失 Engine 对象。

    关于uml - 使用源码区分聚合和组合关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6776001/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com