UML之包图
包图是UML中用类似于文件夹的符号表示的模型元素的组合,系统中的每个元素都只能为一个包所有,一个包可嵌套在另一个包中,使用包图可将相关元素归入一个系统,一个包中包含附属包、图表或单个元素。简单的来说,我们可以直接将包理解为命名空间,文件夹,是用来组织图形的封装,包图可以用来表述功能组命名空间的组织层次
那么为什么会出现“包”这个概念呢?我们知道,在面向对象软件开发的视角中,类显然是构件整个系统的基本构造块,但是对于庞大的应用系统而言,其包含的类不计其数,再加上类之间阡陌交通的关联关系、多重性等,必然大大超出我们可以处理的复杂度,所以“包”由此而来。今天我们一起来学习一下包图的相关知识,首先,我们来看一下包图的主要内容:
对包图的主要内容有了一个整体的感知,接下来,我们一起来看看包图的简介以及包与包之间有着怎样微妙的关系呢:
我们来看看包与包之间的关系,首先,我们来看依赖关系,如下图
我们看看上述的图例,首先包与包之间的依赖关系跟我们平常所说的类的继承关系是不同的,包括包的访问域不能继承,用于在一个包中,引入另一个包输出的元素,因此A依赖B,包A引入包B中的B方法,B这里的访问权限是公共的,A中的方法是保护的。根据已学的知识,我们知道包和包之间也存在泛化关系,包与包之间的泛化关系,是体现在类与类的关系上,包之间不能画泛化关系,画依赖即可。接下来一张图,我们一起来了解一下包的访问限制:
我们知道了类图的基本概念,以及类图之间的关系,那么包图究竟有着怎样的目的,以及画包图又具有着怎样的准则呢:
了解了包图的目的以及准则,我们再来一起学习一下包图存在的问题以及包图的解决方法:
包图的基本知识就介绍到这里,现在以机房收费系统为例,在具体的系统当中,我们的包图又是如何得到应用的呢:
包是用来封装元素的通用机制,包不仅有助于建模人员组织模型中的元素,而且也使建模人员能控制对包中内容的访问,接下来我们以订单,结算、顾客、送货为例,画出一个详细的包的示例图:
双向箭头表示的意思,两个包之间互相依赖,箭头指向被依赖的一方,比如说订单依赖结算,订单和顾客相互依赖等等。初次接触包图,我用一个小小的例子这样来理解的,如下:
比如说,现在我们要搭一个小狗的窝,一个房屋,还有一个大厦,首先,小狗的窝并不复杂,有四面墙,其中一面墙上有一个能让小狗穿过的洞,还有一个顶棚,在搭小狗窝的时候,我们只需要一小堆木材,即可。再次,我们来看房屋,房屋比较复杂,墙、天花板和地板组成了较大的抽象体,称之为房间。甚至可以把这些房间组成更大的组块,如公共区、卧室区、工作区等 ,这些较大的组可能并不表明他们本身就是与物理房屋有关系的任何事物,而可能只是给出的在逻辑上有关的屋中一些房间的名称,当谈论怎样使用这栋房屋时就使用这些名称。最后我们再来看看大厦,大厦相对于小狗窝和房屋来说较复杂,大厦不仅有墙,天花板和地板等基本结构体,而且还有公共区,零售厅和办公区等较大的组块,这样的组块甚至还可能合并成更大的组块,例如出租区和大厦服务区。这些组块与最终的大厦本身无关,而只是用来组织大厦设计的产物。
所有的系统都是以这种方法组织的,事实上,理解复杂系统的唯一方法就是把抽象组织成更大的组,大多数适度规模的组块如房屋其本身都是像类那样的抽象。再者,如我们上面所说的零售厅,她是纯概念性的,没有实际的实例,他们不是实际系统中明确的对象,而仅仅表示系统本身的视图。
在UML中,我们把组织模型的组块称之为包,一如我们上面所说的例子当中,大厦所包含墙、天花板、地板、公共区、零售厅、办公区等。包是用来把元素组织成组的通用机制,包有助于组织模型中的元素,使得更容易理解。UML之旅,未完,待续......
UML之包图的更多相关文章
- [UML]UML系列——包图Package
系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class ...
- UML:包图
什么是包图?包图是对UML图进行“打包”,按照你期望的方式进行组织的一种图.包图用于展示宏观上的内容.往往利用包图对类进行“打包”,但包图其实可以对任何UML图进行“打包”.包图是逻辑上的概念,你可以 ...
- UML从需求到实现----包图
上接:UML中图出现顺序 上回讲到用例图,UML中各个图之间的关系.接着根据UML建模中图出现的顺序来总结包图. 用例图确定以后.用户的需求基本上就确定了.接下来要根据用户的要求去设计系统.建模的顺序 ...
- [UML]UML系列——时序图(顺序图)sequence diagram
系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...
- [UML]UML系列——活动图activity diagram
系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...
- [UML]UML系列——状态机图statechart diagram
系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...
- 包图Package
[UML]UML系列——包图Package 系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) ...
- UML 用例图、顺序图、状态图、类图、包图、协作图、流程图
用例图.顺序图.状态图.类图.包图.协作图 面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling La ...
- UML精粹4 - 对象图,包图,部署图,用例
对象图object diagram 对象图是某个时间点上的对象在系统中的快照,也经常被称为实例图.一般在展示组合对象结构时比较有用.例如 组合结构的类图 一个时刻的对象图 包图package diag ...
随机推荐
- 项目部署、配置、查错常用到的Linux命令
一.常用命令 ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all) ll 会列出该文件下的所有文件信息,包括隐藏的文件的文件详细信息, ...
- Dynamics CRM2016 Web Api之时间字段值的处理
本篇又是一次来谈到CRM中时间字段的问题,那这次要谈的是在引用web api过程中写代码上的注意事项,常用的代码场景即JS和c#. 先来看下js,从下图中可以看到,我直接将new Date()赋值给时 ...
- (Java)微信之个人公众账号开发(一)——进入开发者模式
本篇文章将教大家如何建立微信个人公众账号,(注意:后台全部是用javaweb相关技术开发),大家知道,现在微信公众账号分服务号和订阅号,现在我要讲的主要是个人微信公众账号的建立以及后台的开发,个人公众 ...
- Linux 高性能服务器编程——TCP/IP协议族
1 TCP/IP协议族体系结构 数据链路层: 职责:实现网卡接口的网络驱动程序,一处理数据在物理媒介(如以太网.令牌环等)上的传输. 常用协议:ARP协议(地址解析协议),RARP协议 ...
- 设置 NSZombieEnabled 定位 EXC_BAD_ACCESS 错误
我们做 iOS 程序开发时经常用遇到 EXC_BAD_ACCESS 错误导致 Crash,出现这种错误时一般 Xcode 不会给我们太多的信息来定位错误来源,只是在应用 Delegate 上留下像 T ...
- 通过一个例子了解MapReduce
写MapReduce程序的步骤: 把问题转化为MapReduce模型: 设置运行参数: 写map类: 写reduce类: 例子:统计单词个数 Map的任务是将内容用" "分开,然后 ...
- Java学习之运算符使用注意的问题
运算符使用注意的问题 运算符(掌握) (1)算术运算符 A:+,-,*,/,%,++,-- B:+的用法 a:加法 b:正号 c:字符串连接符 C:/和%的区别 数据做除法操作的时候,/取得是商,%取 ...
- FORM触发器
FORM级触发器 PRE-FORM该触发器是在用户双击功能后,进入form前 WHEN-NEW-FORM-INSTANCE该触发器是在用户一进入form时执行 WHEN-FORM-NAVIGAT ...
- 如何查看App provision profile文件中的钥匙链访问组名称
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们因为某些原因希望安全的在多个App中共享一些信息,我们可以 ...
- Java并发框架——AQS之阻塞与唤醒
根据前面的线程阻塞与唤醒小节知道,目前在Java语言层面能实现阻塞唤醒的方式一共有三种:suspend与resume组合.wait与notify组合.park与unpark组合.其中suspend与r ...