代码改变世界

OO第四单元总结

2019-06-23 14:21  ilatei  阅读(227)  评论(0编辑  收藏  举报

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

1.第13次作业

本次作业要实现对uml类图的解析查询,由于没有确定的模型输入顺序,所以我进行了多次循环,首先将class和interface这些主干存起来,然后再加入方法、属性、参数等。本次作业的难度主要在对uml类图语句的理解,搞清楚每一个结构之间是怎么通过id联系起来的,特别是associate。

2.第14次作业

 

最后一次作业在上一次的基础上实现了简单的时序图和状态图的查询,难度不大,最主要的难点依然是搞懂unl语言的结构。这次作业的难度主要是三个有效性的检测,分别是元素重名、循环继承、重复继承接口。在实现的过程中没有遇到太多的问题,但是由于没有一个好的设计导致一个类的代码超长,最后我把三个图的解析、有效性的检查都分离出来。

 

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

第一单元

  第一单元的任务是求导,我觉得这个单元是面向对象味最浓的一个单元,在这个单元中我学到了java面向对象的基本概念,初步体会了面向对象的设计思路。难度较大,如何设计一个优雅的正则表达式,优化结果都不简单。架构上如何将各个部分的任务分解开,预处理、括号处理、加减乘的方法等等。

第二单元

  第二单元主要是多线程,几个线程一起完成同一个任务,不同线程之间的难点是同步与互斥。使用了单例模式保证只有一个队列,学到了如何使用wait、notify。架构比较明确,调度器、电梯、队列管理。

第三单元

  第三单元是JML规格。根据JML规格实现接口并且补全代码。主要是图的算法的实现和如何避免高的时间复杂度。主要通过保存每一次的计算中间的结果来加速之后的计算。

第四单元

第四单元的重点和第三单元都不在于架构设计,第四单元主要是对于uml图的了解。

总的来说架构设计主要在于功能的拆解,尽量做到解耦

 

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

测试并不比写代码简单,最开始测试主要是看关键部分的代码,如正则表达式、线程的等待唤醒;或者是生成大规模数据暴力对拍。后来解除了junit单元测试,通过测试各个单元来发现bug。

 

四.总结自己的课程收获 

1.代码能力得到了增强,有意识的在写之前设计自己的架构,可以自己写出近千行的代码。

2.java基本的操作,git的使用。

 

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

 

1.难度梯度的调整,尽量均匀。

2.互测一组8个人太多了,可以适当减少一些。

3.周一有os上机,周五晚上发布指导书,周二截止提交。可以改为周一晚上发布,周五晚上截止,可以和os的时间错开,不然周末真的挺忙的。