posts - 262,  comments - 221,  trackbacks - 0

          【關聯關系】
          ===================================================================

          關聯關系是一種最簡單、最抽象的對象間關系描述。它只是描述了對象A于對象B之間存在一種業務上、概念上的邏輯關系,但是關聯關系的雙方不包含對方的屬性。


          【聚合關系】
          ===================================================================

          聚合關系是一種特殊的關聯關系,除了具備關聯關系的特性之外,還包括了以下的一些規則:

          A. 對象A和對象B之間存在一種包含的關系

          B. 對象A和對象B之間必有一方為“容器”,另外一方為“元素”。即“whole-part”關系

          C. 容器方和元素方對象的生命周期是彼此獨立的,并不依賴于對方而存在,也就是說是一
          種“松散”的關聯。容器和元素可以被獨立創建、銷毀,容器不存在了不影響元素的存在,元素不存在了容器可以依然存在

          D. 容器方可以沒有元素,也可以有一個至多個元素

          E. 元素方可以“被包含于”一個容器,也可以“被包含于”多個容器

          F. 向容器添加元素,或者從容器中移除元素并不影響容器


          【組合關系】
          ===================================================================

          組合關系是一種特殊的聚合關系,除了具備關聯關系、聚合關系的特性之外,還包括了以下的一些規則:

          A. 容器方和元素方對象的生命周期是互相依賴的。即元素依賴于容器而存在,一旦容器不存在了那么元素也就不可能存在。容器必須優先于元素而被創建,元素必須優先于容器而被銷毀。

          B. 元素方只能“被包含于”一個容器


          【舉例分析】
          ===================================================================

          A. 關聯關系的例子分析:

              學生 ------------- 成績

              學生與成績之間就是一個關聯關系,你不能把學生的屬性寫到成績對象中去,同理不能把成績的屬性寫到學生對象中去,但兩者之間確實存在一種業務上的聯系,而且是固定的

          B. 聚合關系的例子分析:

              班級 ------------- 學生 /   汽車 ------------- 配件

              班級與學生,汽車與配件之間的關系就是一個聚合關系。首先一個班級可以包含零至多個學生,一部汽車可以包含零(未組裝之前)至多個配件。

              其次學生可以先被創建,然后創建班級,再向班級中添加,移除學生。配件可以先被創建并保存到倉庫,然后再組裝成汽車。在班級,汽車對象沒有形成之前,學生與配件的對
          象可以已經存在
          (即容器和元素對象的生命周期是獨立的)

          C. 組合關系的例子分析:

              基金賬戶 ------------- 單筆交易

              基金賬戶與單筆交易就是一個組合關系。首先單筆交易必須依賴于基金賬戶而存在,也就是說我們必須先創建基金賬戶這個“容器方”,之后才能夠創建單筆交易這個“元素方”,然后再把單筆交易掛到(添加)基金賬戶下。沒有基金賬戶預先存在,我們不能執行單筆交易。我們不能先創建單筆交易,再創建基金賬戶,然后再掛靠交易。

              這一點就不同于上面的班級與學生,汽車與配件的存在關系了。

              其次單筆交易只能掛靠在某一個特定的基金賬戶下,也就是說元素方只能“被包含于一個”容器


          【延伸思考】

          ===================================================================

          在對象和對象之間的關系中,有時會提到“依賴”關系,即對象A依賴于對象B而完成某項操作,那么這種關系是不是也屬于“關聯關系”呢?

          個人認為這不屬于一種“關聯關系”。因為上面我們提到的三種關系中,每一種關系除了是固定的關系之外,還有一個重要的特點就是這些關系是需要“被持久化,被保存”起來的。

          而依賴關系只是對象和對象之間的引用(或稱調用)關系,這種關系只發生在運行期間而不是業務上,概念上的聯系,并不需要被保存。所以“依賴關系”并不屬于UML中的對象關系。



          -------------------------------------------------------------
          生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
          posted on 2009-07-19 18:18 Paul Lin 閱讀(1984) 評論(1)  編輯  收藏 所屬分類: UML


          FeedBack:
          # re: 【原】對UML幾種對象關系的理解
          2009-07-20 20:30 | 戴爾電腦
          因為上面我們提到的三種關系中,每一種關系除了是固定的關系之外,還有一個重要的特點就是這些關系是需要“被持久化,被保存”起來的。
            回復  更多評論
            
          <2009年7月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          常用鏈接

          留言簿(21)

          隨筆分類

          隨筆檔案

          BlogJava熱點博客

          好友博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 白沙| 黄山市| 临沭县| 西乌珠穆沁旗| 开平市| 阿合奇县| 枝江市| 伽师县| 济南市| 清流县| 文成县| 繁昌县| 益阳市| 澄城县| 桑日县| 石阡县| 江口县| 新蔡县| 封开县| 固安县| 舟曲县| 娱乐| 西安市| 沂水县| 郸城县| 五寨县| 筠连县| 乌拉特后旗| 杂多县| 常德市| 同仁县| 济阳县| 香格里拉县| 九江市| 灌阳县| 加查县| 德令哈市| 西青区| 通化市| 江山市| 西乌珠穆沁旗|