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

技术UML包图中包引入和包合并怎么用这篇文章主要介绍了UML包图中包引入和包合并怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。UML包图中的包引入和

本文主要介绍如何在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规范中的包的语法定义。从图中,您可以看到它包含一个导入命名空间和一个导入包,这意味着将导入包导入到导入命名空间中。此外,我们可以看到PackageImport是直接关系。还应注意,PackageImport包含一个可见性属性,用于指示包介绍关系的可见性。UML规范定义了这个属性值可以是公共的,也可以是私有的。这意味着如果包的可见性是公共的,那么引入的包可以被命名空间之外的其他元素访问;如果包的导入可见性是私有的,则导入的包只能由命名空间中的元素访问,但命名空间之外的元素不能。这和我们语言中的公私含义是一样的。

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

图1 UML规范中由包引入的语法

图2是包介绍的一个例子,也说明了包介绍关系在UML中的表示。可以看出,包引入关系和依赖关系的表示方法是相同的。在包引入的表示方法中,有箭头端的包被引入到没有箭头端的包中,这可以从图1中的语法定义看出,因为importedPackage是目标。您可能会问,在图1中,只有包引入被定义为将包引入名称空间,但是在图2中,包被引入包中。是这样吗?还记得《UML包图中的包和命名空间》中提到的UML中包的语法定义吗?因为包是从命令空间继承的,也就是说,包是一个命名空间!

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

图2包装介绍示例

前面提到的包引入的可见性分为公共的和私有的,它们在UML中通过立体类型来区分。公共对应于导入模式,而私有对应于访问模式,如图2所示。从图2中,我们可以看到ShoppingCart包引入了辅助包和类型包。引入后,引入的两个包中的元素可以通过ShoppingCart包中的非限定名称直接访问。另外,Types包也可以被ShoppingCart包以外的元素访问,因为它引入的关系的可见性是公开的,这意味着在将ShoppingCart包引入WebShop包之后,Types包中的元素也可以被非限定名称直接访问。因为引入到ShoppingCart包中的辅助包的可见性是私有的,虽然WebShop引入了ShoppingCart包,但是不能通过非限定名称访问辅助包。当然,网络商店包仍然使用辅助:3360 XYZ的限定名来访问辅助包中的元素。我们还可以理解,导入关系是可传递的,但访问关系不是。

2包合并

UML包图中的Packagemerge(参见USS的7.3.40节)定义了一个包的内容如何被另一个包扩展的关系。包合并关系意味着合并两个包的内容以获得一个新的合并包。当然,这种合并关系也意味着合并包的扩展。图3列出了UML规范中包合并关系的语法。

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

图3 3UML规范中可打包元素的语法

图4是使用包合并的例子。UML图中包合并关系的表示与依赖关系的表示相同。从图3中的语法可以看出,箭头(目标)指向的包是合并的包。在图4中,我们可以看到三个包,即合并包、合并包和导入包。我们还可以看到合并包合并了合并包,导入包引入了合并包。三

个包中都有一个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包图中包引入和包合并怎么用”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/133533.html

(0)

相关推荐

  • 应该如何选择虚拟主机

    技术应该如何选择虚拟主机这篇文章主要为大家展示了“应该如何选择虚拟主机”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“应该如何选择虚拟主机”这篇文章吧。虚拟主机是在网络服务器上

    攻略 2021年11月1日
  • 怎么实现MySQL中的半同步复制

    技术怎么实现MySQL中的半同步复制这篇文章给大家介绍怎么实现MySQL中的半同步复制,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。关于MySQL的复制架构,大体有下面三种方式,异步,全同步复制,半

    攻略 2021年11月16日
  • oracle 11g(oracle 11g 安装)

    技术orcle 11g rac crs状态正常但节点2数据库未启动怎么办小编给大家分享一下orcle 11g rac crs状态正常但节点2数据库未启动怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,

    攻略 2021年12月18日
  • tr是哪个国家,世界最快火车的排名是怎样的

    技术tr是哪个国家,世界最快火车的排名是怎样的全球最快的火车都是实验性的速度tr是哪个国家。高铁实验速度这里声明一下,这里列出来都是在线路中,测试的实验速度。也就是满足了机车是在线路中实际跑的状态,这个线路可能是实验线路

    生活 2021年10月30日
  • css如何设置div的最大高度

    技术css如何设置div的最大高度本篇内容介绍了“css如何设置div的最大高度”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有

    攻略 2021年11月9日
  • 如何将Ethereum -web3.js引入weex

    技术怎么在weex 中的引入Ethereum -web3.js怎么在weex 中的引入Ethereum -web3.js ,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以

    攻略 2021年12月14日