zoukankan      html  css  js  c++  java
  • BUAAOO第一单元代码分析

    1.HomeWork1

    思路

    • 一个主类用于字符串得操作,
    • 一个Poly类用于对一个多项式进行抽象,用Arraylist来对term进行封装.内部含有求导方法,添加并合并同类项的方法,toString方法,
    • 最后一个是term类,对每一个幂函数进行抽象.内部含有求导方法, tostring方法,equals方法.

    不足之处及bug分析

    • 没有按照运算进行分类,对以后的扩展产生了很大的影响.
    • 在强测和互测中出现了正则爆栈的问题,主要是因为本次没有要求检查wrongformat,但是还是使用了大正则的方法对wrongformat作了检测.

    类图

    类图1

    度量分析

    分析

    2.HomeWork2

    思路

    • 本次作业基于上一次的作业有了sin和cos,对每一项的抽象都可以用一个a*xb*sin(x)c*cos(x)**d 来抽象,所以可以抽象出三个层次,一个表达式由若干个项相加组成,项由若干个因子相乘组成.因子中还有type和parameter两个属性,这样就可以用一个因子来实现对常数,幂函数,三角函数的抽象

    不足之处及bug分析

    • 这样的架构对于求导操作也是比较快的,但是在拓展性上,还是存在一定问题,导致第三次作业直接进行了重构.

    类图

    类图2

    度量分析

    分析2

    3.HomeWork3

    思路和感想

    • 本次作业与前两次作业有了很大的区别,多了嵌套,一个项不能再简单的由几个固定的因子来表示了.本来是打算在之前的方法上继续扩展,但是在对equals方法, hashcode方法,clones方法以及多层引用的嵌套,都很难写.导致最后放弃了在原有的程序上扩展的方法,使用了ppt中的按项与组合项的分类方法进行重构.
    • 思路是基础项和组合项,且都继承自项这个类,然后用项这个类进行建树.抽象好层次关系以后求导操作就是比较简单的了,只需要对每个基础项和组合项进行求导即可,化简,求导等也只需要对这几个类进行即可.
    • 难点主要还是wrongformat的检测,表达式的处理以及表达式的化简.而且化简还需要考虑性能问题.

    不足之处及bug分析

    • 这次作业没有处理好wrongformat的问题,以为没有问题,实际上有大问题.导致强测错了很多,修复的时候会需要大问题.然后优化也有很多地方出现了很多的问题.

    类图

    类图3

    度量分析

    分析3

    测试

    • 在前两次中,测试数据是使用python和正则表达式来随机生成的,在第三次中没有办法直接使用正则表达式来生成,于是又使用了递归加随机数的思想来生成数据

    • 这里附上第三次作业的源码

    • 随机生成的数据的不足之处:

           1. 对一些特定的边界的检测没有办法检测
           2. 对wrongformat没有办法

    • 当然随机数据在互测阶段是非常好使的一种策略,可以很快的检测程序有没有bug.

  • 相关阅读:
    java去除字符串中的空格、回车、换行符、制表符
    Tomcat 7 'javax.el.ELException' 的解决方式(failed to parse the expression [${xxx}])
    quartz CronExpression表达式
    iconMoon:字体图标(iconfont)解决方案及使用教程
    小程序:前端防止用户重复提交&即时消息(IM)重复发送问题解决
    小程序:位置信息(Location)及微信小程序LBS解决方案实践
    小程序:web-view采坑指南
    小程序:如何让scroll-view包含内容完整滚动
    小程序:如何在wxml页面中调用JavaScript函数
    小程序:怎么在两层列表循环(wx:for)的时候判断是否为最后一个元素
  • 原文地址:https://www.cnblogs.com/donsome/p/12526022.html
Copyright © 2011-2022 走看看