笔记有错误欢迎直接在评论区进行纠正!我将不再维护软件设计师笔记!

下午题15分

依赖关系

关联关系

实心菱形就是组合,空心就是聚合,然后菱形右边表示整体,左边表示部分

聚合

例如学生和班级就是聚合关系,聚合用空心的菱形表示,并且班级消失了(毕业了)学生是不会消失的,而且学生可以独立存在,在这个例子里班级是整体,学生是部分

组合

例如人和大脑是组合关系,其中人是整体,大脑是部分,大脑没有,人也就没了,大脑不能脱离人独立存在

泛化关系

实现关系

用例和用例的关系

用例和用例之间有三种关系,包含(include)、扩展(extend)、泛化( generalize)

扩箭基(扩展关系箭头指向被基础用例),包箭被(包含关系箭头指向被包含用例)

包含关系

包含关系是指一个用例完成之前被包含的那个用例也要完成,并且被包含的那个用例起关键作用,例如下面的例子

例如上图的删除图书包含查询图书,因为在删除图书之前一定要先查询图书才能删除,修改也是一样,先查询才能修改

扩展关系

例如上面的学生还书时如果没有按时还书就有罚款

刷题心得总结

问题1

问题1一般是要求用例图中的参与者和用例,参与者一般比较容易看出来,但是用例有的很难看出,这时要冷静分析,看用例之间的关系(重点)

1、如果是泛化关系(要认识泛化的图标)那就绝对是父类和子类,找说明里的父类和子类有哪些,例如支付方式是父类,微信支付和支付宝支付是子类

2、如果是包含关系,要知道箭头指向的是被包含的,例如A—–>B就是A包含B,A用例实现前会先实现B用例,比如说删除图书——->查找图书,每次删除图书都要先查找图书

问题2

问题2一般是要求类图中的类名,一般类图跟用例图是由一定关联的,问题1的用例图都写对了对问题2的类图理解就更加容易,看跟要求的类名相关联的已知的类名有哪些,然后根据已知类名和要求类名的关系去说明里找看看有没有符合这样关系的描述,找到这句话把这句话的名词都给标出来,然后根据题意去看那个名词更适合

1、一般像类图中有泛化这样的关系的,那就直接去说明中找对应的那种父类和子类这样有关系的名词

2、一般有聚合或组合关系的那就直接去找说明里的有整体-部分关系、包含关系、并且两者直接由联系的,一般都是一句话来描述这两个名词直接的关系,例如硬币器中的硬币,这就是包含关系,整体部分关系

真题

2021年下半年试题三

问题1

根据“另外,每个机器人都设置有一个计时器(Timer),用于支持执行预先定义好的定时事件。机器人的动作包括:原地向左或向右旋转90°、向前或向后移动。”这句话可以知道这个是用户提前设计好的,用来操作机器人的,所以得到一个用例是设置定时器

根据“建立迷宫:用户可以使用编辑器(Editor)编写迷宫文件,建立用户自定义的迷宫。将迷宫文件导入游戏系统建立用户自定义的迷宫。”可以得到U1和U2两个用例

讲解地址:2021年下半年问题1_哔哩哔哩_bilibili

问题2

这里我是觉得U1、U2和建立迷宫是包含关系,它官方的意思是指这个U1和U2都是建立自定迷宫的步骤,自定义迷宫和建立迷宫是泛化关系,但是我觉得这太牵强了

讲解地址:2021年下半年问题2_哔哩哔哩_bilibili

问题3

这里我C8是写的迷宫文件,应该也差不多,其他的都做出来了,主要是根据类图直接的关系做出来的,看到聚合、组合关系就去找那种相关联的整体-部分的名词

2021年上半年试题三

问题1

这里的U2、U3、U4不是一眼能够看的出来的,注意U2和U3、U4的的关系是泛化,也就是继承,那就是子类和父类的关系,那根据说明里U2就可能是取药方式或者是支付方式,因为它们都有两个子类,取药方式的子类是到店取药和送药上门,支付方式的子类是微信和支付宝,这里选支付方式,第一,那个图已经有一个用例是送药上门,如果选取药方式作为U2那就又有一个是送药上门的用例,第二,U1包含U2,U1是确认处方,U2如果是取药方式的话,即使选了取药方式,也不能确认处方,只有支付成功才能确认处方,所以U2是支付方式

讲解地址:2021年上半年问题1_哔哩哔哩_bilibili

问题2

根据上面的类图可以看到C4和C1(支付方式)、药师有关联,然后说明里有句话”支付成功之后,处方被发送给药师进行药品配制”,通过这句话可以看出C4是处方

C5只跟C4(处方)有关系,然后说明有句话“药师根据处方配置好药品”可以看出C5是药品

讲解地址:2021年上半年问题2_哔哩哔哩_bilibili

问题3

讲解地址:2021年上半年问题3_哔哩哔哩_bilibili

n年上半年试题三

问题1

这里我觉得U2是销售房产,(a)是《include》,根据说明中的话这是没有问题的

讲解地址:2020年下半年问题1_哔哩哔哩_bilibili

2019年下半年试题三

问题1

问题2

