前言
最近在工作中第一次接触UML相关内容,本篇为学习笔记,写得不好,还请大神们多多指教。以下是本篇文章的大体结构。
UML
1. 定义
以下定义引自维基百科:
统一建模语言(Unified Modeling Language,缩写UML)是非专利的第三代建模和规约语言。UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。
2. 模型
UML中的三个主要模型:
- 功能模型:从用户的角度展示系统的功能,包括用例图
- 对象模型:采用对象、属性、操作、关联等概念展示系统的结构和基础,包括类别图、对象图
- 动态模型:展示系统的内部行为,包括序列图(时序图)、活动图和状态图。
3. 图形
在UML 2.2中一共定义了14种图示。这里只介绍序列图和类图。
序列图
1. 定义
序列图(Sequence Diagram),也叫做循序图,是一种UML行为图。大多数人翻译为时序图(维基百科上称这种叫法并不准确),UML规范中对Sequence Diagram是这么解释的:
A sequence diagram describes an Interaction by focusing on the sequence of Messages that are exchanged, along with their corresponding Occurrence Specifications on the Lifelines
事实上,序列图与我们中学时代学的流程图大同小异,它描述的是消息在生命线上按照约定顺序执行一种交互行为。它是属于一种动态模型。
2. 元素
- 对象(Object)
- 生命线(Lifeline)
- 消息(Message)
- 激活(Activation)
3. 示例图
类图
1.定义
类图是统一建模语言中一种对象模型,这种图描述的是系统的类集合,类的属性和类之间的关系。
2. 元素
上图是类图的示例,一个类有三个区域,最上面的是类名称,中间部分是类的属性,底部是类的方法。
UML提供机制,以代表类的成员,如属性和方法。指定一个类成员(即任何属性和方法)的可见性有下列符号:
1 | + public 公有 |
3. 类图中的关系
- 泛化(Generalization)
即继承(extend)的反方向。在UML类图中用带空心三角形的直线表示。如下图所示:
- 实现(Realization)
即对应implements关键字。用带空心三角形的虚线表示
- 依赖(Dependency)
依赖关系可以理解为一个类A使用到了另一个类B,被依赖的对象只是作为一种工具在使用,而并不持有对它的引用。
这种使用关系是具有偶然性、临时性的、非常弱的
但是B类的变化会影响到类A,表现在代码层面:类B作为参数被类A在某个方法中使用。用带燕尾箭头的虚线表示。
- 聚合(Aggregate)
聚合是表示整体与部分的一类特殊的关联关系,是弱的包含关系,成分类可以不依靠聚合类而单独存在,可以具有各自的生命周期,部分可以属于多个整体,也可以为多个整体对象共享。用以带空心的菱形剪尾的实线表示。
- 组合(Composition)
组合是一类强的整体与部分的包含关系。成分类必须依靠合成类而存在,整体与部分是不可分的(这是与聚合关系最大的区别),整体的生命周期结束也就意味着部分的生命周期结束。图形中用带实心的菱形剪尾的实线表示。
- 关联(Association)
关联是两个类之间,或类与接口之间一种强依赖关系,是一种长期的稳定关系。关联关系又分为单向关联、双向关联和自关联。