UML:依賴關係

依賴關係是一種有向關係,用於表示一些UML元素或一組元素需要、需要或依賴於其他模型元素來進行規範或實現。因此,依賴關係被稱爲供應商-客戶關係,在這種關係中,供應商向客戶提供某些東西,因此客戶在某種意義上是不完整的,同時在語義或結構上依賴於供應商元素。供應商的變更可能會影響客戶元素。

依賴關係是命名元素之間的關係,在UML中它包括許多不同的元素,例如類、接口、組件、工件、包等等。下圖顯示了幾種依賴關係。

依賴關係概述圖 - 使用,抽象,部署。

用法是一種依賴關係,其中一個命名元素(客戶端)需要另一個命名元素(供應商)來完成其完整定義或實現。

述抽象 涉及表示同一概念的兩個元件,但在不同的抽象層次。

部署是顯示工件分配(部署)到部署目標的依賴。(不太清楚爲什麼UML 2.4.1將部署定義爲一種依賴,而不是一種關聯,或者僅僅是一種有向關係。)

注意,UML2.4.1規範有一些令人困惑的澄清,“模型中的依賴關係的存在不具有任何運行時語義含義,它都是根據參與關係的模型元素給出的,而不是根據它們的實例。”

這一澄清與使用依賴(即實現依賴)的定義相矛盾。經驗豐富的軟件開發人員知道在運行時缺少某些依賴關係時會發生什麼情況,應用程序會被類加載器中的LinkageError或ClassNotFoundException殺死。因此依賴性實際上可能有一些嚴重的運行時語義含義。

依賴關係通常顯示爲從箭頭的客戶端(從屬)指向箭頭處的供應商(提供商)的虛線箭頭。箭頭可以標有可選的原型和可選名稱。因爲箭頭的方向與我們通常期望的方向相反,我通常將其定型爲client《depends on》supplier.

Class SearchController取決於(需要)SiteSearch界面。

多年來,UML規範提供瞭如下所示的依賴關係的矛盾示例。UML 2.4.1規範的圖7.38的解釋是:“在下面的例子中,Car類依賴於CarFactory類。在這種情況下,依賴關係是一個實例化的依賴關係,Car類是CarFactory類的一個實例。”

錯誤示例:Car類依賴於CarFactory類。
正確:CarFactory類取決於Car類。

這個例子實際上顯示了與UML規範相反的情況。。CarFactory取決於Car類。carfactory類可以在不知道carfactory類的情況下定義,但是carfactory需要car來定義它,因爲它生產汽車。這樣說也是錯誤的”...汽車類是汽車工廠類的一個實例。”Car類由CarFactory類實例化。

可以爲客戶或供應商提供一組元素。在這種情況下,一個或多個箭頭的尾部在客戶身上,連接到一個或多個箭頭的尾部,箭頭的頭部在供應商。如果需要的話,可以在交叉點上放置一個小點。在連接點處應附上有關依賴關係的說明。

依賴關係可用於幾種UML圖:

  • 類圖
  • 複合結構圖
  • 包裝圖
  • 組件圖
  • 部署圖

以下是一些依賴關係的例子

網絡購物套餐使用(取決於)付款套餐。

SiteSearch 接口由SearchService 實現(實現)。

注意,抽象依賴關係有一個約定,將更抽象的元素作爲供應商,將更具體的或實現元素作爲客戶,但是UML規範也允許以相反的方式來描述它。

組件userservice由userservlet和userdao實現。

使用(Usage)

依賴關係是一種使用關係,其中一個元素(客戶端)需要另一個元素(或一組元素)(供應商)來實現或操作。

除了客戶的定義或實現使用供應商這一事實之外,使用相關性並未指定客戶如何使用供應商。例如,這可能意味着(客戶端)類中的某些方法使用另一(供應商)類的對象(例如參數)。

SearchController類使用 SearchEngine類。

創建(Create)

Create是使用依賴關係, 表示客戶端分類器創建供應商分類器的實例。它用標準的構造型《create》表示。

DataSource類創建Connection。

Create還可以指定指定的 特徵 創建該特徵附加到的分類器的實例。該依賴性可以被提升到包含特徵的分類器。

Create可以將實例值與類的構造函數相關聯,描述構造函數操作返回的單個值。操作是客戶,創建的實例是供應商。實例值可以引用該操作聲明的參數。

帳戶構造函數創建帳戶的新實例

nstantiate是分類器之間的另一個使用依賴關係,表示客戶端上的操作創建了供應商的實例。它用標準構造型《instantiate》表示。

尚不清楚爲什麼UML 2.4標準同時具有 “創建”和“實例化”功能。

調用(Call)

Call是一種使用依賴關係,它指定源操作調用目標操作。這種依賴性可以將源操作連接到範圍內的任何目標操作,包括但不限於封閉分類器的操作和其他可見分類器的操作。

Call用標準原型調用表示,它的源是一個操作,目標也是一個操作。

這種關係也可以應用於包含操作的類,這意味着在依賴關係應用的類中存在操作。

發送(send)

send是一種使用依賴關係,其源是信號發送者,目標是信號,指定源發送目標信號。

發送用標準原型發送來表示。

Send用標準構造型《send》表示。

需求接口(Required Interface)

Required的接口指定分類器需要的服務,以便執行其功能並履行其對客戶端的義務。它由分類器和相應接口之間的使用依賴關係來指定。

從分類器到接口 的使用依賴性通過用半圓或套接字表示接口來顯示,該半圓或套接字用實線附加到需要此接口的分類器上,並標有接口名稱。

SearchController 使用(必需)SiteSearch 接口。

如果使用矩形表示法表示接口,則接口使用 依賴性由依賴性箭頭表示。箭頭尾部的分類器 使用(需要)箭頭頭的界面。

SearchController 使用(必需) SiteSearch接口。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章