oo博客-UML单元总结以及oo课程的感想

最后一个单元UML主要是让我们去解析一个类型的文件,所以这个随笔不建议网友阅读,主要是针对课程的要求

一、总结本单元两次作业的架构设计

 

上面是第一次作业的架构情况,根据需求的特性,从MyUmlIteraction延伸出了class、interface和op自己的三个类。

第二次作业是基于上一次的拓展,由于新加的操作中有interaction,所以原来的interaction更改为MyUmlClassModelInteraction。基本上是基于上次的程序进行拓展和实现的。


 

二、总结自己在四个单元中架构设计以及oo方法理解的演进

其实4个单元的目的是很明确的。

第一单元重在理解java这门语言,然后通过一个愈发庞大的工程让我去理解对需求进行切割的重要性,摈弃之前的面相过程编程。

第二单元是让我去理解多线程,以及多线程冲突、交互的问题,让我理解synchronize使用的方法和调控多个进程间关系的技巧。以及对单例化的一些理解。

第三单元是注重性能,但不是算法层面的。更加让我理解通过存储已经计算完的内容避免再计算对性能的影响是格外的大。

第四单元注重对一个文件的解析的实例应用。其实有点像返回第一单元的感觉。但是这一次在第一次作业中我已经主动的将一些需求拆分出去了,不会无脑的使用面向过程的编程。


 

三、总结四个单元中测试理解于实践的演进

第一个单元测试的是标准的输入输出,程序的标准输入输出是很麻烦的。明显一点像括号匹配这样的问题,隐秘一点像字符串转数字,你还要考虑一些溢出的问题。

第二个单元测试的是多线程,这个时候某个输出的正确与否已经成为了测试的一部分了,另外一个部分是要让输入在不同的时间进行,捕捉异常的多线程行为然后才能找到问题。相比来说这比第一个单元麻烦了不少。因为即便你测试了一整天所有输出全部正确,也不能保证在某个时间节点进行输入的样例不会导致错误的输出。(这只能靠逻辑去验证了)

第三个单元测试的是你是否存储了已经计算完的内容并避免多次计算。这次就是是前面两者都没有问题了,你依然有过不了关的可能,因为你的测试输入输出即便永远是正确的,你也有可能会导致TLE。(老师也介绍了JUNIT)

第四个单元的测试跟之前比起来简单了不少,如果中测稍微强一点,强测满分不是梦。

综上,测试应该有如下的流程:①对标准输入输出进行测试,囊括各种非法输入对程序进行hack ②如果是多线程,可以将会导致子进程交互的样例按照不同时间节点输入对程序进行hack。③结合逻辑验证,盘查代码逻辑,对结果的准确性加上保险。④不断输入相同或者会使用相同数据结构的请求,验证程序是否对可能会导致计算的资源进行存储。


 

四、总结自己的课程收获

这个oo的课程,首先最明显的是我掌握了java这门编程语言,并且开始习惯使用面向对象开始变成(当我使用c++时也会自己建造类) 。其次是在第二单元学会的多线程的基础控制,这是在之前从来没有尝试过的。接着是对测试方面自己有个比较充分的理解,自己也可以有条理的编辑出一系列的测试点。最后是对继承、实现有了非常深刻的理解。


 

 

五、立足于自己的体会给课程提三个具体的改进建议

1.对于大三的同学来说,写最短路径之类的算法是相对轻松的,毕竟已经学了算法这门课,但是对于大二高工的同学们来说,最短路径这类算法还是增加了他们的负担。我建议程序中尽量不要去涉及算法这一块的知识点。(特别是最后还要求一个进行点扩充的最短路径)

2.在第二个单元中的多线程的工作量明显分布不均匀,第一次和第二次的难度相差太小,而第二次和第三次有巨大的改变

3.我觉得在指导书中应该着重强调强测中倾向的测试部分。比如在第一次JML测试中有很多同学没有进行存储导致了强测得不到满分。可以增加类似“请考虑如果相似/相同的请求重复出现”之类的提示。

4.(这可以算不是一个改进) 请不要拖更,最后一波拖更差点把我害惨了。

 

祝我旅途愉快。

 

posted @ 2019-06-17 22:42  Chauncy·Cai  阅读(263)  评论(0编辑  收藏  举报