- UML 建模、設計與分析:從新手到高手
- 夏麗華
- 1510字
- 2019-12-09 14:44:26
4.3 依賴關系和實現關系
模型元素之間的依賴關系描述的是它們之間語義上的關系。當兩個元素處于依賴關系中時,其中一個元素的改變可能會影響或提供消息給另一個元素,即一個元素以某種形式依賴于另一元素。在UML模型中,元素之間的依賴關系表示某一元素以某種形式依賴于其他元素。從某種意義上說,關聯、泛化和實現都屬于依賴關系,但是它們都有其特殊的語義,因而被作為獨立的關系在建模時使用。
4.3.1 依賴關系
依賴關系用一個一端帶有箭頭的虛線表示,實際建模時可以使用一個構造型的關鍵字來區分依賴關系的種類。例如,下圖中表示Person類依賴于Computer類。

UML規范中定義了4種基本的依賴類型,它們分別是使用(Usage)依賴、抽象(Abstraction)依賴、授權(Permission)依賴和綁定(Binding)依賴。
1.使用依賴
使用依賴用于表示一種元素使用其他元素提供的服務以實現它的行為,如下表列出了5種經常使用的依賴關系。

在實際建模過程中,上表中的使用依賴最常使用,調用依賴和參數依賴一般很少使用,實例化依賴用于說明依賴元素會創建被依賴元素的實例,發送依賴用于說明依賴元素會把信號發送給被依賴元素。以下3種情況建模需要使用依賴關系。
□ 客戶類的操作需要提供者類的參數。
□ 客戶類的操作在實現中需要使用提供者類的對象。
□ 客戶類的操作返回提供者類型的值。
2.抽象依賴
抽象依賴包括3種:跟蹤、精化和派生。它們的具體說明如下。
□ 跟蹤(Trace)依賴 用于描述不同模型中元素之間的連接關系,但是沒有映射精確。這些模型一般分屬于開發過程中的不同階段。跟蹤依賴缺少詳細的語義,它主要用來追溯跨模型的系統要求以及跟蹤模型中會影響其他模型的模型所發生的變化。
□ 精化(Refine)依賴 用于表示一個概念兩種形式之間的關系,這種概念位于不同的開發階段或者處于不同的抽象層次。這兩種形式的概念并不會在最終的模型中共存,其中一個一般是另一個不完善的形式。
□ 派生(Derive)依賴 用于聲明一個實例可以從另一個實例導出。
3.授權依賴
授權依賴用于表示一個事物訪問另一個事物的能力,被依賴元素通過規定依賴元素的權限,可以控制和限制對其進行訪問的方法。常用的授權依賴關系有3種,其具體說明如下表所示。

4.綁定依賴
綁定依賴用于為模板參數提供值,以創建一個新的模型元素,表示綁定依賴的關鍵字為bind。綁定依賴是具有精確語義的高度結構化的關系,可通過取代模板備份中的參數實現。
UML 2.0中還添加了一個被稱作substitution(替代)依賴性的新概念,它是realization依賴性的一種類型,即它是實現類元的另外一種方法。在substitution依賴關系中,作為客戶一方的類元取代了作為提供者的類元。在需要對系統進行定制的時候,這種依賴概念尤其好用。如下圖所示演示了substitution的使用方法。

上圖主要用來預定演出座位,在系統中任何需要訂座的地方都可以使用Reservation類來代替ShowSeat類,因此ShowSeat類必須遵從Reservation類確定的接口。
4.3.2 實現關系
實現關系(Realization)用于規定規格說明與其實現之間的關系、它通常用在接口以及實現該接口的類之間,以及用例和實現該用例的協作之間。換種說法來說,實現關系指定兩個實體間的一個合同,一個實體定義一個合同,而另一個實體保證履行該合同。使用Java應用程序進行建模時實現關系可直接用implements關鍵字來表示。
UML中將實現關系表示為末端帶有空心三角形的虛線,帶有空心三角形的那一端指向被實現元素。除此之外,還可將接口表示為一個小圓圈,并和實現該接口的類用一條線段連接起來。如下圖所示演示了一個簡單的實現關系。

泛化關系與實現關系是有異同點的,它們都可以將一般描述和具體描述聯系起來。但是泛化關系是將同一語義層上的元素連接起來,并且通常在同一模型內,而實現關系則將不同語義層的元素連接起來,并且通常建立在不同的模型內。在不同的發展階段可能有不同數目的類等級存在,這些類等級的元素通過實現關系聯系在一起。
- Design Principles for Process:driven Architectures Using Oracle BPM and SOA Suite 12c
- The Modern C++ Challenge
- MySQL 8從入門到精通(視頻教學版)
- 深度學習經典案例解析:基于MATLAB
- Vue.js入門與商城開發實戰
- 三維圖形化C++趣味編程
- BeagleBone Media Center
- Selenium Design Patterns and Best Practices
- Kali Linux Wireless Penetration Testing Beginner's Guide(Third Edition)
- Kivy Cookbook
- Machine Learning for Developers
- Python Social Media Analytics
- Keil Cx51 V7.0單片機高級語言編程與μVision2應用實踐
- Learning Alfresco Web Scripts
- Android應用開發攻略