zoukankan      html  css  js  c++  java
  • 学不会OO的第一单元反思

      第一单元作业比较菜orz前面分析一二次作业,后面对未完成的第三次作业单独进行总结反思

    一、程序结构分析

    第一次作业:

      第一次作业基本思路是,对其进行求导,然后进行排序后合并同指数项,最后输出。

      空格可以先直接消去,然后将++或--这种替换成单一运算符方便捕获处理。

      类图:

      代码行数:

     

    第二次作业:

      第二次作业加入了sin和cos,变得复杂了起来。这里采用了function来存放下面三种情况(sin cos x) MainClass提供了Poly类的初始化以及CalculatePoly类的初始化及调用,CalculatePoly中提供了字符串输入及预处理以及求导调用。Poly类提供了map来保存所捕获的项及详细的求导方法。

      类图:

     

     代码行数:

    二、bug分析

    第一次作业:当出现正负抵消的时候会出现没有输出的情况。

      解决方案:在输出处设计一个标记flag,当未输出的时候进入条件输出0并结束

    第二次作业:当指数出现前导0会误判WF,输入10000会判成WF,当输入中存在垂直制表符没有报WF

      解决方案:修改正则,一个是在原有的指数部分增加前导零,一个是单独判断10000和\d{1,4},最后一个bug是将\s改成了{ \t}

    三、互测策略

      由于没有搭建评测机, 互测采用的是人力测试法(

      基本思路是首先测试自己出现错误的地方,然后检查边界数据。

    四、应用对象创建模式

      主要是在第二次实验,使用了工厂模式进行继承。由于工厂模式依赖于接口,把具体产品的实例化工作交由实现类完成,扩展性比较好。也就是说,当需要系统有比较好的扩展性时,可以考虑工厂模式,不同的产品用不同的实现工厂来组装。所以在这个单元可以采用简单工厂模式,即由一个工厂对象根据收到的消息决定要创建的类的对象实例,提供工厂类、产品接口和产品类。这个思路也最终应用在第三次作业中

    五、第三次作业反思

      第三次作业我完成的部分是对于各个组分的类以及其求导方法,在这里使用了第二次实验学习的工厂模式的方法,首先建立Tri抽象类,随后让各个组分的类继承自Tri类,使得代码调用更加清晰,同时应该可以方便之后的处理。

      主要遇到的问题是对于嵌套结构的分离捕获。一方面ds时表达式树掌握的不够熟练,另一方面在正则构筑的时候由于正则较为复杂于是没能绕出去orz。最后看了关于词法句法的问题,但是没有完成实现(而且应该是不必要的)。

    六、心得体会

       这门课给我的感觉就是累。为了完成作业,需要学习许多东西,同时每次作业的时间也较为紧张,需要投入大量的时间。

      第一单元大体上讲的还是面向对象的基础,包括接口、继承、多态等等。我现在对于他们的使用自己认为还不够熟练,争取在以后的训练中继续练习巩固吧。

      另一方面,第一单元我应该是少有的没有搭建对拍器。这对于自己理解bug找到bug造成了一定的困难和压力。在讨论区许多同学展示了评测的设计思路,我也需要学习。

      总之,这门课的学习上我个人基础可能不是很好,所以我需要更努力的学习争取能够完成大部分作业的训练,在这过程中提高自己设计和测试的能力。

  • 相关阅读:
    oauth
    web api Authorization
    sql 找到前三
    js计算误差修正代码(真实版)
    js操作keyframes动态赋值
    元素拖拽缩放的jquery插件
    js生成组织结构树(原创)
    js图片拖拽、缩放、添加图层功能(原创)
    for循环,forin循环和Array.every(),obj.forEach()方法运行速度对比
    for循环+forin循环生成内容模版
  • 原文地址:https://www.cnblogs.com/kongyou/p/12518000.html
Copyright © 2011-2022 走看看