• OO第一单元总结


    OO第一单元总结

    以下是本人在前三周做面向对象作业所做的总结。

    总体分为homework1, homework2, homework3 的思路总结和bug的策略以及心得体会。

    homework1

    刚开始接触面向对象的思想,其实我接受起来还是有点困难的。由于第一次作业的复杂度较低,我直接当了一main战士。这使我的代码没有任何的可拓展性,直接导致了下一次代码的重构。

    类图:(emm)

    思路:使用hashmap存储读入的表达式,hashmap能够较为便捷地起到合并同类项的效果。对每个hashmap中的元素,求导之后输出。

    bug:在为了省去输出的第一个+号时出现了bug。

    度量:

    这次作业遇到的难点主要还是java语法上的问题以及正则表达式编写的问题。

    homework2

    这次作业实际上我还是面向过程的思路。沿用了作业1的大部分思路。

    类图:

    思路:这一次作业,由于存在连乘,每一项可以整理为一个x,sin(x),cos(x)和带符号整数的四元组,所以我用hashmap存储表达式中的每一项,其中key为x,sin(x),cos(x)的指数,用空格分开,之后可以用String类的split方法分开得到。随后通过四元组的求导公式得出结果。另外,由于要检查wrongformat,我在Mainclass中使用了try-catch语句,在Func中完成绝大部分工作。

    bug:因为只允许出现空格和制表符的空白项,而我没有检查这一部分,直接移除了所有的空白。

    度量:

     我认为这次作业的难点在于输入的处理。

    homework3

    这次作业我使用了工厂模式

    类图:

    思路:在检查完空白项导致的wrongformat之后,由于难度较大,我为了简化难度,没有使用容器存储整个表达式,而是边读入边求导,所以只能放弃优化。

    不断分离出表达式中还没有被求导输出的第一个项,不断将该项的第一个乘数与剩余的乘数分离开来,使用工厂识别第一个乘数,然后递归使用乘法求导公式,最后输出求导结果。如果被分离出来的第一个乘数不是因子,则输出wrongformat。

    bug:由于输入输出的格式没有把握好,导致出现了较多bug

    ·表达式因子过多去括号,如((x)+(x))会被改为 x)+(x 导致输出wrongformat

    ·分离出来的第一个乘数忘记支持表达式因子导致wf

    ·检查空白项时,带符号整数空白导致wf

    ·输出时,输出如 +(x+x)这种不符合format的格式

    度量:

    可以看到,整个作业的耦合度还是较高,希望在之后的作业中我能够加以改进。

    互测bug策略

    由于我对评测机的搭建不熟悉,所以采用的主要是阅读他人的代码的静态审阅模式找bug。

    这种方法的不足之处是效率过低,而且遇到可读性较差的代码时根本无法开张。

    舍友搭建了评测机,甚至还用评测机找出了我的数个bug(x),所以往后的学习中我也会尽可能熟悉评测机的搭建。

    心得体会

    这三次作业是我面向对象程序设计思维的入门,3次作业难度层层递进,带给我很大压力的同时的确也让我感受到了进步。

    可以看到,从第一第二次到第三次,我的编写方法有了很大程度上的转变,这样的写法不仅能够简化构建思路,也提升了代码的可读性,便于后续debug。

  • 相关阅读:
    linux ssh 安装、安全设置
    STL底层数据结构实现
    谷粒商城踩坑汇总(分布式高级篇)
    谷粒商城踩坑汇总(分布式基础(全栈开发篇))
    使用Vagrant 后发现虚拟机磁盘空间爆满的血泪填坑记
    Tomcat启动时,控制台和IDEA控制台中文乱码解决方案
    Unknown initial character set index '255' received from server. Initial client character set can be ... 解决方法
    idea打包成功但是resource下的文件没有复制到classes文件夹的解决方法
    tomcat控制台中文乱码怎么处理
    idea中tomcat启动时控制台中文乱码解决
  • 原文地址:https://www.cnblogs.com/apartment-oo/p/12522648.html
Copyright © 2020-2023  润新知