• OO第一单元总结


    OO第一单元总结

    第一次作业

    类图

    ​ 第一次作业由于较为简单,只包含幂函数的加减,于是我只设计了一个多项式类,这个“多项式类”实际上表示了多个单项式的加减关系。

    度量分析

    感觉第一次作业面向对象的思想体现的不够明显,第一思路还是老一套面向过程的思维方式,且toString函数复杂度偏高,耦合度偏高。

    BUG

    ​ 此次作业在强测和互测中均未发现bug。

    ​ 在互测中我hack了其他人1次。起初我尝试使用对拍器,却没有找出bug。随后通过通过阅读代码发现有位同学对空格的处理十分复杂,于是思考其此处可能会有bug于是针对性构造数据,发现了其对空格处理上的bug。

    总结

    ​ 本次作业相对简单,后续作业我也基本延续了类似本次作业的架构。

    第二次作业

    类图

    ​ 第二次作业添加了关于简单三角函数的支持,并且有了乘法,所以我此处设计了三角函数类Trigo和多项式(单项式)类Poly,Term类表示多个类之间的相乘关系,Express表示多个类之间的相加减关系。问题主要出在,求导和输出函数写的较为复杂,此处没有较好体现面向对象思想,应该对Poly和Term类单独实现求导和输出方法。

    度量分析

    感觉本次作业是做的最差的一次,复杂度升高,我却没有完全遵从高内聚低耦合的原则,整体设计都需要重构,此处也给我第三次作业带来了很大麻烦。

    BUG

    ​ 此次作业在互测中被发现一处bug。由于在一处小优化上的失误,导致求导结果如果存在常数1,会被忽略掉不输出。

    ​ 在互测中我hack了其他人1次。此时我没有较认真地看其他人的代码,而是以我自己测试时构造的数据进行尝试,成功发现一位同学的bug。

    总结

    ​ 本次作业相对上次复杂度突然上升,导致我措手不及且时间也较为仓促,所以无论是从设计方面还是测试方面我都做的很糟糕。

    第三次作业

    类图

    ​ 第三次作业添加了关于三角函数嵌套的支持,并且有了括号因子,所以我此处基本沿用了上次的架构,设计了三角函数类Trigo和多项式(单项式)类Poly,Term类表示多个类之间的相乘关系,Expression表示多个类之间的相加减关系。并且部分解决了第二次作业中的问题,将求导和输出方法作为一个diffable接口,Trigo、Term、Express和Poly类均继承这个接口。

    度量分析

    感觉本次作业相对上一次略有改善,但是输出函数仍然较为复杂。

    BUG

    ​ 此次作业第一次在强测中出现bug,由于程序过于复杂,我看错了一个大括号的位置,于是一个小优化被我放错了位置,导致此处优化不仅形同虚设还引入了bug,当0成为因子相乘的时候,我会将其忽略掉。这也反应出我在测试中测试不全面的问题。

    ​ 在互测中我的程序没有被找出bug,我找到了其他同学共计13个bug,由于我在写本次作业的时候,中测卡了很长时间,于是我构造了很多边界数据,包括空格处理,递归爆栈,特殊字符,三角函数的0次幂等特殊数据,所以我成功找出了其他同学的多处bug。

    ​ 在互测中我hack了其他人1次。此时我没有较认真地看其他人的代码,而是以我自己测试时构造的数据进行尝试,成功发现一位同学的bug。

    总结

    ​ 本次作业作为复杂度最高的一次作业,我感觉我由于一开始就思考好了整体架构 ,写出来并不费劲。但是整体的面向对象的思路体现的仍然不够清晰。以后需多练习思考体会

  • 相关阅读:
    Visual Studio 出现生成错误 ,要继续并运行上次的成功生成吗?
    postgresql迁mysql之后兼容性问题
    Java中把十进制转为二进制(判断有效的ip地址和掩码)
    Java中如何把整数变为二进制输出
    Java二进制与十进制转换及位运算
    面试知识点总结之开放性问题
    面试知识点总结之常用设计模式
    linux下VIRT,RES,SHR的含义
    JSP JS 日期控件的下载、使用及注意事项
    Html5实现头像上传和编辑,保存为Base64的图片过程
  • 原文地址:https://www.cnblogs.com/member-re/p/12514895.html
Copyright © 2020-2023  润新知