OO第一单元总结

第一次作业:

一、二、

第一次作业,还未能理解面向对象的含义,只创建了一个类,并在其中实现所需的所有功能。将输入的字符串去除空格,“++”,“+-”,“-+”,“--”分别替换为“+”,“-”,“-”,“+”,再从处理后的字符串中捕获项。每个项单独处理,提取指数和系数,按照数学公式进行求导,特判指数系数为1,指数为零等特殊情况。值得一提的是,在本次作业中第一次尝试正则表达式的构造,由于细节的原因,出现了很多次的bug,导致多项式的项一直捕获不正确,浪费了大量的时间。

第二次作业:

 本次作业延续了上次作业的结构,但是具体方法是重构了的。第二次作业增加了格式判断,因此要先构造一个表达式的正则表达式进行判断,然后再提取项。本次作业把每一项统一化为a*x^b*sin(x)^c*cos(x)^d的形式,然后进行求导。然而这种想法具有很大的局限性,当表达式出现嵌套或者其他函数因子时就不适用了,所以缺乏可扩展性。经过课程的学习,我知道了应该利用接口和继承来更好的规范程序的组织结构,增加可扩展性。

第三次作业:

本次作业更加面向对象了,把所有的项分为单项和组合项,单项又分为幂函数项和三角函数项(由于常数项求导为0,所以省略),组合项有乘积和嵌套。分别制定求导策略。本次作业新增了对"()"的处理。对于组合项要进行递归处理。相比于前两次作业,第三次的设计更具层次性,开始有点面向对象那味儿了。

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

先通过阅读别人的代码理解他的逻辑和解题思路,看一看他捕获的信息和信息的处理方法,在理解了逻辑之后再进行测试。

四、应用对象创建模式

前两次的面向对象这点做的都不好,第三次作业做出了改进,利用继承关系构建了类,提高了程序的清晰性、可迭代性,而且更加简洁明确。

五、 对比心得体会

一定要提早做准备,若是周五才开始动手是肯定来不及的。这是我第一次作业疯狂追该后的教训。此外要先好好构思再动手,这样磨刀不误砍柴工,比边做边想要快很多,也不容易出现很大的漏洞,不会写着写着发现不行要推翻重来。还有就是,作为java入门选手,要多多积累java的知识,无论是语法层面还是构造方法理念层面,仅仅靠现有的基础java知识是不能很好的完成每次作业的。最后就是,多看讨论区,可以发现很多好方法。

原文地址:https://www.cnblogs.com/oofirst/p/12538958.html