看懂UML类图与时序图

一个小目标:看懂UML类图 and 时序图

看懂UML类图与时序图_第1张图片
Paste_Image.png

下面简君将给大家介绍上面这些类之间关系的具体含义:

泛化关系(generalization)#

类的继承结构表现在UML中为:泛化(Generalize)与实现(Realize)
继承关系 为 is-a 的关系,两个对象之间可以用 is-a 来表示的就是继承关系
e.g: 自行车车,猫动物
泛化关系 为 inherit from 的关系,A继承自B

Paste_Image.png

e.g: 汽车在现实中有实现,可用汽车定义具体的对象,汽车与SUV之间就为泛化关系
看懂UML类图与时序图_第2张图片
Paste_Image.png

Note:在代码中,泛化关系表现为继承 非抽象类

实现关系(realization)#

实现关系用一条带空心箭头的虚线来表示
e.g: “车”为一个抽象概念,在现实中无法直接用来定义一个对象,只有当指明具体的子类(汽车还是自行车),才可以用来定义对象

看懂UML类图与时序图_第3张图片
Paste_Image.png

Note: 在代码中,实现关系表现为继承 抽象类

聚合关系(aggregation)#

聚合关系用一条带空心菱形的直线表示,如下图表示B由A组成

Paste_Image.png

聚合关系用于表示试题对象之间的关系,表示整体由部分构成的语义,例如一个部门由多个员工组成;
这里一定要与组合关系做下区分,聚合关系中,整体和部分 不是强依赖的,即使整体不存在了,部分仍然存在,例如上例中的部分虽然撤销了,但是人员依然存在。

组合关系(composition)#

组合关系用一条带实心的菱形直线表示,如下图表示B由A组成

Paste_Image.png

在意思体会上,组合关系似乎与聚合关系如出一辙,但是组合关系是一种 强依赖的特殊聚合关系,如果整体不存在了,那么部分也不复存在;例如公司倒闭了,部门也就没有了。

关联关系(association)#

它描述的是不同类的对象之间的结构关系,它是一种静态关系,通常与运行状态没有关系,一般由尝试等因素决定的,定义对象之间的静态的、天然的结构,所以关联关系是一种强关联的关系;
比如乘车人与车票就是一种关联关系,学生和学校就是一种关联关系;
关联关系默认不强调方向,表示对象间互相知道,如果特别强调了方向,如下图,表示A知道B,但B不知道A

Paste_Image.png

Note: 代码中,关联对象通常是以成员变量的形式实现的;

依赖关系(dependency)#

此关系描述的是一个对象在运行期间会用到另一个对象的这种关系;

Paste_Image.png

与关联关系不同的是,他是一种临时性的关系,通常在运行期间产生,并随着运行时的变化,依赖关系也会发生变化;
显然,依赖也是有方向的,双向依赖是一种非常糟糕的结构,我们总是应该保持双向依赖,杜绝双向依赖的产生;
Note: 在代码中,依赖关系表示为类构造方法及类方法的传入参数,箭头的指向为调用关系;依赖关系处理临时知道对方外,还能“使用”对象的方法和属性;

时序图#

简介:时序图是显示对象之间交互的图,这些对象是按照时间顺序排列的,顺序图中显示的是参与交互的对象及其对象之间消息交互的顺序,一个时序图包括的建模元素主要有:角色(Actor)、对象(Object)、生命线(Lifeline)、控制焦点(Focus of control)、消息(Message)。
先上一张时序图(如下是简单工厂模式的时序图)

看懂UML类图与时序图_第4张图片
Paste_Image.png

  1. 角色####

    指的系统角色,可以是人或是其他系统或子系统
  2. 对象####

    有三种命名方式:
    包括对象名和类名
    只显示类名(即匿名对象)
    只显示对象名
  3. 生命线####

    在时序图中表示为从对象图标向下延伸的一条虚线,表示对象存在的时间:


    看懂UML类图与时序图_第5张图片
    Paste_Image.png
  4. 控制焦点####

    控制焦点是时序图中表示时间段的符号,在这个时间段内对象将执行相应的操作,小矩形表示


    看懂UML类图与时序图_第6张图片
    Paste_Image.png
  5. 消息####

    消息一般分为:同步消息、异步消息、返回消息。


    看懂UML类图与时序图_第7张图片
    Paste_Image.png

你可能感兴趣的:(看懂UML类图与时序图)