• BUAA-OO-第一单元总结


    BUAA-OO-第一单元总结

      OO课程第一单元马上就要过去了,我也经历了连续三周魔鬼作业的考验。对于我这样没有任何面向对象思想的小白来说,每次作业都是十分痛苦且艰难的。首先很高兴自己三次作业都拿到了还不错的成绩,但高兴之余我也发现了很大问题:我的代码一点也不OO,我仍然在用C语言的面向过程思想去写代码。这是我急需改变的编程思想。

      第一次作业

      第一次作业我的基本思路是:

      1、判断非法空白字符是否存在,如果没有非法空白字符,就删掉所有空白字符(空格和 )。(简化正则表达式)

      2、使用lookingAt()函数去匹配第一项是否合法,如果合法就删掉第一项,继续循环判断,直到str为空。(避免大正则暴栈)

      3、根据特定+-号的位置将表达式拆分开,并根据拆分的格式将系数和指数存在两个ArrayList数组中。

      4、根据系数和指数进行求导操作,并进行一些合并和化简。

      一共有两个类,第一个类为主函数类,只有一个方法,20行。第二个类为多项式类,其中有6个方法,分别为删空格、匹配合法、拆项、计算、输出、返回是否合法。每个方法大概在30-40行,共190行。每个方法的控制分支数目较多,因为要匹配各种不同情况,所以if else嵌套比较多。

      

      在强测和互测中幸运地没有bug,共发现别人2个bug,没有特别构造数据,用暴栈和特殊字符hack了2个人。

      第二次作业

         第二次的做法基本同第一次,只不过存指数的数组多了几个,合法条件的判断多了不少。

      一共有三个类,第一个类为主函数类,只有一个方法,13行。第二个类为多项式类,有9个方法,其中4个分别为构造函数、匹配合法、拆项、存储指数系数,另外5个分别为不同形式项存储系数的具体方法。每个方法大概在20-30行,共210行;第三个类为求导运算类,有3个方法,分别为构造函数、优化、输出。每个方法大概在40-50行,共140行。其中有个别方法涉及到的控制分支数目比较多,各种if else。

      

      在强测发现了两个bug,是在化简时考虑不周全导致。发现别人3个bug,有根据正则的漏洞构造特定数据。

      第三次作业

      第三次作业我的基本思路是:

      1、判断非法空白字符是否存在,如果没有非法空白字符,就删掉所有空白字符(空格和 )。(同第一次)

      2、根据不在括号内的+-号将表达式拆分成项

      3、根据不在括号内的*号将项拆分成因子

      4、判断因子是否合法,如果合法则根据因子形式进行求导运算,如果是表达式因子,则去掉最外层括号后再次进行2,3两步

      共五个类,第一个为主函数类,一个方法,50行;第二个为表达式类,2个方法,共50行;第三个为因子类,2个方法,共55行;第四个为求导计算类,有10个类,为各种情况的求导计算以及判断是否为表达式因子,共230行。第五个类为优化类,一个方法,主要进行优化操作,共40行。其中个别方法涉及到的控制分支数目较多。

     

      幸运地在强测和互测没有bug,但优化并没有做得很好,性能分完全没有拿到。共发现别人1个bug,是根据正则表达式的漏洞构造特定数据的。

      

      总结一下第一单元的作业,首先很开心自己都取得了不错的成绩,但最大的问题还是不能够面向对象,仍然在用面向过程的思路去做作业。之前还是觉得这几次作业对象构造不是很清晰,不能很好的找到对象之间的关系,从而接口、继承这样的操作也没有用到。在听了大牛们的分享之后,大致对这次作业的对象构造有了思路,可以大致的分为表达式类、多项式类、因子类这样,并在每个类里重写或继承一些判断或者计算方法,这样才是面向对象的思想。所以在今后的作业中,仍然需要锻炼自己面向对象的思想,比如第二次试验的员工工资问题,就很好的能够体现出面向对象思想,希望有更多机会练习这样的题,这样才能更好的培养起面向对象思想。

      

  • 相关阅读:
    Lock接口、AbstractQueuedSynchronizer队列同步器、重入锁、读写锁
    SpringMVC一点简单地源码解析
    MyBatis源码部分简单地解析
    笔记本外接显示器不显示
    WPF查找指定类型的父/子控件
    java.io.EOFException: HttpConnectionOverHTTP
    Spark读取HDFS某个路径下的子文件夹中的所有文件
    utf-8 BOM前导3个字节头
    org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException: The auxService:spark_shuffle does not exist
    org.apache.spark.sql.AnalysisException: Table or view not found解决办法
  • 原文地址:https://www.cnblogs.com/monokuma/p/10583622.html
Copyright © 2020-2023  润新知