这里有点问题,泛化的图标是空心的三角形箭头,但是它这里说C1、C2和C3是泛化关系,没办法,出题人一点都不严谨,姑且当成泛化这题才能做,所以C1和C2C3就很容易得出了,C4和C5很难看出来,可以看到C5和病人有关,C4和医护人员有关,根据说明里的“病人在就诊时,可能需要接受多项治疗,每项治疗(Procedure)可能由多位医护人员为其服务”这句话,首先要根据类图的关系找到说明中对应的话,然后把这句话的名词给找出来,这句话中名词有病人、就诊、治疗、医护人员,刚好拼接上了,就诊的话当然是病人就诊,所以可以推出C5是就诊,C4是治疗

讲解地址:2019年下半年问题1_哔哩哔哩_bilibili

问题3

2019年上半年试题三

问题1

这里的U2和U3我写反了(注意这里的顺序是不可以互换的),犯的错误就是搞混淆了箭头指向的应该是基础用例(扩箭基),箭头尾部是扩展用例,所以U3应该是在线购买书籍,U2应该是打印订单。

问题2

问题3

这里的C2我一开始以为是书,但是看到那个聚合关系就知道不是书(聚合是部分和整体关系,并且部分消失整体不消失),这个类名跟顾客和订单书籍有关,并且还是订单书籍的父类,可以锁定到说明的(2)描述这个位置,然后根据经验,应该是顾客买书后生成一个订单,订单里有订单书籍,订单是整体,订单书籍是部分

2018年下半年试题三

问题1

问题2

图3-1采用了观察者模式,该模式的意图:定义对象间的一种一对多的依赖关当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新

该模式的适用场合:

1、:当一个抽象模型有两个方面,其中一个方面依赖于另一个方面,将这两者封装在独立的对象中以使它们可以各自独立的改变和复用。

2、当一个对象的改变需要同时改变其他对象,而不知道具体有多少对象有待改变时。

3、当一个对象必须通知其他对象,而它又不能假定其他对象是谁,即不希望这些对象是紧耦合的

问题3

(1)在SNSSubject 和 SNSObserver 之间增加继承关系;SNSObserver为基类SNSSubject为派生类。

(2)为类SNSGroup增加自关联(自己到自己的关联关系)。

讲解地址:2018年下半年问题2_哔哩哔哩_bilibili

2018年上半年试题三

问题1

这里A1和A2顺序可以互换,A3和A4顺序可以互换

问题2

问题3

2017年下半年试题三

问题1

这里的C1我以为是系统的用户,但是这个系统的用户和下面的用户是同一个意思,所以不行,这个没有给出,需要自拟,那就是找用户跟作者的共同父类是什么,这两个明显都是人的特殊情况,所以父类是人,即C1是Persion

问题2

这里C6(出版物)的下载次数属性很容易丢掉,所以要整个文章都看一下,有没有漏的

问题3

2017年上半年试题三(分界线)

问题1

这种题目从来没有做过,所以一开始做的一塌糊涂,有几个技巧如下

1、涉及到显示或者隐藏的表达显示的话那就是接口类(例如这里的C2就是隐藏的),因为接口类是用来跟用户交互的,所以如果系统显示什么东西给用户操纵,那就是接口类

2、涉及持久化存储的一般都是实体类,根据自己的感觉看起来像实体类的那还有看一下前后的话来确定是不是实体类,例如这题的C2看起来像实体类,但是结合下面一句发现是给用户进行选择的,所以是接口类

3、涉及到这个系统他要干点什么事,比如计算,发送什么给什么,这种动词加名词的一般是控制类

4、我是一开始就根据那个黑色下划线直接判断,其他的看都没看,这很容易错,要把每一句话都看完,甚至这句话的前后两句都要看

讲解地址:后续知识引入_哔哩哔哩_bilibili

问题2

这个题挺难的,我一开始能够指定X1-X3是收货地址、支付方式、邮箱地址这三个里面的,但是哪个对应的哪个我搞错了,表中有句“系统将以表格形式显示完整订单信息(C7),同时自动发送完整订单信息(C8)到会员预先配置的邮箱地址(C9)。”这句话我觉得就是应该是邮箱地址在X1或者X2,因为它跟订单有关系,但是这里有个词“自动发送”,所以这邮箱地址应该是跟订单没关系的,自然X3是邮箱地址,根据“若会员单击“修改付款”按钮,调用“修改付款”用例,可以新增并存储为默认支付方式(C12),回到步骤4;”

可以看出支付方式有很多种,这里不能根据经验来判断,要从说明中去找对应的依据来进行关系分判断,不然很容易搞错,这题目还是比较难,不好做

讲解地址:2017年上半年问题1_哔哩哔哩_bilibili

问题3

2016年下半年试题三

问题1

问题2

这里要根据说明来做题,我一开始是根据主要事件流做题的,所以做的一塌糊涂

讲解地址:2016年下半年问题1_哔哩哔哩_bilibili

问题3

这个C1是自动售货机我还真想不出来,根据聚合关系,直接去说明和主要事件流里找整体和部分关系,并且两个是相关联的(整体包含部分),就很容易找到“将硬币器中的硬币移走〈清空硬币器)

”和“自动售货机检查饮料储存仓中所选购的饮料是否足够;”这两句话,这就可以知道C2-C5是什么,然后C2和C3都是和C1聚合关系,并且C1是整体,那哪个东西里包含这两个东西呢?只有自动售货机包含。

讲解地址:2016年下半年问题2_哔哩哔哩_bilibili