JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Software Engineering » UML  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 Re:為系統的邏輯結構塑模:ㄧ般化(Generalization)問題 [Re:dale1]
271080

邱郁惠

版主

發文: 22
積分: 0
於 2008-05-26 20:28 user profilesend a private message to usersend email to 271080reply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
(此回覆同步貼於UML Blog(http://www.umltw.com/2008/05/blog-post_26.html)中)

結合關係(association)是一種靜態結構上的關係,換言之,它偏向於資料關係。所以,兩類別之間放置結合關係,同時意味著這個關係必須被保存起來,這也是為何UML類別圖中最常出現的是結合關係。比方說,顧客跟訂單之間的關係,就會使用結合關係,因為我們希望系統可以保存兩者之間的關係。

結合關係的兩端通常是平等的,如果要表達整體-部分(whole-part)意涵時,就可以改用聚合關係(aggregate,空心菱形),或是組合關係(composite,實心菱形)。特別注意的是:

1. 聚合與組合都是一種結合關係,只是額外具有整體-部分的意涵。

2. 聚合關係中,整件(whole object)不會擁有部件(part object)的生命週期,所以整件刪除時,部件不會被刪除。再者,多個整件可以共享同一個部件。

3. 組合關係中,整件擁有部件的生命週期,所以整件刪除時,部件一定會跟著刪除。而且,多個整件不可以同時間共享同一個部件。

至於,實務上倒底要採用聚合關係還是組合關係,不決定於真實,而是決定於企業規則。比方說,訂單與細項之間的關係,通常採用組合關係,一旦訂單被刪掉時,底下的細項也會同時被刪除。但是,這是比較常見的企業規則,試想,或許有些領域的交易是可以拆單的,訂單被取消時,原先的細項可以被併入別的訂單中,若是如此,就適合使用聚合關係了。

一般化(generalization)是兩類別之間的關係,不同於上述的結合、聚合或組合關係,它是一種分類關係。或者說,針對某一概念或事物,其個體可區分為一般類(父類別)與特殊類(子類別)時,兩者之間便可以放置一般化關係。舉例來說,我們會說無線滑鼠和有線滑鼠(它們都是特殊類別/子類別)都是一種滑鼠(一般類別/父類別)。

依賴關係又與上列幾種關係不同,先說明為何許多UML書上會說它是短暫關係,其實這是相對於結合(聚合、組合)關係,前面有我們有提到,結合關係是一種靜態結構關係,是需要被保存下來的。相較之下,依賴關係並不需要被儲存起來,所以才會說它是短暫關係。

最常見的依賴關係(dependency)是一種使用關係,譬如顧客類別裡頭有一個計算年度交易總額操作好了,在這個操作中必須連到一群當年度的交易物件,並且呼叫交易物件取得交易金額進行累加,才能計算出年度交易總額。在這個例子中,顧客類別與交易類別就有短暫的依賴關係。

再度提醒的是,到底使用結合、聚合、組合、一般化或依賴關係,無關乎真實現象,而是與企業規則,或者與設計者想要表達什麼樣的設計有關,所以兩類別之間具有什麼樣的關係並無固定答案,端看設計而定。


reply to postreply to post
邱郁惠(271080@gmail.com)
UML Blog(http://www.umltw.com)
話題樹型展開
人氣 標題 作者 字數 發文時間
3038 為系統的邏輯結構塑模:ㄧ般化(Generalization)問題 8953190 164 2008-05-26 14:30
2646 Re:為系統的邏輯結構塑模:ㄧ般化(Generalization)問題 dale1 551 2008-05-26 16:20
2591 Re:為系統的邏輯結構塑模:ㄧ般化(Generalization)問題 271080 1177 2008-05-26 20:28
2718 Re:為系統的邏輯結構塑模:ㄧ般化(Generalization)問題 8953190 127 2008-05-26 16:38
2595 Re:為系統的邏輯結構塑模:ㄧ般化(Generalization)問題 dale1 298 2008-05-26 17:40
2569 Re:為系統的邏輯結構塑模:ㄧ般化(Generalization)問題 8953190 250 2008-05-27 12:05
2563 Re:為系統的邏輯結構塑模:ㄧ般化(Generalization)問題 dale1 775 2008-05-28 10:27
2638 Re:為系統的邏輯結構塑模:ㄧ般化(Generalization)問題 8953190 37 2008-05-28 11:27
1724 Re:為系統的邏輯結構塑模:ㄧ般化(Generalization)問題 starlin 55 2011-06-13 00:12
» JWorld@TW »  Software Engineering » UML

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8