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)

相关推荐

  • Java的学习方法有哪些

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

    攻略 2021年11月6日
  • WPF开发随笔收录-自定义图标XamlIcon

    技术WPF开发随笔收录-自定义图标XamlIcon WPF开发随笔收录-自定义图标XamlIcon一、前言
    1、在以前自学的过程中,软件需要使用到图标的时候,总是第一个想法是下载一个图片来充当图标使用,

    礼包 2021年12月22日
  • 有志不在年高无志空长百岁,无志空活百岁上一句是什么

    技术有志不在年高无志空长百岁,无志空活百岁上一句是什么有志不在年高有志不在年高无志空长百岁,无志空活百岁出自《甘罗十二为使臣》 【解释】 意思是指只要有远大志向,就算年纪小也没事,一个没有远大志向的人,即便活到很大的岁数

    生活 2021年10月27日
  • 通过抓包实现Python模拟登陆各网站的原理分析是怎样的

    技术通过抓包实现Python模拟登陆各网站的原理分析是怎样的这篇文章将为大家详细讲解有关通过抓包实现Python模拟登陆各网站的原理分析是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相

    攻略 2021年12月4日
  • 0元免费抖音刷粉-可以刷抖音赞吗

    技术0元免费抖音刷粉-可以刷抖音赞吗0元免费抖音刷粉-可以刷抖音赞吗
    一定要持续更新内容,长期坚持,不断输出价值和塑造你的影响力,这样粉丝的粘度才会高,他们会很期待看到你的新作品。你看那些粉丝上千万的大号,他们就一直保持

    测评 2021年11月13日
  • 关于Tomcat的面试题有哪些

    技术关于Tomcat的面试题有哪些本篇内容主要讲解“关于Tomcat的面试题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“关于Tomcat的面试题有哪些”吧!一、什么是

    攻略 2021年11月5日