其他分享
首页 > 其他分享> > OO - 第一单元总结

OO - 第一单元总结

作者:互联网

OO第一单元总结


第一次作业总结

分析

我们要做的是对单变量多项式的括号展开,并且化简输出,所以我的思路为分为两步:

首先,用递归下降法解析输入,将输入的表达式进行化简和拆解,得到一个不含括号的后缀表达式字符串。接着再按照多项式运算规则进行运算并合并同类项,最后结果进行排序,最后输出结果。



基本思路

我的代码分为了两大部分,分别实现两种相互独立的功能,并用main函数实现连接



具体实现



基于度量的程序结构分析


优化小方法:

  1. x**2x*x 替换
  2. 把多项式的首个非负项放在表达式首位显示


第二次作业总结

分析

本次作业是在第一次作业的基础之上对多项式的括号展开,并且化简输出,相比于第一次作业,本次作业新增了三种函数,以及拓展了一些数据显示或者实现上的细节。因此,在第一次作业的基础上,进行迭代开发,将新增要求一一实现即可。



需求变更

新增内容:

数据限制变更:

迭代开发

新增:

修改:



基于度量的程序结构分析


优化小方法:

  1. <因子> 的长度为 1 , 则把 <因子>**2<因子>*<因子> 替换。 (Warning:若是三角函数中 "<因子>**2" 则不能应用此变换,原因为不符合本次作业中的形式化表述)
  2. 把多项式的首个非负项放在表达式首位显示
  3. 三角函数恒等变形(变形需要能使表达式长度缩减)
    • 项*sin(<因子>)**2 + 项*cos(<因子>)**2 \(\rightarrow\)
    • sin(0) \(\rightarrow\) 0cos(0) \(\rightarrow\) 1
    • sin(-<因子>) \(\rightarrow\) -sin(<因子>) , cos(-<因子>) \(\rightarrow\) cos(<因子>)
    • a + b*sin/cos(<因子>)**2 \(\rightarrow\) (a+b) - b*cos/sin(<因子>)**2
    • 2 * sin(<常数因子>) * cos(<常数因子>) \(\rightarrow\) sin(<常数因子> * 2)


第三次作业总结

分析

本次作业是在第一次作业和第二次作业的基础之上新增了一些琐碎的小功能,算是比较小的一次迭代(甚至如果你前几次扩展性写得好可以认为甚至不是一次迭代)



需求变更

新增内容:

数据限制变更:

迭代开发

新增类:

修改类:



基于度量的程序结构分析


优化小方法:

  1. <因子> 的长度为 1 , 则把 <因子>**2<因子>*<因子> 替换。
  2. 把多项式的首个非负项放在表达式首位显示
  3. 三角函数恒等变形(变形需要能使表达式长度缩减)
    • 项*sin(<因子>)**2 + 项*cos(<因子>)**2 \(\rightarrow\)
    • sin(0) \(\rightarrow\) 0cos(0) \(\rightarrow\) 1
    • sin(-<因子>) \(\rightarrow\) -sin(<因子>) , cos(-<因子>) \(\rightarrow\) cos(<因子>)
    • a + b*sin/cos(<因子>)**2 \(\rightarrow\) (a+b) - b*cos/sin(<因子>)**2
    • 2 * sin(<常数因子>) * cos(<常数因子>) \(\rightarrow\) sin(<常数因子> * 2)


分析自己程序的bug


分析自己发现别人程序bug所采用的策略



心得体会

本单元是表达式括号展开的从简到难的三次迭代过程,在这次作业中我的面向对象思维方法得以初步的建立:第一单元我掌握了 gitlab 的使用,熟悉了代码风格的检查,重视和逐步掌握了测试方法和技巧;第二单元我掌握了迭代设计,增量开发,意识到一个好的架构设计的重要性;第三单元使我掌握和应用继承、接口和多态机制,以统一的架构来整合了三次作业的功能,并且强化了我基于黑盒测试来定位程序bug的能力。三次作业均强调了鲁棒性设计和层次化设计,规范了我的代码书写风格,让我认识了 "坚持美观,灵活对待,符合编程的一般原则" 的广义代码风格,使我受益匪浅。



author: 20373864 谭立德

标签:OO,总结,cos,空白,因子,单元,sin,表达式,rightarrow
来源: https://www.cnblogs.com/master-tan/p/16052858.html