1. 前言

继续学习《Android源码设计模式解析与实战》和《Java设计模式(第2版)中文版》的时候,不可忽视的需要了解UML图。因为这种可视化的表示感觉更加直观,感觉用于前期的类关系构建非常合适。所以这里来回顾下UML图的相关知识。

如果需要上面这两本书籍pdf的可以联系我

2. 什么是UML图

Unified Modeling Language,翻译为:统一建模语言。是用来对软件密集系统进行可视化建模的一种语言。一份典型的建模图表通常包含几个块或框,连接线和作为模型附加信息之用的文本。这些虽简单却非常重要,在UML规则中相互联系和扩展。

UML立足于对事物的实体、性质、关系、结构、状态和动态变化过程的全程描述和反映。UML可以从不同角度描述人们所观察到的软件视图,也可以描述在不同开发阶段中的软件的形态。

UML采用一组图形符号来描述软件模型,这些图形符号具有简单、直观和规范的特点,开发人员学习和掌握起来比较简单。所描述的软件模型,可以直观地理解和阅读,由于具有规范性,所以能够保证模型的准确、一致。


3. UML图的作用

UML是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行建模,而且适用于系统开发的不同阶段,从需求规格描述直至系统完成后的测试和维护。

4. 种类

截止UML2.0一共有13种图形(UML1.5定义了9种,2.0增加了4种)。分别是:用例图、类图、对象图、状态图、活动图、顺序图、协作图、构件图、部署图9种,包图、组合结构图、交互概览图3种。

各种关系的强弱顺序: 泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

4.1 UML类图几种关系

UML静态视图中包含一些常见的基本关系:泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。

4.1.1 泛化(Generalization)

是一种继承关系,表示一般与特殊的关系,它指定了子类如何继承父类的所有特征和行为。

android UML 时序图 uml安卓_android UML 时序图

箭头为空心,且箭头指向父类。

4.1.2 实现(Realization)

也就是类与接口的关系。

android UML 时序图 uml安卓_android_02


使用空心箭头,连线为虚线,箭头指向接口。

4.1.3 关联(Association)

表示为一种拥有的关系。可以形象化的理解为一个类中拥有另一个类作为属性。比如:老师和学生,学生和课程的关系。

关联可以是双向的,也可以是单向的。

android UML 时序图 uml安卓_UML_03


老师有多名学生,学生也可能有多名老师。一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。

使用普通箭头表示,或者双向不使用箭头。

4.1.4 聚合(Aggregation)

聚合关系是关联关系的一种,是整体与部分的关系。且部分可以离开整体而单独存在。比如下面的图示:

android UML 时序图 uml安卓_android_04


车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。

4.1.5 组合(Composition)

组合关系是关联关系的一种,是整体与部分的关系,比聚合关系强。部分不能离开整体而单独存在

android UML 时序图 uml安卓_android UML 时序图_05

4.1.6 依赖(Dependency)

是一种使用的关系,即一个类的实现需要另一个类的协助。依赖是表示一个类中使用了另外一个类,最常用的依赖是在类A方法中使用了类B,那么A依赖B。如下图所示。

android UML 时序图 uml安卓_UML_06

4.2 UML类图常见表示

4.2.1 类图

android UML 时序图 uml安卓_android_07


ClassName表示类名

中间部分为该类的属性,其中分别表示为可访问性,属性名,以及属性的数据类型。

第三部分为该类的方法,包括方法的可访问性,方法名,方法的参数以及方法的返回值。

其中:

  • +表示public
  • #表示protected
  • -表示private
  • i表示internal

4.2.2 对象图

android UML 时序图 uml安卓_uml_08


即类的实例对象,用来指明属性值。