UML图例之类图

目录

前言

作为UML图例中的重要角色,通过许多(静态)说明性的模型元素(例如类、包和它们之间的关系,这些元素和它们的内容互相连接)描述系统静态结构,帮助我们快速了解、理清系统中对象之间的关系。

 

类图中的几种关系

162813319_af18f359-db4f-4b6d-8454-32ec30a3045e

泛化关系

在代码中体现为继承关系,设计上用空心箭头实线表示。

162814878_de17b532-460a-4041-8362-081aa41f2fc7

实现关系

在代码中体现在接口和实现关系,设计上用空心箭头虚线表示。

162816005_325008d6-74a4-4fd6-89a9-1f66c8e246d1

关联关系

在代码中体现为两个类之间存在语义上的关系,体现在类之间存在的隐约关系。

  1. 单向关联:学生可以拥有书籍,学生知道书籍的存在,但是书籍无需知道学生的存在,学生可以拥有多本书籍,因此从学生指向书籍关联。设计上用箭头实线表示。

162817315_e2236048-b4ee-41d5-b7cb-ccbeda57461d

  1. 双向关联:学生知道老师的存在,老师知道学生的存在。设计上用实线表示。

162818431_89a25388-ec12-483a-8097-c3f32b84fdaf 关联关系常用于数据库表的设计,与数据库范式相对应。

聚合关系

特殊的关联关系,体现整体和部分的关系,设计上用空心菱形实线箭头表示。

部门不存在,员工仍然可以存在,员工离职,部门仍然存在。体现的是0和n,整体和部分,整体不存在,部分仍然可以存在。

162819635_f7d7b756-f700-4232-b883-556816c636ea

组合关系

特殊的关联关系,和聚合关系类似,体现整体与部分关系,设计上用实心菱形实现箭头表示。

公司和部门关系体现在公司不存在,则部门也不存在了,前者掌握整体的生命周期。体现在0和0、1和n,整体不存在,则部分不存在,整体存在,则部分存在。

162820742_51181c1e-4b07-4c7a-b243-ce5859a0fd8d

依赖关系

没有直接的关系,仅仅在代码运行期间,产生的依赖,如将A类中间的时间属性赋值到B类中的时间属性。A类中调用类中类型为B类的属性,A类中调用的方法,需要用到B类的信息等。设计上用箭头虚线表示。箭头指向方为被调用方。

162821848_da32ccb6-d13c-45b9-aa19-78dde0363d66  

UML类图与数据表

类图到表结构的映射中只需考虑泛化、关联关系。

1、泛化关系

  • 父类和子类映射为表,结构简单,更改方便,但数据分散,子类众多情况下,表数量也众多。

  • 只将子类映射为表,数据集中,方便查询,但如果父类字段扩充,需要修改子类下所有的表。

  • 只将父类映射为表,表的数量少,读写方便,但列数量增多,所有子类的列都在父类表中存在,一行数据中,关注的信息量变少,空闲列增加。

2、关联关系

  • 一对一关联关系,相关两个类分别映射成两张表,尽管两张表权重一样,但是实际上还是会区分成主从表形式,从表保存主表主键,需查询从表数据时,以主表id为参数,用的较少,除非从表是使用率较低的信息存储,否则会合并成一张表。

  • 一对多关联关系,与一对一关联关系设计方式一样,设计主从表,从表保存主表主键,连表查询时,采用主键Id连从表外键查询。

  • 多对多关联关系,设计时,采用中间表形式,多对多拆分成两个一对多,中间表负责存储两个主表主键及中间表可能拥有的自身属性。

 

针对于UML类图部分知识进行了一次整理,方便类图设计时,关系设计的选择。

2020-01-19,望技术有成后能回来看见自己的脚步