91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

UML包圖中包引入和包合并怎么用

發布時間:2021-12-04 11:52:51 來源:億速云 閱讀:370 作者:小新 欄目:開發技術

這篇文章主要介紹了UML包圖中包引入和包合并怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

UML包圖中的包引入和包合并

1包引入

包引入(packageimport,參見USS的7.3.39節)是一種允許采用非限定性名稱訪問來自于另一個命名空間中的元素的關系。假如我們有一個包A和一個包B,如果包A沒有引入包B,那么包A在訪問包B時,必須采用限定性名,比如B::Integer。當包A引入了包B以后,則可以采用非限定性名稱進行訪問,此時A可以直接用Integer來訪問包B中的Integer。對于包的引入,其如同C++語言中的usingnamespace關鍵字,也如同于Java語言中的import關鍵字。

圖1是UML包圖中包引入在UML規范中的語法定義,從圖中你可以看出它包含一個importingNamespace和一個importedPackage,其意思是將importedPackage引入到importingNamespace。此外,我們可以看出PackageImport“是一個”直接關系。還需注意的是PackageImport包含一個visibility屬性用于表示包引入關系的可見性。在UML規范中定義了這一屬性值可以是public或是private。其含義是:如果一個包引入可見性是public,那么,被引入的包可以被命名空間之外的其它元素訪問;如果一個包引入可見性是private,那么被引入的包只能被命名空間中的元素訪問,而命名空間外的元素不能訪問。這與我們編成語言中的public和private的含意是一樣的。

UML包圖中包引入和包合并怎么用

圖1包引入在UML規范中的語法

圖2是包引入的一個例子,其中也示例了包引入關系在UML中的表示方法。可以看出包引入關系與依賴關系的表示方法是相同的。在包引入的表示方法中,帶有箭頭一側的包被引入到沒有箭頭一側的包中,這可以從圖1中的語法定義看出,因為importedPackage是target。你可能要問,圖1中只定義了包引入是將一個包引入到命名空間中,但圖2中卻是將包引入到包中,這樣對嗎?還記得《UML包圖中的包和命名空間》中所提及的包在UML中的語法定義嗎?因為包是從命令空間繼承來的,也就是說包“是一個”命名空間!

UML包圖中包引入和包合并怎么用

圖2包引入的一個例子

前面所說的包引入的可見性分為public和private,在UML中分別采用不通的圖型(sterotype)來區分。public對應<<import>>圖型,而private對應<<access>>圖型,這一點在圖2中也有示例。從圖2中我們可以看出,ShoppingCart包引入了Auxiliary包和Types包,當引入了以后在ShoppingCart包中可以直接采用非限定性名對兩個引入包中的元素進行訪問。此外,Types包還可以被ShoppingCart包之外的元素訪問,因為其引入關系的可見性是public,也就是說WebShop包引入了ShoppingCart包后,也可以直接采用非限定性名訪問Types包中的元素。由于Auxiliary包引入到ShoppingCart包的可見性是private,所以,雖然WebShop引入了ShoppingCart包,但并不能采用非限定性名訪問Auxiliary包。當然,WebShop包仍然采用Auxiliary::xyz這樣的限定性名訪問Auxiliary包中的元素。我們還可以理解為,<<import>>關系是可傳遞的,但<<access>>關系則不可以。

2包合并

UML包圖中包合并(packagemerge,參見USS的7.3.40節)定義了一個包的內容是如何被另一個包擴展的關系。包合并關系表示將兩個包的內容合并在一起從而得到一個新的合并包,當然,這種合并關系也隱含了對被合并包的擴展。圖3列出了UML規范中包合并關系的語法。

UML包圖中包引入和包合并怎么用

圖3UML規范中可打包元素的語法

圖4是使用包合并的一個例子,包合并關系在UML圖中的表示與依賴關系是一樣的。從圖3中的語法可以看出箭頭(target)所指向的包是被合并的包。圖4中我們能看到三個包,即Merged包、Merging包和Importing包。我們還可以看到Merging包將Merged包合并了,以及Importing包引入了Merging包。三個包中都有一個A類,這里的A類只是為了說明方便,其實,包中可以有其它的元素,那三個包中的A類在合并前后有什么關系呢?

UML包圖中包引入和包合并怎么用

圖4包合并的一個例子

為了方便理解這一問題,請看圖5。UML包圖的包合并中的加號表示的是合并這個操作,等號的左邊表示合并之前,而等號的右邊表示合并之后。在合并之前,我們可以看出Merged::A和Merging::A分別是一個扇形,但合并之后Merging::A就變成了一個圓,因為Merged包被合并進了Merging包,這個合并操作是站在Merging包的角度來看的。從Merged包的角度來看,不論是合并前或是后,都是一個扇形,這還是比較好理解的,因為它是獨立的,并沒有合并其它的包。對于Merging包我們還可以這樣理解,在合并之前,無論是從包里頭看還是從包外頭看都是一個扇形。但在合并之后,從里面看來A還是一個扇形,但從外面來看卻是一個圓。

UML包圖中包引入和包合并怎么用

圖5

有了上面對于包合并的理解后,我們就不難理解Importing包中的A了,顯然它是一個圓,是從Merging包的外部來看引入的A。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“UML包圖中包引入和包合并怎么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

uml
AI

曲靖市| 肥西县| 墨竹工卡县| 海城市| 依安县| 曲周县| 顺平县| 隆安县| 阳曲县| 绵竹市| 保亭| 广河县| 永嘉县| 永昌县| 平昌县| 黑龙江省| 天全县| 珲春市| 始兴县| 昌吉市| 定南县| 出国| 如东县| 金阳县| 定远县| 宜君县| 泽州县| 蓬莱市| 将乐县| 漾濞| 双江| 瓮安县| 定陶县| 鹿邑县| 建始县| 博罗县| 长春市| 衡山县| 深泽县| 广丰县| 陇南市|