包图是UML中用类似于文件夹的符号表示的模型元素的组合,系统中的每个元素都只能为一个包所有,一个包可嵌套在另一个包中,使用包图可将相关元素归入一个系统,一个包中包含附属包、图表或单个元素。简单的来说,我们可以直接将包理解为命名空间,文件夹,是用来组织图形的封装,包图可以用来表述功能组命名空间的组织层次

那么为什么会出现“包”这个概念呢?我们知道,在面向对象软件开发的视角中,类显然是构件整个系统的基本构造块,但是对于庞大的应用系统而言,其包含的类不计其数,再加上类之间阡陌交通的关联关系、多重性等,必然大大超出我们可以处理的复杂度,所以“包”由此而来。今天我们一起来学习一下包图的相关知识,首先,我们来看一下包图的主要内容:

对包图的主要内容有了一个整体的感知,接下来,我们一起来看看包图的简介以及包与包之间有着怎样微妙的关系呢:

我们来看看包与包之间的关系,首先,我们来看依赖关系,如下图

我们看看上述的图例,首先包与包之间的依赖关系跟我们平常所说的类的继承关系是不同的,包括包的访问域不能继承,用于在一个包中,引入另一个包输出的元素,因此A依赖B,包A引入包B中的B方法,B这里的访问权限是公共的,A中的方法是保护的。根据已学的知识,我们知道包和包之间也存在泛化关系,包与包之间的泛化关系,是体现在类与类的关系上,包之间不能画泛化关系,画依赖即可。接下来一张图,我们一起来了解一下包的访问限制:

我们知道了类图的基本概念,以及类图之间的关系,那么包图究竟有着怎样的目的,以及画包图又具有着怎样的准则呢:

了解了包图的目的以及准则,我们再来一起学习一下包图存在的问题以及包图的解决方法:

包图的基本知识就介绍到这里,现在以机房收费系统为例,在具体的系统当中,我们的包图又是如何得到应用的呢:

包是用来封装元素的通用机制,包不仅有助于建模人员组织模型中的元素,而且也使建模人员能控制对包中内容的访问,接下来我们以订单,结算、顾客、送货为例,画出一个详细的包的示例图:

双向箭头表示的意思,两个包之间互相依赖,箭头指向被依赖的一方,比如说订单依赖结算,订单和顾客相互依赖等等。初次接触包图,我用一个小小的例子这样来理解的,如下:

比如说,现在我们要搭一个小狗的窝,一个房屋,还有一个大厦,首先,小狗的窝并不复杂,有四面墙,其中一面墙上有一个能让小狗穿过的洞,还有一个顶棚,在搭小狗窝的时候,我们只需要一小堆木材,即可。再次,我们来看房屋,房屋比较复杂,墙、天花板和地板组成了较大的抽象体,称之为房间。甚至可以把这些房间组成更大的组块,如公共区、卧室区、工作区等 ,这些较大的组可能并不表明他们本身就是与物理房屋有关系的任何事物,而可能只是给出的在逻辑上有关的屋中一些房间的名称,当谈论怎样使用这栋房屋时就使用这些名称。最后我们再来看看大厦,大厦相对于小狗窝和房屋来说较复杂,大厦不仅有墙,天花板和地板等基本结构体,而且还有公共区,零售厅和办公区等较大的组块,这样的组块甚至还可能合并成更大的组块,例如出租区和大厦服务区。这些组块与最终的大厦本身无关,而只是用来组织大厦设计的产物。

所有的系统都是以这种方法组织的,事实上,理解复杂系统的唯一方法就是把抽象组织成更大的组,大多数适度规模的组块如房屋其本身都是像类那样的抽象。再者,如我们上面所说的零售厅,她是纯概念性的,没有实际的实例,他们不是实际系统中明确的对象,而仅仅表示系统本身的视图。

在UML中,我们把组织模型的组块称之为包,一如我们上面所说的例子当中,大厦所包含墙、天花板、地板、公共区、零售厅、办公区等。包是用来把元素组织成组的通用机制,包有助于组织模型中的元素,使得更容易理解。UML之旅,未完,待续......

