3

我和我的小组正在制作一个程序,其中我们有一个树形结构。在这个树形结构中,我们已经使一个类别可以包含它自己。该计划基于您的费用,因此示例可能是:

你买了4个牛奶。4 种牛奶被归入“牛奶”类别。每个牛奶条目都有另一个类别中的价格(以及其他个人信息),该类别汇总。

诀窍是我们希望类别类能够自我包含它,所以:

“牛奶”类别是“乳制品”类别的一部分,就术语而言,它是“杂货”类别的一部分。

我们希望它是这样的原因是我们可以同时移动批量产品。因此,如果您想将 Milk 移至名为“Morning Stuff”的类别,则不必移动每一个,而只需移动整个类别。

图片是我们当前类别类的建模方式,但我们被告知如果没有更多进一步的解释我们无法做到这一点。UML 允许这样做吗?如果没有,我们如何使用 UML 对其进行建模?

类别 UML 部分

4

2 回答 2

6

是的,UML 允许从一个类到它自身的关联。同样,以这种方式允许聚合甚至组合。

您发布的图像显示了一个聚合,而从您的描述中我会选择一个组合(实心菱形):一个类别有一个或没有父级;一个类别在某种程度上是由它的孩子定义的;如果一个类别被删除,所有的孩子也会被删除。

可以在此处找到聚合和组合之间的更长比较。

于 2012-10-09T10:08:34.190 回答
3

是的,这是允许的,但在大多数情况下,最好聚合一个抽象(抽象类或接口)以保留多态性而不是项目本身;有关示例,请参见复合模式。

这被称为接口隔离原则,是SOLID 的五项原则之一

于 2012-10-10T13:18:08.130 回答