前言
**本文没有2021真题,不用找了 你们的老师应该会给你们发吧 ·–· 不过我这有2021年往前近三年的题,如果需要可以加我QQ
QQ : 958284846
备注一下您来的原因就行(无偿的。。。。单纯是因为把题放csdn会被请喝茶)
还有一些当时复习网上找的笔记 记的很好很清晰
我自己的笔记提纲已经在本文中了
其他网上找的笔记资料因为不是我的原创可能有版权等问题 不方便放到这 也可以加我QQ)**
正文
上了一学期的软件构造课,看了chp老师抽了半学期的烟,喝了半学期的茶,就是课程内容一点没学会。
***,退钱!!!
原因:
1.内容不分主次,次要的一顿细扣,主要的一笔带过。
2.不管讲的好与坏,起码让大家能听懂你在说啥。好家伙,某hp老师直接让同学们听不清!
3.实验个人感觉难得一批,心态炸了
4.实验难,你当老师的是不是得了解了解同学们卡在哪了,帮个一臂之力,你帮个绵薄之力也行啊,好家伙实验课直接改成朗读课,全程朗读word文档实验手册。行,你朗读,朗读功底还不过关,普普通通的麦克风硬是用出来歌厅感觉,就一个音响硬是用出3D环绕感觉,我…
吐槽完了,虽然老师讲课有很大的提升空间,但是这门课的试依然要考,学分绩也依然得卷,好在自己运气还算不错,期末不吃不喝(bushi)突击了几天(所有2019级计算学部人应该都知道Lab3的威力,在此吐槽下lab3,跟几门考试都冲突,时间根本不够用,学长火炬也不管用了呜呜呜 ) 也算是混过去了这门课。最近要求给补考的xdm写一写考试建议,就把自己之前的复习提纲拿了出来,顺便总结了以下考试经验,一并发出来,希望能对学弟学妹们起到一点点作用。
本文结构:
开篇吐槽
(如上文)
考试总结(仅供参考)
(针对复习方法和2021年春季学期软构考试题)
个人笔记提纲(仅供参考)
(很杂乱,当初写的时候没有计划要发出来,十分抱歉)
如果你不知道期末要考什么,觉得PPT太多,无从下手,后悔于当初上课没有好好学,推荐先把这门课的思路给弄清。
2021春软件构造
软件构造的知识框架十分明确,大体就三个部分:基础知识(就靠背),ADT+OOP,复用维护和健壮性正确性。(也就是下图的三块),按照知识体系复习比较容易一点,如果可以的话至少要把PPT全部看完一遍,好多小的内容都是PPT的原句,甚至和PPT给的例题都十分相似,虽然很多英文,但是内容依旧很重要,不能忽视掉PPT的重要性,这是唯一的官方的复习资料。
如果考试还是按照2021春季学期期末考试题型的话,选择题细致一些,大题快点答,多留一些时间给选择题是因为选择实在有太多不好敲定的内容,思来想去就很费时间。大题认真做即可,每道题都要能想到对应的知识点(例如问是否符合LSP就得回想里氏替换原则都提出了哪些要求)。
上学期最后发的期末考试复习PPT十分有帮助,上边给出了每章节对应的知识点,这些知识点必须掌握,几乎考试都涉及到了(或多或少)。当初刚学完chp老师的软构课也是一头雾水,还好期末考试之前给出了复习PPT,知识体系变得很明确,按照PPT复习之后有一些成效。
下面是我自己考试之前准备的复习内容提纲。。。直接搬到这了。。。内容当时是给自己看的 所以很杂乱… 都是重点内容的提取 可以大概扫一眼…
总结:PPT虽然看起来又臭又长,还是英文的…但是真的很有用,强烈建议完整看一遍 对了还有习题课的内容最好要看并且研究明白。还有就是研究透往年习题(没有答案就很坑,但是可以研究出题的特点)
奥利给! 干了 xdm
2021春季学期 软构期末 复习提纲(仅供参考)
-------------------------------------考试基本概况------------------------------
一三讲 没大题 全是选择 大题基本上都在第二部分(确定)
三 四部分主要是测试
预测:会有一道设计模式的大题;
-------------------------复习----------------------
第一章
代码开发阶段 一定考 100%考 三维视图要记 每个维度都是什么意思
三维视图
质量属性区分内部质量属性和外部属性
eg:代码多少行(LOC):内部属性
第三章
软件配置管理的不同工具 重点
集中式和可分布式
git commit -m -a等等常用操作都是怎么用的
git结构
每次commit都是一个git对象 都是一个树形结构
git最大的变化:存储的是改变后的文件,B版本不会出现A版本没改变的文件,只是一个指针指向A版本的文件
eg. 判断题:一个文件可以出现在不同版本中 (x)
git的版本可以有0个父对象 (他自己就是父对象)
可以有1个
还可以有2个 原因: merge 两个版本合并
只能0 1 2个父对象
可以有多个子版本
第4-8章
java有些错误在运行阶段,有写在编译阶段出错。
最容易静态检测出错的就是类型错误 不匹配
两个集合类,泛型类型不一样,那么他们没有任何父子关系
mutable immutable 考点:defensive copy和表示泄露
表示泄露 100%考
给你个情况,判定是否泄露?
出现了咋办?
为啥没出现?
return一个immutable 不会表示泄露
return一个mutable,就会泄露
防止方法:防御式拷贝
final:引用的改变就会出错
final a指向一个空间,改变他的指向,就会出错。但是改变空间内的值,不会出错
Snapshot diagram必考 100%
前置 后置条件不会让你写 让你判断 (圈的大小,规约强弱)
送分题: ADT操作的四种类型 都是啥 给你一个代码你得知道他是哪个类型(creator observer等)
RI 100%考
看习题课代码题,里边有题要求写RI,停车位
习题课写的很详细
override overload 必考
泛型 必考
两个集合元素父子关系,但是他们没有父子关系!!!不能错!
判定相等
第九章
LSP肯定考
考察方式:给你2个类类 问你满不满足LSP 必考,大题
看ppt概念 父子类是否符合LSP
例如:符合override限制 子类规约比父类强 前置弱 后置强……PPT太详细了
异常:子类的异常不能更粗,得更细
父类抛出异常,子类只能抛出更具体的
协变反协变考小题
协变一般对应override
反协变java不支持,认为是重载,而不是重写
委托
一个类调用另一个类,就是委托。给你一堆类,判定是不是委托
CRP:java不允许对多个类继承,但是允许多个接口实现
白盒黑盒框架 —继承委托
第10-11章
可维护性的常见度量指标
耦合度聚合度 没啥考点
正则表达式:PPT
两种考法考一个:
- 给你一段话,请给其写出表达式
- 给一个表达式 问你这个表达式描述的是什么
设计模式
给你个需求,问你应该用哪一种设计模式实验
adapter 适配器 接口匹配
装饰器 增加功能 例如stack里push pop太简单了,我想扩充这就是装饰
模板 某一些自定义功能可以用户实现,但是父类,大的流程要固定
工厂
visitor:这个要注意 用来干嘛的得知道 对某一个类来扩充的 扩充功能点
功能先不实现,给他放着,之后再扩充(也就是放一个接入点,之后再写代码)
visitor看ppt
第2 12讲
正确性:断言—太简单了没啥说的(注:这句话不是我说的,是当时老师的原话,我全记下来了而已),注意一点:可以关闭 抛出assert error
健壮性:异常
error也可以catch 但是没有意义,那都是程序之外的(内存不足等),不需要捕获,捕获了也没有意义
异常:runtime异常不用捕获
checked异常要捕获 证明程序没错,外部环境(用户)错了
黑盒测试:要考
白盒测试 了解概念就ok
- 测试是一种破坏性的测试(找错误而不是证明正确)
- 无法进行完备的测试
祝大家该过的过,该高分的高分!!!