UML图例之类图

2022-06-23 16:16:53 浏览数 (1)

UML图例之类图

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

一、类图中的几种关系

  • 泛化关系:在代码中体现为继承关系,设计上用空心箭头实线表示。
  • 实现关系:在代码中体现在接口和实现关系,设计上用实心箭头虚线表示。
  • 关联关系:在代码中体现为两个类之间存在语义上的关系,体现在类之间存在的隐约关系。

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

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

  关联关系常用于数据库表的设计,与数据库范式相对应。

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

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

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

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

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

二、UML类图与数据表

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

 1、泛化关系

  • 父类和子类映射为表,结构简单,更改方便,但数据分散,子类众多情况下,表数量也众多。
  • 只将子类映射为表,数据集中,方便查询,但如果父类字段扩充,需要修改子类下所有的表。
  • 只将父类映射为表,表的数量少,读写方便,但列数量增多,所有子类的列都在父类表中存在,一行数据中,关注的信息量变少,空闲列增加。

 2、关联关系

  • 一对一关联关系,相关两个类分别映射成两张表,尽管两张表权重一样,但是实际上还是会区分成主从表形式,从表保存主表主键,需查询从表数据时,以主表id为参数,用的较少,除非从表是使用率较低的信息存储,否则会合并成一张表。
  • 一对多关联关系,与一对一关联关系设计方式一样,设计主从表,从表保存主表主键,连表查询时,采用主键Id连从表外键查询。
  • 多对多关联关系,设计时,采用中间表形式,多对多拆分成两个一对多,中间表负责存储两个主表主键及中间表可能拥有的自身属性。

0 人点赞