2012-10-09 250 views
3

我和我正在製作一個程序,我們有一個樹結構。在這個樹形結構中,我們使得一個類可以包含它自己。該計劃是基於您的開支,所以一個例子可能是:UML類聚合到自我

你已經買了4個牛奶。 4種牛奶被放入「牛奶」類別。每個牛奶入口都有另一個類別聚合的類別的價格(以及其他個人信息)。

訣竅是我們想要的類別類能夠包含它的自我,所以:

類別「牛奶」是該類別的一部分「乳製品」,這方面是類別的一部分「雜貨」。

我們希望它是這樣的原因,是我們可以在當時移動批次的產品。所以如果你想將牛奶移動到一個名爲「早晨東西」的類別,你不必移動每一個,而只是整個類別。

圖片是我們現在的類別類是如何建模的,但我們被告知我們不能沒有更多的解釋就做不到。 UML是否允許這樣做?如果不是,我們如何用UML對它進行建模?

Category UML part

回答

5

是,UML允許從一個類協會本身。同樣的聚合,甚至是組合都可以這樣。

您發佈的圖片顯示了一個聚合,而從您的描述中我會選擇一個構圖(實心菱形):一個類別有一個或沒有父項;一個類別在某種程度上由其子女定義;如果一個類別被刪除,所有的孩子也會被刪除。

聚合和組成之間的較長比較可以發現here

+0

相反之一,如果它可以具有沒有父,它可以單獨存在,並且在組合物中它只能作爲其成員存在。正如UML 2.1.2標準所述,「複合對象負責組合對象(部件)的存在和存儲」。所以,這是類似「分享」,空鑽石的聚合。 – Gangnus

+0

標準2.4.1說同樣的事情。 – Gangnus