版权声明
- 本文原创作者:谷哥的小弟
- 作者博客地址:http://blog.csdn.net/lfdfhl
- 本文参考资料:《UML面向对象分析、建模与设计(第2版)》吕云翔,赵天宇 著
包图概述
包图(package diagram)是用来描述模型中的包和所包含元素的组织方式的图,是维护和控制系统总体结构的重要内容。包图通过对图中的各个包元素以及包之间关系的描述展示出系统的模块以及模块之间的依赖关系。
包图能够组织许多 UML 中的元素,其最常见的用途是用来组织用例图和类图。
核心知识点
请务必熟悉并掌握以下核心知识点。
包图中的主要组成元素包括包以及包的依赖关系。
包的概念
包(package)是用于把模型本身组织成层次结构的通用机制,它不能执行。包是一个组织模型的组块,是一种将设计元素分组组织的通用机制。包在图形上被表示为一个文件夹的形状,即一个大矩形的左上角附有一个小矩形,图形上显示有包名另外,也可以将包所包含的元素显示在上面。
包名
每个包都必须有一个与其他包相区别的名称。
包中的元素
包本身是一个容器,可以拥有很多元素,这些元素被称作该包的内部元素。包中可以容纳各种高级的模型元素,如类和类的关系、状态机、用例图、交互、协作等,甚至是一个完整的 UML图。
包的依赖关系
包元素之间最常见的关系就是依赖关系。包之间的依赖关系实际上是从一个更高的层次来描述包内某些元素之间的依赖关系。也就是说,如果不同包中任何元素之间存在着一个依赖,则两个包之间就存在着依赖关系。
包的依赖关系表示为一条带箭头的虚线。
包的引入
包的依赖关系同样可以通过添加构造型来使其语义更加明确。最常见的包依赖关系的构造型就是引入,表示为<< import >>。引入指的是允许一个包(客户包)中的元素可以自由访问另一个包(提供者包)中的公有元素。引人是单向的,其表示法的箭头从引入方指向输出方。在引入的过程中,客户包把提供者包的包名添加到自己的命名空间中,从而使客户包中可以使用引入元素的简单名来引用该元素。
例如,订单Ordering引入了产品Products包和价格Pricing包。Ordering是客户包,Products和Pricing是提供者。
航空购票系统包图
在此,继续使用航空购票系统演示包图的绘制方法。
用例图现状
目前,在航空购票系统中用例图如下:
元素分包
请选中用例图,然后选择添加包;图示如下:
点击确定后,图示如下:
请将所有参与者拖动至Actors包中;图示如下:
类似地,建立登录注册包并将登录用例和注册用例拖动至该包中;图示如下:
类似地,建立核心业务包并将查看行程用例、查询航班用例、购买机票用例、退订机票用例拖动至该包中;图示如下:
类似地,建立后台操作包并将设定航班安排用例拖动至该包中;图示如下:
类似地,建立信用评价包并将修改信用等级用例、检查信用等级用例拖动至该包中;图示如下:
最后我们做一个小调整,将Actors包下的用例图拖出,放至用例图下;图示如下:
至此,完成了元素分包工作。
创建包图
在用例图文件夹上右键选择添加图再选择UML Structural并选择Package;图示如下:
点击确定后,图示如下:
请将拖动各个包至绘图区,松开鼠标时请选择包元素;图示如下:
添加包中的关系
对于创建好的包图,可依据实际情况添加依赖和引入关系。利用Class Relationships 中的Associate添加关系,并在松开鼠标时选择Import;图示如下:
至此,完成了航空购票系统包图的绘制。