依赖关系
关联关系
实心菱形就是组合,空心菱形就是聚合,然后菱形的右边表示整体,左边表示部分
聚合关系
聚合:部分和整体的生命周期不一致,整体消失了,部分仍然存在,部分可以脱离整体存在。
例如学生和班级就是聚合关系,聚合用空心的菱形表示,并且班级消失了(毕业了)学生是不会消失的,而且学生可以独立存在,在这个例子里班级是整体,学生是部分
组合关系
组合:部分和整体的生命周期一致,整体消失了,部分仍也消失了,部分不可以脱离整体而存在。
例如人和大脑是组合关系,其中人是整体,大脑是部分,人去世了,大脑也就没了,大脑不能脱离人独立存在
泛化关系
实现关系
UML中的图
类图
用例图
包含关系
包含关系是指一个用例完成之前被包含的那个用例也要完成,并且被包含的那个用例起关键作用,例如下面的例子
例如上图的删除图书包含查询图书,因为在删除图书之前一定要先查询图书才能删除,修改也是一样,先查询才能修改
扩展关系
例如上面的学生还书时如果没有按时还书就有罚款
泛化关系
问题1
问题1一般是要求用例图中的参与者和用例,参与者一般比较容易看出来,但是用例有的可能不好看出来,就要进行分析,看用例之间的关系(重点)
1、如果是泛化关系,那就是父类和子类,找说明里有哪些是父类和子类的关系,例如支付方式是父类,微信支付和支付宝支付是子类。
2、如果是包含关系,要知道箭头指向的是被包含的,例如A----->B就是A包含B,A用例在实现前会先实现B用例,比如说删除图书------->查找图书,每次删除图书前都要先查找图书
3、如果是拓展关系,要知道箭头指向的是基本用例,例如B----->A就是B为拓展用例,B是A的特殊情况或拓展情况,A为基本用例,B为特殊用例。
问题2
问题2一般是要求类图中的类名,一般类图跟用例图是由一定关联的,看跟要求的类名相关联的已知的类名有哪些,然后根据已知类名和要求类名的关系去说明里找看看有没有符合这样关系的描述,找到这句话把这句话的名词都给标出来,然后根据题意去看那个名词更适合。
1、如果类图中有泛化关系的,就直接去说明中找对应的父类和子类这样有关系的名词。
**2、如果有聚合或组合关系的,就直接去找说明里的有整体-部分关系的名词。
补充技巧:如果题目中的名字都给出了英文,有可能这些英文就是要求的类名。
补充
包含关系是两个都必须发生,扩展关系是两个都可能发生也可能都不发生,泛化关系是两个至少有一个发生。
包含include:一个用例包含另一个用例,当基本用例执行时,被包含用例一定会执行。包含关系由基本用例指向被包含用例,关系是一条带箭头的虚线,虚线上包含《include》
扩展extend:当一个用例执行时,可能会出现特殊情况和可选情况,这个时候就会执行扩展用例。扩展关系由扩展用例指向基本用例,关系是一条带箭头的虚线,虚线上包含《extend》
泛化generalize:父用例泛化子用例,子用例继承父用例的所有属性和行为,并未父用例可以出现的地方,子用例都可以将其替换。