课程名称:Java工程师2022版
课程章节:Java多态(下)
课程内容:
UM中类的纵向关系
课程收获:
依赖:
是一种 use a 的关系,具体的来说就是一个类的实现需要另一个类的协助。关系具有临时性,相对较弱。应 尽量避免双向依赖。
通常为在类A中,把类B的对象作为方法参数。
使用虚线线条箭头表示
例如人类过河时需要借用船,此时人与船之间就是依赖关系,即在人类过河方法中,需要依赖船的对象作为方法的输入参数
关联:
一种强依赖关系,可以用has a表示,一般是长期性的,是一种拥有关系,它使一个类知道另一个类的属性和方法。可以是单向或双向
通常在类A中,把类B的对象作为类中成员。
双向关联,是用一条实线或一条实线+两个普通箭头(或实心三角形箭头)表示;单向关联,则是用一条实线+一个普通箭头(或实心三角形箭头)表示,无论是单向还是双向,箭头均指向被拥有者。
例如老师和学生是双向关联,一名老师会管理多名学生,一名学生也会有多名授课老师。学生和学号是单向关联,一个学生只能对应一个唯一的学号
聚合:
聚合关系是一种强的关联关系,它体现的是整体与部分的关系,且部分可以离开整体而单独存在,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。它们之间也是“has a”的关系。关联和聚合在语法上无法区分,必须结合具体的逻辑场景。
聚合关系以空心菱形加实线表示,菱形指向整体
例如,学校里有很多老师,老师离开学校还可以正常存在
组合:
组合也是整体与部分的关系,但是比聚合关系还要强的关系。此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,即要求普通的聚合关系中代表整体的对象,负责代表部分的对象的生命周期。它体现的是一种“contains-a”的关系。
实心菱形加实线表示。
例如公司和部门是整体和部分的关系,没有公司就不存在部门