• 面向对象第四单元总结


    (1)总结本单元两次作业的架构设计  

    • 第一次作业类图
    • 第二次作业类图
      • 两次作业的实现方法差不多,第二次作业再第一次作业上增加了两种模型。
      • 架构设计上主要将需要保存和处理信息的类型自定义了类,可以便利地进行操作。
      • 一般来说就是按照要求的存放相应的信息,根据问题进行计算。这次的作业几乎是靠hashmap撑起来的,每加一个hashmap我都觉得很无奈,但又没有办法,必须要用hashmap进行索引。
    • 信息的访存大致分为三类:
      • 一、用递归的方式更新信息
        • 这次的问题很多需要向上搜索父类的信息保存下来,所以我大多采用递归的方式层层保存。
      • 二、涉及到循环的用floyd算法
        • 在第二次作业中更新了循环和重复继承的检查
          • checkForUml008:用的布尔函数检查可达性,如果index相同的横纵坐标可达,说明出现了循环.
      • 三、用List和Set对于重复性元素不同的容纳方式处理重名/重复元素  

    (2)总结自己在四个单元中架构设计及OO方法理解的演进  

    •  第一单元,表达式处理。
      • 这个单元主要训练的是正则表达式的运用,以及进行对面向对象思想的初步理解。在前两次作业中,我还不知道如何更好的进行更加面向对象的架构设计,感觉无法将各个类分开,写的十分杂糅。在第三次课之前,老师讲了一些方法,我的第三次作业在架构设计方面也有了进步。
      • 这个单元的最后一次作业运用了单例模式和工厂模式,学习了多态。在整个OO的知识架构里,我也最喜欢“多态”,用一种方法处理不同类型的对象。
      • 在这个单元里,学习了批处理数据测试的方法。
    • 第二单元,多线程电梯

      • 这个单元主要训练的多线程,模型也比上一个单元更加有对象的概念。在多线程的调试中,会发生很多意想不到的事情,测试起来也更加需要技巧。对于多线程之间的消息同步和加锁需要很好的考虑与设计。
      • 这个单元阅读了很多多线程相关设计模式,不过为了减少错误,还是采取了比较简单的消费者生产者模式。
      • 这个单元思考得比较多的还是电梯的调度算法,进行了很细节的优化。
    • 第三单元,JML

      • 这个单元主要训练的JML,由于环境配置的比较繁琐,然后实际运行的效果没有期望中的好,所以我对于JML的学习非常表面,现在仍然为这个单元感到遗憾。
      • 这个单元在最后一次作业中运用了建造者模式,学会了很多东西。
      • 这个单元思考得比较多的是图的算法以及如何高速计算缓存。
    • 第四单元,UML

      • 这个单元主要训练的UML,两次作业下来对StarUml的使用也挺熟悉的了。最后一个单元对面向对象的使用较之前已经熟练很多。这个单元主要是根据要求建模,所以也没有出现太多架构上的设计与思考。

    (3)总结自己在四个单元中测试理解与实践的演进

    • 白盒测试,四个单元递进的过程中,随着要求的提高,白盒测试耗费的时间越来越多,也可能疏忽到很多地方。第一个单元我主要检查了表达式是否写的完全正确,考虑得是否完备;第二个单元主要检查的锁的机制;第三和第四个单元主要检查的代码的细节有没有写错。
      • 代码复用性,代码复用性越好检查起来越轻松。
      • 代码模块化,低耦合高内聚的代码也能使检查更加高效,Junit使用的效果也会更好。
    • 黑盒测试,随着实际问题的不同,黑盒测试的方式也不同。如何构造测试样例是最关键的问题。

      • 第一个单元,主要是全面覆盖所有的表达式的情况。对于输入的合法性检查容易遗漏,所以既需要尽最大可能的自己想出非法数据,也要进行大规模的随即数据检测。
      • 第二个单元,由于加入了多线程,所以测试的时候还加入了多线程调试的方法。并且还在程序内部加入了DEBUG模式,能够动态显示各个线程的运行阶段,以及共享数据的转移情况。
      • 第三个单元,初期构造数据不全面,后期使用数据生成器构造大量随机数据进行检查。
      • 第四个单元,测试方法主要是自己画图,先分类考虑特殊情况,再画复杂的图进行随机测试。

    (4)总结自己的课程收获

    • 这学期的OO课程设置较之前有较大变动,所以总体来说体验很好。
    • 收获了很多知识:java,面向对象,设计模式
    • 收获了测试手段和工具
    • 收获了架构设计能力
    • 收获了阅读指导书的阅读理解能力
    • 收获了时间规划能力
    • 收获了总结与反思能力

    (5)立足于自己的体会给课程提三个具体改进建议

    • 时间线的变动会给同学们带来压力,所以还是希望能够在一个单元之前设置好时间线。方便同学们自己进行时间规划,也让彼此之间压力小一点。
    • 课上的PPT主要是提纲式的,在课下对我来说很难理解,希望能够易懂一点。
    • hack机制一个房间7~8个人让白盒测试的压力很大,所以基本上放弃了白盒测试。我的感觉7~8个人或许还是稍稍有些多,不过可能和课程组考虑事情的角度不一样。对我来说,更加喜欢一个房间4~5个人。

     

    感谢课程组和助教团队对这门课的付出!OO这学期的体验挺好的,希望OO能够越来越好!

  • 相关阅读:
    Oracle DBLink 使用情况
    asp.net里AjaxPro简单入门教程
    AjaxPro异步调用的超时设置
    ORA-01552: 非系统表空间 'USERS' 不能使用系统回退段的处理
    andoid 监听返回键退出
    WinForm调用user32.dll实现全屏
    C# Panel 打开 Form 窗口的方法
    Android获取日期及星期的方法
    WinForm 自定义对话框 获取返回值
    52. (待补) 实现对 无头单链表 的基本操作
  • 原文地址:https://www.cnblogs.com/puublog/p/11072003.html
Copyright © 2020-2023  润新知