UML 相关知识

UML图

UML 九种图说明

用例图

(★★★★★)

  • 由參与者、用例以及它们之间的关系构成的用于描写叙述系统功能的动态视图。是分析系统有哪些功能以及明白系统内部和系统外部(角色)的交互的。

类图

(★★★★★)

  • 显示出类、接口以及它们之间的静态结构和关系。它用于描写叙述系统的结构化设计。

对象图

(★★)

  • 显示了一组对象和它们之间的关系。与类图相似。对象图显示类的多个对象实例。而不是实际的类。一个对象图是类图的一个实例。

状态图

(★★★★★)

  • 用于描写叙述一个对象在其生存期间的动态行为,表现对象响应时间所经历的状态序列以及伴随的动作。

活动图

(★★★★★)

  • 活动图是状态图的一种特殊形式。着重描写叙述操作(方法)实现中所完毕的工作以及用例实例或对象中的活动,它是状态图的一个变种。

协作图

(★★)

  • 是一种交互图。强调的是发送和接受消息对象之间的组织关系。表达对象间的交互过程及对象间的关联关系。

序列图

(★★★★★)

  • 序列图主要用于交互发生一系列顺序,显示对象之间的交互。它通过描写叙述对象之间发送消息的时间顺序显示多个对象之间的动态协作。

组件图

(★★★★★)

  • 描写叙述了软件的各种组件和它们之间的依赖关系。组件图中通常包括 3 中元素:组件(Component)、接口(Interface)和依赖(Dependency)。

部署图

(★)

  • 定义了系统中硬件的物理体系结构。用来描写叙述实际的物理设备以及他们之间的联系。

共同点和差别

状态图 VS 活动图

  • 共同点:

    • 状态图和活动图都是以描写叙述系统状态转移为主。
  • 差别:

    • 活动图主要描写叙述动作及对象状态改变的结果。
    • 状态图主要描写叙述的是事件对对象状态的影响。

序列图 VS 协作图

  • 共同点:

    • 序列图和协作图都是以描写叙述对象通讯和交互为主。
  • 差别:

    • 序列图强调的是时间。
    • 协作图强调的是空间。

几种常见关系

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

关系图

泛化

  • 泛化关系:是一种继承关系, 表示一般与特殊的关系, 它指定了子类如何特化父类的所有特征和行为. 例如:老虎是动物的一种, 即有老虎的特性也有动物的共性.
  • 箭头指向:带三角箭头的实线,箭头指向父类

实现

  • 实现关系:是一种类与接口的关系, 表示类是接口所有特征和行为的实现.

  • 箭头指向:带三角箭头的虚线,箭头指向接口

关联

  • 关联关系:是一种拥有的关系, 它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子

    关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

  • 代码体现:成员变量

  • 箭头及指向:带普通箭头(或实心三角形箭头)的实心线,指向被拥有者

聚合

  • 聚合关系:是整体与部分的关系, 且部分可以离开整体而单独存在. 如车和轮胎是整体和部分的关系, 轮胎离开车仍然可以存在.

    聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

  • 代码体现:成员变量

  • 箭头及指向:带空心菱形的实心线,菱形指向整体

组合

  • 组合关系:是整体与部分的关系, 但部分不能离开整体而单独存在. 如公司和部门是整体和部分的关系, 没有公司就不存在部门.

    组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期

  • 代码体现:成员变量

  • 箭头及指向:带实心菱形的实线,菱形指向整体

依赖

  • 依赖关系:是一种使用的关系, 即一个类的实现需要另一个类的协助, 所以要尽量不使用双向的互相依赖.

  • 代码表现:局部变量、方法的参数或者对静态方法的调用

  • 箭头及指向:带箭头的虚线,指向被使用者