博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向对象第四单元总结
阅读量:5024 次
发布时间:2019-06-12

本文共 2001 字,大约阅读时间需要 6 分钟。

(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能够越来越好!

转载于:https://www.cnblogs.com/puublog/p/11072003.html

你可能感兴趣的文章
css:Media Queries: How to target desktop, tablet and mobile?
查看>>
复杂性研究相关论文
查看>>
大数运算(1)—— 加法篇
查看>>
Swift--错误集:couldn’t be opened because you don’t have permission to view it
查看>>
javascript引擎执行的过程的理解--语法分析和预编译阶段
查看>>
Java_基础—递归
查看>>
Apache+Tomcat构建Tomcat负载均衡集群
查看>>
学会去分享,也许会走得更远
查看>>
redis基本命令
查看>>
inherited 的研究。
查看>>
Hibernate由model类自动同步数据库表结构
查看>>
Android 架构 2.界面
查看>>
SPEL语言-Spring Expression Language
查看>>
设置nginx中文件上传的大小限制度
查看>>
C# 课堂总结3-语句
查看>>
精读《Scheduling in React》
查看>>
[Leetcode] 4Sum
查看>>
java.lang.StackOverflowError 解决方法
查看>>
hibernate事务控制
查看>>
[WCF编程]10.操作:请求/应答操作
查看>>