UML类聚合到self

时间:2012-10-09 09:38:52

标签: uml

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

你买了4个牛奶。这4种牛奶被归入“牛奶”类别。每个牛奶条目的价格(以及其他个人信息)在另一个类别聚合。

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

“牛奶”类别是“乳制品”类别的一部分,“乳制品”类别是“杂货”类别的一部分。

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

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

Category UML part

2 个答案:

答案 0 :(得分:5)

是的,UML允许从类到自身的关联。同样允许聚合甚至组合。

您发布的图片显示了一个聚合,而根据您的描述,我会选择一个合成(填充的钻石):一个类别有一个或没有父级;一个类别在某种程度上由其子女定义;如果某个类别被删除,所有孩子也会被删除。

可以找到聚合和组合之间的较长比较here

答案 1 :(得分:3)

是的,这是允许的,但在大多数情况下,最好聚合抽象(抽象类或接口)以保留多态而不是项自身;请参阅Composite Pattern以获取示例。

这称为Interface Segregation Principle,是五个SOLID principles

之一