第一次作业
第一次作业为多项式求导,各项均为幂函数,用正则表达式匹配每一项,得到系数指数后求导输出
(1)类复杂度分析:
(2)方法复杂度分析:
(3)UML类图:
(4)关于bug:
本次作业强测互测均未出现bug,本次互测中寻找别人程序bug主要通过阅读代码,并未发现bug
(5)重构想法:
可以在多项式和幂函数之间增加项类,并考虑使用工厂模式,增强程序扩展性
第二次作业
第二次作业增加了输入格式正误的判定和三角函数以及乘积求导
(1)类复杂度分析:
(2)方法复杂度分析:
(3)UML类图:
(4)关于bug:
本次作业使用对拍器批量测试,按文法生成数据并添加随机扰动,然后使用sympy对比结果
(5)重构想法:
本次作业用到了对象创建模式中的工厂模式,但使用正则表达匹配出每一项然后用乘号分割出因子的流程并不足够通用,在第三次作业出现嵌套因子后就不适合继续使用,应当考虑参考代码给出的对每一种函数和函数组合规则建立类的架构
第三次作业
第三次作业仍然使用表达式->项->因子的类层次结构,增加了表达式嵌套因子的求导
(1)类复杂度分析:
(2)方法复杂度分析:
(3)UML类图:
(4)关于bug:
主要bug在于嵌套因子的解析,正则匹配出现错误
(5)重构想法:
讨论区的将最外层括号替换为其他字符的做法颇为有效,可以据此修改输入处理部分,另外采用指导书和参考代码给出的所有项和组合项各一个类的架构
心得体会
经过第一单元三次作业主要的心得体会在于
1.OO程序将问题层次抽象,一次只需要关注一个模块,所以开发编码过程中应当同时也进行模块化测试,这样开发效率和效果更好
2.阅读参考代码和优秀代码的架构设计后,强烈体会到优秀的架构设计的好处,逻辑清晰简单,不易出错,易于扩展;还需要在学习摸索中提升面向对象思想和层次抽象能力