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年12月10日
  • 如何通过串口控制树莓派

    技术如何通过串口控制树莓派这篇文章给大家分享的是有关如何通过串口控制树莓派的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。通过串口控制树莓派需求在没有网络,没用键盘,没有显示器的情况下,控制树莓

    攻略 2021年11月20日
  • Java多线程概念知识点有哪些

    技术Java多线程概念知识点有哪些这篇文章主要介绍“Java多线程概念知识点有哪些”,在日常操作中,相信很多人在Java多线程概念知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”

    攻略 2021年11月24日
  • 如何掌握Quartz.net分布式定时任务的姿势

    技术如何掌握Quartz.net分布式定时任务的姿势这篇文章给大家介绍如何掌握Quartz.net分布式定时任务的姿势,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。引言长话短说,今天聊一聊分布式定时

    攻略 2021年11月18日
  • mysql数据库的类型是什么

    技术mysql数据库的类型是什么本篇内容介绍了“mysql数据库的类型是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成

    攻略 2021年12月2日
  • Dell R730如何安装Ubuntu 18.04

    技术Dell R730如何安装Ubuntu 18.04小编给大家分享一下Dell R730如何安装Ubuntu 18.04,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下

    攻略 2021年11月15日