在UML中,把整體-部分結構細分成兩類,其一稱為「聚合」(aggregation),另一種稱為「組合」(composition)。聚合與組合這兩種關係,都可以用來表達整體-部分結構,最大的差別在於,聚合關係中的整體物件與部分物件兩者的生命週期是彼此獨立的,但是組合關係中的整體物件則可以控制部分物件的生滅。
以音樂專輯為例,當某一個音樂專輯不存在時,收錄在音樂專輯中的歌曲並不會因此而消失,甚至某一首歌曲,可以重複收錄在多個不同音樂專輯中。這樣的情況,就適合使用聚合關係,如圖1所示。
圖1: 聚合關係
再看到圖2的例子,剪刀主要是由兩個刀片和兩個刀柄所組成的,一旦這把剪刀報廢掉了,組成它的刀片和刀柄也將一併報廢掉,所以這個範例適合使用組合關係。
圖2: 組合關係
下列三種常見的整體-部分結構,很值得我們參考,如下所列:
1. 總體-零件(assembly-parts)
2. 容器-內容(container-contents)
3. 集合-成員(collection members)
前面提到的圖2中,剪刀與刀片、刀柄之間的關係,屬於此處的集合-成員關係。還有,容器-內容的情況也很常見,像是貨櫃和物品之間的關係,就是容器-內容,如圖3所示。
圖3: 容器-內容
至於,前面圖1所提到的音樂專輯與歌曲之間的關係,就是此處的集合-成員的情況。不過,集合-成員的情況並不一定是聚合關係,如果系統分析師想要表達整體物件可以控制部分物件的生滅時,就可以使用組合關係。
譬如,銷售交易和銷售次項之間的情況,屬於集合-成員,但是銷售交易可以控制銷售次項的新增或刪除,所以適合採用組合關係,如圖4所示。
圖4: 銷售交易-銷售次項
2009/4/28
整體-部分結構
訂閱:
張貼意見 (Atom)

0 回應:
張貼意見