OO第一单元作业总结——Java实现表达式求导

程序结构分析

  • 第一次作业

(1)类方法复杂度

(2)类图

  可以看出本次作业总体来说类的耦合程度比较小,因为本次作业比较简单也不会涉及到类的复用问题,由于第一次写Java程序,基本复杂度ev(G)和循环复杂度v(G)都比较高,在输入处理方法中特别明显,需要加以改进。

  • 第二次作业

(1)类方法复杂度

(2)类图

 

  其中大部分复杂度高的原因与第一次作业相同,这里不再赘述,第二次作业难度与第一次相比不是很大,对Java语言更加熟练的使用使部分类的复杂度甚至下降。通过类图可以看出本次作业的大体架构,设Item这一个类使得此次作业得意快速完成。

  •  第三次作业

(1)类方法复杂度

 (2)类图

  本次作业的架构相对前两次改动较大,几乎从头开始改写了程序。因为本次作业会有多层括号嵌套问题,由于需要多层判断,所以复杂度相对比较高。通过主类递归调用方法进行输入检测以及求导。

个人bug分析

  • 第一次作业爆栈问题

原因:正则表达式匹配过程中回溯造成爆栈。

解决措施:在正则表达式尾加上'+'符号,采用独立匹配。

  • 第三次作业括号嵌套问题

原因:在读入如sin((((x))))会发生错误。

解决措施:将括号不传进表达式。

互测策略

  1. 下载下各个同学的程序,使用git批量处理;
  2. 盲测自己在写程序的过程中发现的bug;
  3. 观察正则表达式,发现bug;
  4. 随机生成测试用例。

Applying Creational Pattern

本单元的第三次作业中可以使用二叉树构建,更多的使用继承以及接口,简化程序。

猜你喜欢

转载自www.cnblogs.com/HobbitByDyk/p/10604220.html
今日推荐