这个家庭 class 图是聚合或组合的例子吗?

Is this family class diagram an example of aggregation or composition?

我正在寻找关于下面 class 图表的一些说明:"Is it an aggregation or a composition? Explain why."

我对这个答案有两种看法。据我初步了解,学生'has a'家庭,父母;因此这是一个组合的例子,因为没有学生(儿子,女​​儿)存在,母亲或父亲的概念就不复存在。但是,如果我换个角度来看,如果学生(child)[不复存在]/[根本不存在],仍然有可能两个人objects(这里叫父亲)和母亲)存在并且仍将包含相同的属性;这将是聚合的一个例子。

希望我试图传达我的思路的方式是有道理的。有人可以帮我解决这个问题吗?

感谢您的宝贵时间。

假设您正确使用了 UML 图,答案就在图片上 — 它是基于箭头类型的聚合。但是让我们找出答案。另外 this 文章的解释与我所写的相同,但用词不同。

让我们按照您的陈述逐步进行。

the student 'has a' family, mother and father

不太正确:母亲“有”家庭,父亲“有”家庭。家庭“有”学生
让我们看一个来自 Wiki 的例子:

The diagram on top shows Composition between two classes: A Car has exactly one Carburetor, and a Carburetor is a part of one Car. Carburetors cannot exist as separate parts, detached from a specific car. The diagram on bottom shows Aggregation between two classes: A Pond has zero or more Ducks, and a Duck has at most one Pond (at a time). Duck can exist separately from a Pond, e.g. it can live near a lake.

根据插图的描述,箭头所指的对象是所有者。但是,让我们转到您的下一个声明。

because the concept of a mother or father cease to exist without the student

这不太正确,因为您的图表没有描述任何“概念”,UML 图显示对象属性和它们之间的关系。所以如果有任何“概念”,应该在图表之外说明。
假设您的图表显示了现实世界中的关系:家庭可以在没有“成为”母亲或父亲“一部分”的情况下存在吗?不。那么,母亲、父亲和家庭之间的关系是复合的,因为家庭本身不被使用,也不存在。

if the student (child) [ceases to exist]/[never existed at all], there is still the possibility that two individual objects (here named Father and Mother) exist and would still contain the same attributes

正确。但是根据图表来看,他们本来就没有任何关系。所以没有必要质疑或证明他们对彼此的感情。但是你应该看看家庭和学生之间的关系。
如果 Student 不是 Family 的一部分,它能否成为一个有效的对象并自行行动?根据现实世界——是的,这是可能的。然后,就是作文了。

重要说明:我暗示了这些对象之间的关系,从现实世界中获取规则,例如,如果家庭不是某些父亲和母亲的一部分,那么家庭就不存在.
但是在编程中,我们使用 OO 模型和关系,我们知道这些模型并不能 1 对 1 地反映现实世界,所以如果没有 Father 和 Mother 对象,可以使用 object Family一些程序?当然可以——取决于对象的用途。例如,它可以用来存储统计数据,与具体的父亲母亲没有任何联系。这将使这种关系成为一种聚合。为避免此类问题,应明确描述对象之间的关系及其独立存在的可能性,以便可以假定正确的关系类型。