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)

相关推荐

  • 舍瑟而作,子路曾皙冉有公西华侍坐实词

    技术舍瑟而作,子路曾皙冉有公西华侍坐实词《子路曾皙冉有公西华侍坐》里面的重点实词如下舍瑟而作:
    1、居则曰:居,闲居,平时在家  
    2、摄乎大国之间:摄,夹、迫近   
    3、加之以师旅:加,加到……上   
    4、比及三年

    生活 2021年10月30日
  • 微信免单,周末微信支付怎么怎么能够免单

    技术微信免单,周末微信支付怎么怎么能够免单微信支付在春节期间推出摇一摇赢免单活动,意思就是如果你用微信支付就有机会获得免单奖励的,比如你在网上用微信支付买了一个月的qq音乐会员8元,用微信支付后会出现一个摇一摇获得免单机

    生活 2021年10月20日
  • View如何实现非中心点旋转

    技术View如何实现非中心点旋转这篇文章主要为大家展示了“View如何实现非中心点旋转”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“View如何实现非中心点旋转”这篇文章吧。

    攻略 2021年12月3日
  • redis基础配置的示例分析

    技术redis基础配置的示例分析这篇文章将为大家详细讲解有关redis基础配置的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Redis的ms主从集群作用:1、主从备份防止宕机

    攻略 2021年11月15日
  • css如何清除背景图片重复

    技术css如何清除背景图片重复这篇文章主要为大家展示了“css如何清除背景图片重复”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css如何清除背景图片重复”这篇文章吧。

    攻略 2021年11月14日
  • 淘宝怎么评论,淘宝里怎么找到自己的评价

    技术淘宝怎么评论,淘宝里怎么找到自己的评价步骤一首先进入手机淘宝app步骤二进入淘宝页面登录自己的账号后淘宝怎么评论,点击“我的淘宝”步骤三在必选工具中点击“查看全部工具”步骤四在互动参与中选择“我的评价”步骤五在跳出的

    生活 2021年10月29日