目录
第1章 UML概述
1.1 什么是UML?
1.2 为什么要用UML?
1.3 UML图有哪些?
1.4 UML图概览
第2章 UML图示
2.1 静态图、结构图 - 什么是类图?
泛化(Generalization)
实现(Realization)
关联(Association)
聚合(Aggregation)
组合(Composition)
依赖(Dependency)
2.2 静态图、结构图 - 什么是组件图?
2.3 静态图、结构图 - 什么是部署图?
2.4 静态图、结构图 - 什么是对象图?
2.5 静态图、结构图 - 什么是包图?
2.6 静态图、结构图 - 什么是组合结构图?
2.7 静态图、结构图 - 什么是组件图?
2.8 动态图、行为图 - 什么是用例图?
2.9 动态图、行为图 - 什么是活动图、流程图?
2.9.1 基本活动图
2.9.2 带泳道的活动图
2.9.3 带对象流的活动图
2.10 动态图、行为图 - 什么是状态机转换图?
2.11 动态图、行为图 - 什么是消息序列图? Message Sequence(序列)
2.12 动态图、行为图 - 什么是协作图、通信图?(Collaboration Diagrams):
2.13 动态图、行为图 - 什么是交互概览图?
2.14 动态图、行为图 - 什么是状态时序图?(新增)
UML
是Unified Model Language
的缩写,中文是统一建模语言
,是由一整套图表组成的标准化建模语言。
通过使用UML使得在软件开发之前, 对整个软件设计有更好的可读性,可理解性,从而降低开发风险。同时,也能方便各个开发人员之间的交流。
UML提供了极富表达能力的建模语言,可以让软件开发过程中的不同人员分别得到自己感兴趣的信息。
Page-Jones
在《Fundamental Object-Oriented Design in UML》 一书中总结了UML的主要目的,如下:
- 为用户提供现成的、有表现力的可视化建模语言,以便他们开发和交换有意义的模型。
- 为核心概念提供可扩展性 (Extensibility) 和特殊化 (Specialization) 机制。
- 独立于特定的编程语言和开发过程。
- 为了解建模语言提供一个正式的基础。
- 鼓励面向对象工具市场的发展。
- 支持更高层次的开发概念,如协作,框架,模式和组件。
- 整合最佳的工作方法 (Best Practices)。
在类图中,常见的有以下几种关系。
自己买的车,想什么时候开就开。但是车是车,人是人,没有整体与部分的关系。
电脑有键盘才能输入信息,电脑是整体,键盘是部分,键盘也可以离开电脑,单纯的拿去敲。所以是聚合。
鸟是整体,翅膀是部分。鸟死了,翅膀也就不能飞了。所以是组合。我们再看一下,下面的一组经典的聚合组合关系的例子。
一个公司拥有多个部门,公司和部门之间是组合关系,公司破产了,部门就不复存在了。部门和员工是聚合关系,部门被裁掉,员工就换下家了。
老司机只管开车,车是谁的不重要,给什么车开什么车。
订单系统组件依赖于客户资源库和库存系统组件。中间的虚线箭头表示依赖关系。另外两个符号,表示组件连接器,一个提供接口,一个需要接口。
图中简单的表示,不同机器上面部署的不同软件。
描述了系统运行时进行处理的结点以及在结点上活动的构件的配置。强调了物理设备以及之间的连接关系。
部署模型的目的:
描述一个具体应用的主要部署结构,通过对各种硬件,在硬件中的软件以及各种连接协议的显示,可以很好的描述系统是如何部署的;平衡系统运行时的计算资源分布;可以通过连接描述组织的硬件网络结构或者是嵌入式系统等具有多种硬件和软件相关的系统运行模型。
图中就是描述的,某时间点bat
这个公司有一个研发部,一个销售部,两个部门只有一个人iisheng
。
Web Shopping
依赖Payment
Web Shopping
合并了Shopping Cart
就拥有了Shopping Cart
的功能import
之后,就可以直接使用import
包中的类了。 图中描述了Car
是由车轴连接着的两个前面轮子、两个后面轮子,和引擎组合的。
图中我们定义了一个简易的EJB
的概要图。Bean
是从Component
扩展来的。Entity Bean
和Session Bean
继承了Bean
。EJB
拥有Remote
和Home
接口,和JAR
包。
构件图(Component Diagrams):
构件图是用来表示系统中构件与构件之间,类或接口与构件之间的关系图。其中,构建图之间的关系表现为依赖关系,定义的类或接口与类之间的关系表现为依赖关系或实现关系。
用例图中包含以下三种关系:
图中简单描述了,从开始到登录到查看订单列表,或者登录失败直接结束。
泳道表明每个活动是由哪些人或哪些部门负责完成。
用活动图描述某个对象时,可以把涉及到的对象放置在活动图中,并用一个依赖将其连接到进行创建、修改和撤销的动作状态或者活动状态上,对象的这种使用方法就构成了对象流。对象流用带有箭头的虚线表示。
图中描述了,门在其生命周期内所经历的状态。
图中展示的是支付宝条码支付场景的序列图。其中,loop
是循环,alt
是选择,序列图的其他关系这里就不介绍了。
(1) 生命线
生命线名称可带下划线。当使用下划线时,意味着序列图中的生命线代表一个类的特定实例。
(2) 同步消息
同步等待消息
(3) 异步消息
异步发送消息,不需等待
(4) 注释
(5) 约束条件
备注:所谓协作,就是与外界通信。与消息序列图可以相互转换!!!
图中展示了一个线上书店的通讯图,方框和小人表示生命线,不同生命线之间可以传递消息,消息前面的数字可以表达序列顺序。
交互概览图类似于活动图,因为它们都可视化一系列活动。
不同之处在于,对于交互概述,每个单独的活动都被描绘为可以包含嵌套交互图的框架。 这使得交互概述图对于“解构复杂场景非常有用,否则需要将多个if-then-else路径图示为单个序列图” [1] 。
交互概览图的其他符号元素与活动图相同。 这些包括初始,最终,决策,合并,分支和连接节点。 交互概述图中的两个新元素是“交互事件”和“交互元素”。
图中表示一个调度系统的交互概览图,跟活动图很像。
其中sd
的框代表具体的交互流程,ref
框代表使用交互。
图中展示了老年痴呆病人随着时间的变化病情的变化。