OO Unit1
Posted probie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OO Unit1相关的知识,希望对你有一定的参考价值。
OO Unit1 总结
题目描述——多项式求导
- 形如3*x-x**2+x-1,仅包含幂函数及常数项。组合规则为+,单次*,**。
- 形如sin(x)*cos(x)*x**04*-6+8,包含三角函数,幂函数,常数项。组合规则为+,*,**。
- 形如sin(x)*cos((-x))*(x**04*-6+8),包含三角函数,幂函数,常数项。组合规则为+,*,**,嵌套。
代码分析
思路分析
前两次作业相对简单,都没有用到设计模式和层次化设计。
第一次作业,使用Term类描述多项式中的每一个项,存储项的系数,x的指数。
第二次作业,仍旧使用Trem描述多项式中的每一个项,存储项的系数,x的指数,sin(x)的指数,和cos(x)的指数。
前两次作业由于没有使用层次化结构,导致了第三次作业代码重构的工作量变得很大。sin,cos,x,constant和poly都继承父类Factor,使用工厂模式创造对象实例。具体分为以下几个方面:
字符串预处理:正难则反原则,分类判断有限的错误情况,尤其是空白字符串的判断。
嵌套和循环调用:Poly类既是存储整个表达式的类,又是继承factor,作为一个因子的类。
拆解大正则,统一由factory在创建对象时判断输入是否合法。
UML类图
homework1
homework2
homework3
OO度量分析
homework1
homework2
homework3
通过类图和度量分析可以看出,代码中尚存在较多非结构化成分,且结构复杂度也存在偏高的情况下,仍需要改进。
bug修复
我的bug
- 第一次作业中未被测出bug。
- 第二次作业存在两处bug
- 变量名相似,在利用IDEA的代码自动补全功能时出错。
- 情况判断不全面,在输入处理的部分缺少一些情况的判断。
- 第三次作业中存在一处bug:由于时间原因,性能优化部分未能在本次作业中完成,尝试优化的残存代码有遗漏,导致求导出错。
我测出的bug
求导错误、缺少部分情况的判断导致程序崩溃、正负号的处理出错
以上是关于OO Unit1的主要内容,如果未能解决你的问题,请参考以下文章