UML對基本結構建模---關係

1.術語和概念

      當建造抽象時,會發現類很少單獨存在,相反,大多數類以幾種方式相互協作。因此,當對系統建模時,不僅要識別形成系統詞彙的事物,而且還必須對這些事物如何相互聯繫建模。關係是事物之間的聯繫。在面向對象的建模時,最重要的3種關係是依賴、泛化和關聯。在圖形上,把關係畫成一條線,並用不同的線區別關係的種類。
(1)依賴
      依賴是一種使用關係,說明一個事物使用另一個事物的信息和服務,但反之未必。在大多數情況下,在類與類之間用依賴指明一個類使用另一個類的操作,或者使用其他類所定義的變量和參量,,如果被使用的類發生變化,那麼另一個類的操作也會受到影響,因爲這個被使用的類此時可能表現出不同的接口或行爲。
在這裏插入圖片描述
(2)泛化
      泛化是一般事物(稱爲超類或父類)和該事物的較爲特殊的種類(稱爲子類)之間的關係。有時也稱泛化爲“is-a-kind-of”關係。一個類可以有0個、1個或多個父類。在大多數情況下,用類或接口之間的泛化來表明繼承關係。
在這裏插入圖片描述
(3)關聯
      關聯是一個結構關係,它指明一個事物的對象與另一個事物的對象間的聯繫。給定一個連接兩個類的關聯,可以從一個類的對象聯繫到另一個類的對象。這裏有4種應用於關聯的修飾。
1’.名稱
      關聯可以有一個名稱,用以描述該關係的性質。爲了消除名稱的歧義,可提供一個指出讀名稱方向的三角形,給名稱一個方向,如下圖所示。雖然關聯可以有名稱,但在顯式地給出關聯的端點名的情況下通常不需要給出關聯名稱。
在這裏插入圖片描述
2’.角色
       當一個類參與了一個關聯時,它就在這個關係中扮演了一個特定的角色。角色是關聯中靠近它的一端的類對另一端的類呈現的面孔。可以顯式地命名一個類在關聯中所扮演的角色。把關聯端點扮演的角色稱爲端點名。
在這裏插入圖片描述
3’.多重性
      關聯表示了對象間的結構關係。在很多建模問題中,說明一個關聯的實例中有多少個相互連接的對象時很重要的。這個“多少”被稱爲關聯角色的多重性,它表示一個整數的範圍,指明一組相關對象的可能個數。
4’.聚合
      兩個類之間的簡單關聯表示了兩個同等地位的類之間的結構關係,這一位着這兩個類在概念上是同級別的,一個類並不比另一個類更重要。有時要對“整體/部分”關係建模,其中一個類描述了一個較大的事物(“整體”),它由較小的事物(“部分”)組成。這種關係成爲聚合,它描述了“has-a”關係,意思是整體對象擁有部分對象。

2.常用建模技術

(1)對簡單依賴建模
      創建一個依賴,從含有操作的類指向被該操作用來作爲參數的類。
(2)對單繼承建模
      對繼承關係建模,要做如下工作。

  • 給定一組類,尋找兩個或兩個以上的類中的共同職責、屬性和操作。
  • 把這些共同的職責、屬性和操作提升到較爲一般的類中。如果需要,創建一個新類,用以指派這寫元素(但小心不要引入過多的層次)。
  • 畫出每個特殊類到它的較爲一般的父類的泛化關係,用以表示較特殊的類繼承較一般的類。

(3)對結構關係建模
      對結構關係建模,要做如下工作。

  • 對於每一對類,如果需要從一個類的對象到另一個類的對象導航,就要在這兩個類之間說明一個關聯。這是關聯的數據驅動觀點。
  • 對於每一對類,如果一個類的對象要與另一個類的對象相互交互,而後者不作爲前者的過程局部變量或者操作參數,就要在這兩個類間說明一個關聯。這是關聯的行爲驅動觀點。
  • 對於這樣的每一個關聯,要說明其多重性或角色名。
  • 如果關聯中的一個類與另一端的類相比,前者在結構或者組織上是一個整體,後者看其阿里像它的部分,則在靠近整體的一端用一個菱形對該關聯進行修飾,從而把它標記爲聚合。

3.提示和技巧

      在用UML對關係建模時,要遵循如下策略。

  • 僅當被建模的關係不是結構關係是,才使用依賴。
  • 僅當關系是“is-a-kind-of”關係時,才使用泛化。往往可以用聚合代替多繼承。
  • 小心不要引入循環的泛化關係。
  • 一般要保持泛化關係的平衡;繼承的層次不要太深(大約多於5層就應該想一想),也不要太寬。
  • 關聯主要用於對象間有結構關係的地方。不要用關聯來表示暫時關係,例如過程的參數或局部變量。
  • 除非絕對必要,否則要避免連線交叉。
  • 僅顯示對理解特定的成組事物必不可少的關係。避免使用多餘的關係(特別是多餘的關聯)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章