zoukankan      html  css  js  c++  java
  • 面向对象第一单元总结

    前言

      面向对象第一单元作业,主要内容是表达式求导。主要考察程序的鲁棒性和面向对象的继承和接口的使用方法,随着作业难度逐渐增加,程序的编写逐渐变成一个难题。下面会从各次作业的度量、公测和互测bug、测试策略和其他知识进行总结。

    第一次作业

    类图

     结构分析:

      

      第一次作业由于只有一个exp类,导致多项式的识别和求导等操作没有分离。可以看出部分程序的耦合程度高,函数还比较复杂。

    互测

      在互测中我被发现了两个bug,一个是负的指数会产生0项,另一个是格式判断时忽略了形如x x这样的Wrong Formal,导致扣分。第一个原因是在处理多项式时,第二个bug是正则表达式有问题(大正则真的容易出bug)。

    第二次作业

    类图

     

    结构分析:

    互测

      这次互测我被发现了一个bug,是在连乘项中存在负整数时会忽略符号,这是在表达式分析时进行了一些改动,而提取因子时忘记修改回来导致的。个人感觉在写代码的时候思路不清晰,才会导致这样的bug。

    第三次作业

      因为第三次作业存在bug,还没有通过测试,这里就不放类图和代码分析了。

      总体上第三次作业需要在第二次作业的基础上进行大范围的重构,以实现对嵌套项的递归求导,这也是我没有想到一个比较好的解决方法的地方。作业的另一个难点是表达式正确性的判断,需要使用递归下降分析,逐步分析各个因子的正确性。

    测试策略

      我的测试策略主要是先阅读代码,再构造各种具有特点的数据进行测试,同时将可能出bug的数据点加入数据集中,测试其他人的程序。在测试中感觉到这种测试策略比较笨重,也在研讨课上学习了对拍器的写法,希望以后能改进测试策略。

    Applying Creational Pattern

      面向对象中有很多设计模式,在后面的课程中会发挥极大的作用。

      比如工厂模式(Factory Pattern),是常用的实例化对象模式,用工厂方法代替new操作。因为工厂模式就相当于创建实例对象的new,我们经常要根据类生成实例对象。这样做可能多一些工作,但会给整个系统带来更大的可扩展性和尽量少的修改量。本次作业我们只需定义一个创建对象的接口,然后可以使用工厂模式来创建表达式、项、因子,再进一步实现求导的功能。

     

      因为前两次作业没有建立特别好的继承和接口关系,首先应该实现一个inputhandle类,独立解决输入问题,还有各种因子应该继承自同一个抽象类,并实现一个求导的接口。这也让我明白设计模式的重要性,在开始编写程序之前应该仔细思考。同时第二单元也开始学习设计模式的内容,希望能通过以后的学习了解更多的编程方法,完成接下来的任务。

  • 相关阅读:
    玉米不怕累,宇春最珍贵
    幸福
    谷歌位置搜索 蹩脚结合jquery.ui.gmap
    Resharp Format XML config
    正则表达取得 image src 中值
    一个Gif处理的类库
    使用nuGet管理自己的包
    正则表达式语言 快速参考
    动态加入JS及加入CSS
    检测是一个时间串或一个数字串是否连续
  • 原文地址:https://www.cnblogs.com/chai-bo/p/10585896.html
Copyright © 2011-2022 走看看