UML类图和时序图

在做功能比较复杂的项目模块的时候,为了理请代码的逻辑,方便以后对接的同事方便查看,一般会整理一下流程图、类图和时序图。
发现自己在画图的时候,有时候不太记得类图的个别图示,就整理一下输出了这篇文章。

[TOC]

类图

在开发中,经常会用到类图,尤其是功能模块涉及很多类的时候,使用类图,可以明了地显示各个类之间的关系。类图的学习还是比较简单,只要知道基本的图示作用,以及弄懂类之间的关系。

类图图示元素含义

先对各个图示进行介绍,主要是接口、类以及各种关系连接线

接口

image-20180728162538350

  • 第一行:接口名称,接口需要添加《Interface》
  • 第二行:特性(字段或者属性)
    格式为:可见性 特性名称:特性类型
  • 第三行:操作(方法或者行为)
    格式为:可见性 操作名称(参数类型):返回值类型
    可见性+表示public,-表示private,#表示protected

image-20180728163641732

  • 第一行:类名称,如果是抽象类,用斜体表示
  • 第二行:特性(字段或者属性)
    格式为:属性范围 特性名称:特性类型
  • 第三行:操作(方法或者行为)
    格式为:操作范围 操作名称(参数类型):返回值类型

关系连接线

类之间的关系有6种,分别为实现关系、泛型关系、关联关系、依赖关系、聚会关系、组合关系。
image-20180728165213977

类的关系

上面的图示也列出类关系的6种连接线,接下来对各个关系进行详细介绍

实现关系

  • 是一种类与接口的关系
  • 表现在代码上,就是实现interface接口
    image-20180728165555810

泛型关系

  • 是一种类与类的继承关系
  • 表现在代码上,就是通过extend继承
    image-20180728165817291

关联关系

  • 是一种拥有的关系, 它使一个类知道另一个类的属性和方法。
  • 关系关系可以是单向的,也可以是双向的,互相关系。
  • 表现在代码上,一般是类中的一个成员属性。
    image-20180728173446758

依赖关系

  • 是一种使用的关系, 即一个类的实现需要另一个类的协助。这种关系具有偶然性的、临时性的、非常弱的。
  • 表现在代码上,就是类B被作为类A的某个方法参数传递进来使用。

组合关系和聚合关系

  • 两者都是整体与部分的关系
  • 组合关系中的部分,不能离开整体而单独存在的,比如公司和部门是整体与部分的关系,部门不能单独存在,没有公司就没有部门了。
  • 聚合关系中的部分,能离开整体单独存在,比如汽车和轮胎是整体与部分的关系,轮胎可以单独存在。
  • 两者表现在代码上,和关联关系一样,是类中的一个成员属性。具体不同只能通过语义区分。
    image-20180728174548975

总结

最后,借用《大话设计模式》中的一张UML类图来展示各个类图的关系
image-20180728180119156

时序图

上面讲到的是类图,平时另外开发中,尤其是看源码的时候,用得比较多的,就是时序图了。类图用来表示各个类之间的关系,时序图,用来描述对象之间动态协作的顺序。
时序图使用起来也特别方便,要整理的时候,发现网上有文章整理很不错了,如UML建模之时序图(Sequence Diagram),就不再自行整理了。
写博客的目的,是为了理解归纳知识点,然后通过自己的思维习惯输出,下次忘记的时候,看自己的文章立马回顾起来。看别人的一篇也能回顾,也就不为了写文章而写文章了。

参考资料

公众号:亦袁非猿

欢迎关注,交流学习