面向对象第四单元个人总结

OO第四单元个人总结
一、本单元作业的架构设计
本单元要对UML类图、顺序图、状态图进行解析,对于传入的元素,在MyImplementation根据不同元素的elementType进行分类,分别存入新建的classes、attributes、operations等Arraylist中。在方法的实现中,不再需要遍历整个元素列表,只需要在对应的类中寻找符合条件的元素即可,根据不同元素之间的关系进行程序的编写。
类图如下:

二、在四个单元中架构设计思维及OO方法理解的演进

第一单元作业:

在刚接触第一单元时,由于对java语法的不熟练,仅仅是在学习理解语法方面就遇到了一些困难,花费了不少时间,其次是在理解题目方面,题目本身的背景很简单,但在真正用程序编写时却无从下手,首先要对表达式的结构进行理解,上下层次搞清楚,然后通过编程,建立不同的类,进而进行程序的编写。

第二单元作业:

对于第二单元中多线程的相关知识,我可以说是非常不熟悉,在进行作业程序编写时也运用的不熟练,本单元首先要学会锁的使用和并发线程的互斥,不能产生死锁、轮询的情况,要利用生产者消费者模式进行程序的编写,建立schedule类进行reuqest的分发,运用恰当的策略,比如look策略进行乘客的接送。

第三单元作业:

第三单元主要考察JML的理解,首先要对作业的背景进行了解,知道它描述的是一个社交网络,从而便于JML语言的阅读与理解,在JML的理解方面,并没有多大的困难,只要掌握了基本的JML语法便可以理解,主要的困难是在算法的JML语言描述的理解方面以及算法的编与优化方面,需要在方法中实现prim、kruskal算法、Dijkstra算法、并查集的应用,还要进行优化,以防超时,从而学习了众多算法知识以及优化的方法与技巧。

第四单元作业:

第四单元主要考察UML图的解析,需要对UML图的各个关系进行理解,以及在语言中是具体如何实现的,从而在解析时能够根据关系进行方法的编写。通过几次作业,我也对UML图的实现有了更加深刻的理解。

随着学习的深入,我越来越体会到架构的重要性,要学会类的设计,在面向对象方面有所提高,而不是一味地面向过程。

三、在四个单元中测试理解与实践的演进

由于时间的关系,我在测试方面花费时间较少,测试方法也不够成熟。

第一单元:主要靠指导书中的样例进行测试,其次是自我构造数据,考虑全面,防止特殊的数据产生错误。

第二单元:主要靠指导书的样例和测试的公开数据进行测试,出现错误时在不同的地方用while进行测试,找出具体出现bug的地方。

第三单元:前期主要靠指导书中的样例进行测试,后期通过与同学进行对拍测试发现bug并进行改正,发现运行速度过慢从而进行优化。

第四单元:主要通过指导书中的样例进行测试,以及通过手动构造数据进行测试。

测试很重要,一些简单数据能通过,但是在遇到特殊数据时极有可能出现考虑不到的情况而出错,所以一定要在编写完成后多多进行测试。

四、课程收获

1、学习并熟练运用了IDEA和java语言。

2、体会到了设计架构的重要性,一定要在编写程序前进行架构的设计,不能盲目编写程序。

3、学习了面向对象的思想与方法。

4、学习并理解了多线程的相关知识。

5、学习并了解了JML和UML的相关法则。

6、提高了debug的能力。

五、改进建议

1、在实验后公布参考答案,帮助同学们更好地进行理解,而不是在做完实验后一头雾水或是对自己的答案不确定而不敢应用。

2、课上讲解时不能太过于注重思想与框架的讲解,要在课上讲解时加入一些基础知识的讲解,对于刚入门计算机的学生,连基本的语法和基础知识都不懂,何谈思想框架。要让学生在拿到课后作业时对基本的语法和基础知识已有一定的掌握,而不是让学生在拿到课后作业时纯纯自学。

3、JML单元应多多考察JML的理解与应用,而不是太过于注重数据结构与算法的考察,使得算法的编写成为得分高低、是否被hack的关键。

 


 

 
posted @ 2022-06-28 11:27  苏俊行  阅读(18)  评论(1编辑  收藏  举报