uml_

组合关系(强关联)

参考文献

再说说组合,组合是一种强关联,大概意思是整体和部分不可分割,不能独立存在。同样从级联操作理解。

就拿学生和学生证来说,假如某个学生退学,不再属于这个学校,那么可以考虑
将该学生信息删除,删除的时候,学生对应的学生证信息也会被删除,在此处可加
级联删除。因为学生证属于某个学生专有的信息,学生不存在了,
学生证又不能让他人使用,因此是一种强关联,可以称为组合。

uml_

聚合关系(弱关联)

先说说聚合,它是一种弱关联,大概意思就是整体和部分可以独立存在。如果我们换个角度,可以看成是数据库的级联操作。

就拿小组和组员来说,删除某个小组的时候,把该组的组员也删除,这显然是不科学的,因为小组和组员是一种弱关联,小组可以拥有任意一个组员,一个组员也可以去任意一个小组,这个小组不存在了,可以去另一个小组,它们没有必然的关联,可以称为聚合。

因此,我们在设计数据库的时候,往往不会设置级联删除,也就是说,删除小组时不会删除组员。
uml_

依赖关系

最后要谈的是依赖关系。

假如A类的某个方法中,使用了B类,那么就说A类依赖于B类,它们是依赖关系。

A类的某个方法使用B类,可能是方法的参数是B类,也可能是在方法中获得了一个B类实例。但无论是哪种情况,B类在A类中都是以局部变量的形式存在的。

因此,A类中有B类型的局部变量,就说A类依赖于B类
uml_
虚线箭头表示依赖,箭头指向被依赖的类

综上,有一个简单的判断原则:某个类以成员变量的形式出现在另一个类中,二者是关联关系;某个类以局部变量的形式出现在另一个类中,二者是依赖关系。

类图 多对多 转化为 一对多

uml_