OO Unit1

OO Unit1 总结

题目描述——多项式求导

  1. 形如3*x-x**2+x-1,仅包含幂函数及常数项。组合规则为+,单次*,**。
  2. 形如sin(x)*cos(x)*x**04*-6+8,包含三角函数,幂函数,常数项。组合规则为+,*,**。
  3. 形如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

OO Unit1_第1张图片

homework2

OO Unit1_第2张图片

homework3

OO Unit1_第3张图片

OO度量分析

homework1

OO Unit1_第4张图片

homework2

OO Unit1_第5张图片

homework3


通过类图和度量分析可以看出,代码中尚存在较多非结构化成分,且结构复杂度也存在偏高的情况下,仍需要改进。

bug修复

我的bug

  • 第一次作业中未被测出bug。
  • 第二次作业存在两处bug
    1. 变量名相似,在利用IDEA的代码自动补全功能时出错。
    1. 情况判断不全面,在输入处理的部分缺少一些情况的判断。
  • 第三次作业中存在一处bug:由于时间原因,性能优化部分未能在本次作业中完成,尝试优化的残存代码有遗漏,导致求导出错。

我测出的bug

求导错误、缺少部分情况的判断导致程序崩溃、正负号的处理出错

你可能感兴趣的:(OO Unit1)