第四单元及课程总结

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

本单元作业是UML图的解析,UML图主要分三类:类图、顺序图和状态图,第一次作业是对UML类图的解析,包括查询类的数量、方法、参数、关联等信息,第二次作业是对UML顺序图和状态图的解析,第三次作业是基于已有的类图信息,对类图进行检查。总的来说,这三次作业属于递进式,基本上不存在重构的地方,只需要进行修改就好。UML图改为mdj文件后,输入后生成的类都是UmlElement,但是UmlElement显然并不能完全表示出UML图的信息,虽然有提供UmlElement的子类区别不同的元素,但是不好组织,为此我自己构建了新的类来构建体系。对于UML类图,最简单的想法就是我们构建出一个类来表示类,这个类里的属性就是UML类图的类的属性、方法等,同时还可以存储父类、关联、实现接口等,由于大多查询都是基于类来查询,故我们只需要找到这个类就可以找到关于这个类的所有信信息。为完成这个目标,就需要新增加新的属性、方法、参数、接口等类,同理,状态图则实现状态、region等类,顺序图则实现lifeline、message等类。

下图为主要架构:

 

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

这四个单元的OO学习,从多项式求导、多线程电梯、基于JML规格实现的社交网络到我们最后的UML图解析,我们设计过许多不同的架构,其中涉及多种模式,有工厂模式、生产者——消费者模式、适配器模式、观察者模式、单例模式等,在不同的单元,我们的架构不同,采用的模式也不同,甚至在一个单元内的不同作业架构也不尽相同。架构这种东西是基于需求来设计的,在我们设计架构的时候,又不能只满足于当前的需求,还需要考虑后续可能出现的需求,对于第一次实现来说,是比较麻烦的,但好的架构对于后续的开发却是十分重要的,可以大大降低难度。

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

关于代码测试,前期只会基于自己构造数据进行手工测试,主要是基于边界数据进行测试,这种测试对于简单的项目及一些非常常见容易想到的错误,可以测试到,但是效率很低,对于复杂的项目,也不太适合进行。

另外一个方法就是自动化测试,大多数同学都会采用python工具进行测试,或者进行对拍,由于不熟悉python,自己一直没有使用过,有点遗憾。

在第三单元学习了jml规格,同时也学到了一种基于Junit4进行的自动化测试,这种测试就比较好,在工程上也多使用这种方法。第三单元还尝试过Jml的一系列自动化测试工具,但效果不是很好,使用体验也不好。

第四单元是UML,UML主要是一种结构上的直观表示,结合类图、顺序图和状态图等,我们可以进行形式化的验证。同时,有基于UML的测试工具,但没有体验过,不做评价。

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

不得不说,OO的学习真是紧张又刺激,但是不得不说,从这门课真的可以学到很多知识,第一单元首先是从面向过程编程到面向对象编程的一个转变和适应,从多项式求导中学到了正则表达式的方法,以及架构的重要性。第二单元是多线程的学习,这也是以前没有接触过的,多线程可以实现很多之前不能实现的东西,对于操作系统的学习也大有帮助,祖传电梯也是十分的有趣。第三单元学习的JML规格以及第四单元的UML图,我觉得这两个单元的学习都是为了能够更好的设计我们的代码架构打下基础,给我们提供更多的帮助,如果我们以后进行项目开发,那么这两个工具一定能大大提高我们的效率。除此之外,还学习到了各种开发模式,如工厂模式、生产者——消费者模式、适配器模式、观察者模式等,这对于架构设计也有巨大的作用。总的来说,我觉得从面向对象这们课程确确实实学到了很多实用的知识。

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

1、多提供一些基础学习资料,毕竟这门课不教语法,对于刚接触java的同学,不太友好,提供一些技巧资料或者更多的提示会比较好;

2、适当缩短一下重复提交的间隔时间,漫长的等待确实不太好受;

3、多教一些实用的测试的方法,不会测试的同学很痛苦

(6)谈一谈线上学习oo课程的体会

线上OO教学是第一个学期,线上学习OO的总体感受还好,由于OO课程的考核主要是实验和课后代码作业,对于视频,有一些理论知识很正常,但我个人觉得关于实验和作业的内容比较少,所以会导致很多人不是对理论课的内容不是很感兴趣,毕竟理论知识比较枯燥无味。也正是由于面向对象主要的是实验和课下作业,主要是在课下完成,所以线上学习也还好。

最后感谢老师们和助教们这学期的陪伴,学到了很多。

猜你喜欢

转载自www.cnblogs.com/RiverTan/p/13165489.html