UML之包图的更多相关文章

  1. [UML]UML系列——包图Package

    系列文章 [UML]UML系列——用例图Use Case       [UML]UML系列——用例图中的各种关系(include.extend)       [UML]UML系列——类图Class   ...

  2. UML:包图

    什么是包图?包图是对UML图进行“打包”,按照你期望的方式进行组织的一种图.包图用于展示宏观上的内容.往往利用包图对类进行“打包”,但包图其实可以对任何UML图进行“打包”.包图是逻辑上的概念,你可以 ...

  3. UML从需求到实现----包图

    上接:UML中图出现顺序 上回讲到用例图,UML中各个图之间的关系.接着根据UML建模中图出现的顺序来总结包图. 用例图确定以后.用户的需求基本上就确定了.接下来要根据用户的要求去设计系统.建模的顺序 ...

  4. [UML]UML系列——时序图(顺序图)sequence diagram

    系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...

  5. [UML]UML系列——活动图activity diagram

    系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...

  6. [UML]UML系列——状态机图statechart diagram

    系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...

  7. 包图Package

    [UML]UML系列——包图Package 系列文章 [UML]UML系列——用例图Use Case       [UML]UML系列——用例图中的各种关系(include.extend)       ...

  8. UML 用例图、顺序图、状态图、类图、包图、协作图、流程图

    ​用例图.顺序图.状态图.类图.包图.协作图 面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling La ...

  9. UML精粹4 - 对象图,包图,部署图,用例

    对象图object diagram 对象图是某个时间点上的对象在系统中的快照,也经常被称为实例图.一般在展示组合对象结构时比较有用.例如 组合结构的类图 一个时刻的对象图 包图package diag ...

随机推荐

  1. Android监听手机网络变化

    Android监听手机网络变化 手机网络状态发生变化会发送广播,利用广播接收者,监听手机网络变化 效果图 注册广播接收者 <?xml version="1.0" encodi ...

  2. 剑指Offer——“你最大的缺点是什么”回答技巧及范例

    剑指Offer--"你最大的缺点是什么"回答技巧及范例   问题分析:认识自己的缺点是一个巨大的优点, 当HR问到你缺点的时候, 你的机会来了, 请快展示你的自知之明吧!你想把优点 ...

  3. ROS机器人程序设计(原书第2版)补充资料 (肆) 第四章 在ROS下使用传感器和执行器

    ROS机器人程序设计(原书第2版)补充资料 (肆) 第四章 在ROS使用传感器和执行器 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 第四 ...

  4. Android简易实战教程--第三十二话《使用Lrucache和NetworkImageView加载图片》

    转载本专栏每一篇博客请注明转载出处地址,尊重原创.此博客转载链接地址:小杨的博客    http://blog.csdn.net/qq_32059827/article/details/5279131 ...

  5. RxJava(八)concat符操作处理多数据源

    欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/51568562 本文出自:[余志强的博客] 一.concat操作符概述 ...

  6. Android应用UI设计流程

    Android应用UI设计流程 设计原理 1.在移动设计中,使用环境是最关键的因素.原型设计方法必须考虑尺寸因素 2.用户测试必须涵盖运动.声音和多点触控等方面: 进行移动设计和测试时,请将你知道的有 ...

  7. [Vim]vim使用笔记--分屏操作

    我们经常要打开多个文件,不同的窗口操作多个文件,分屏就很好用了. 1 命令模式下: :new,新建文件并分屏, 快捷键,Ctrl+W,然后马上按n键 :spilt 水平分屏,将当前屏分为两个,水平的. ...

  8. FFmpeg源代码简单分析:libavdevice的avdevice_register_all()

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

  9. 使用 symbolicatecrash 解析崩溃堆栈

    一.先引用一位牛人的博贴: xcode解crashlog工具symbolicatecrash的使用 在xocde编译app的时候会同时生成一个以dsym(该app对应的符号表)作为后缀的文件,每个ap ...

  10. Android View框架总结(一)

    View和Activity的区别 View有哪些? ViewGroup是什么? 为什么Google产生ViewGroup? View的层级结构是什么? View的onMeasure()/onLayou ...