BUAA_OO_博客作业1——求导

BUAA_OO_2019 第一次博客作业

    这里总结一下这四周以来的学习吧。从课上讲授面向对象思想的原则、继承接口的用途,到课下的三次练习都让我饱受折磨受益匪浅。

  第一次作业我基本上只有两个类,之后的两次作业我尝试使用多个类的写法,发现确实有一点感悟到了面向对象的核心思维方式,虽然现在写的代码还是丑陋不堪

  事实上,后两次作业中写的最长的类是第三次的InputHandler,因为用了递归下降的写法,而且写的稍微蠢了点所以写了三百行左右。其他的规模都是很小的。其中第三次作业的设计方式让我深刻地体会到了面向对象的思想。我设计的第三次的求导方式是,所有那些类求导都会返回表达式;外面的东西求导只需要调用里面的东西求导,然后再做简单的串接就可以了。只是没有完成表达式的展开的方法,不然我相信结果会有更漂亮的输出结果。
  三次作业中我的bug主要集中在前两次的非法格式的判断,前两次使用了正则的方式,第三次则主要利用地柜下降来判断。我认为前两次之所以会出现WF的bug,主要是因为对正则表达式的熟悉程度和我的思考方式还没有适应正则表达式的表达方式。第三次应该是没有出现格式上的错误。
  功能上暂时还没有发现bug(在我看来既然使用了这种设计方式(指递归地求导),如果能过一个比较复杂的点,那么一般来讲不太会出现这方面的bug)。
  在第二次讨论课(第四周)中,也有同学分享了自动测试程序的构造方式方法。这部分我确实了解的比较少,也不太擅长(主要是没接触过脚本语言)。另外我也不太知道表达式求值这个玩意应该怎么处理,主要是我不知道有这个东西的轮子...我测试一直是手动测试一个比较复杂的数据点,再比对结果。第三次作业中这样的方式就不是很有效了,所以此时一位0/0的佛系好人路过(笑)。另外就是阅读正则表达式发现漏洞,这个方式在我看来也是非常头疼的,因为有的同学要不就是使用大正则,看着特别长;另外的就是拆分的,这样虽然一个看着简单,但是得了解他的程序运行的方式(数据流),也非常难受。
  三次作业都是表达式求导。在我看来这三次作业基本都有以下的抽象方式(也是我采用的方式):
  • 表达式由很多项相加而成
  • 项由很多因子相乘而成
  • 因子是所有因子种类的父类
  • 因子种类包括常数因子、幂函数因子、三角函数因子、表达式因子等
    其中第三次作业中的三角函数因子还有一个私有数据(因子类型)来表示括号中的东西
  • 以上全部类都可以实现求导、化简、toString等方法。
  • 然后我们可以定义一个InputHandler类负责输入处理,可以直接返回一个干净的表达式;表达式使用求导方法返回另一个表达式;我们再把这个导函数表达式交给OutputHandler即可。
 

转载于:https://www.cnblogs.com/heyedan/p/10583175.html

你可能感兴趣的:(BUAA_OO_博客作业1——求导)