gpt4 book ai didi

c# - 使用 UML 类图的组合和聚合示例

转载 作者:可可西里 更新时间:2023-11-01 07:43:52 24 4
gpt4 key购买 nike

我似乎无法完全理解代码中聚合和组合之间的区别。

客户<.>---->银行账户

(这应该是Client-BankAccount组成类图)

所以在这个例子中,客户有一个银行账户,所以这意味着,当一个客户对象死亡时,他的银行账户对象也会死亡。这是否意味着我们必须在 Client 类中有一个 BankAccount 对象?

Class Client
{

BankAccount acc = new BankAccount();

public void addMoneyToBankAccount(decimal amount)
{
acc.AddMoney(amount);
}

public decimal CheckBalance()
{
return acc.CheckAccountBalance();
}

}

那么,这个组合是在代码中吗?在这个例子中聚合会是什么样子?很抱歉新手问题,如果代码有误请指正。提前致谢。

最佳答案

是的,你所做的就是调用组合,如果你想像这样对它进行聚合:

Class Client
{

BankAccount acc;

public Client(BankAccount p_acc)
{
acc=p_acc;
}

public void addMoneyToBankAccount(decimal amount)
{
acc.AddMoney(amount);
}

public decimal CheckBalance()
{
return acc.CheckAccountBalance();
}

}

聚合:

如果继承给了我们“is-a”而组合给了我们“part-of”,我们可以争辩说聚合给了我们“has-a”关系。在聚合中,部分的生命周期不受整体管理。为了更清楚地说明这一点,我们需要一个例子。在过去的 12 个多月里,我一直参与 CRM 系统的实现,因此我将使用其中的一部分作为示例。

CRM 系统有一个客户数据库和一个保存地理区域内所有地址的单独数据库。在这种情况下聚合是有意义的,因为客户“有一个”地址。说地址是客户的“一部分”是没有意义的,因为它不是。这样想,如果客户不存在了,地址呢?我认为它不会停止存在。聚合在 UML 图上显示为未填充的菱形。

正如我在回答开头所说,这是我对组合和聚合的看法。决定是使用组合还是聚合应该不是一件棘手的事情。在对象建模时,应该说这是“一部分”还是“有一个”?

关于c# - 使用 UML 类图的组合和聚合示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14548612/

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