第四单元作业架构设计
第四单元主要是针对UML类图解析器来设计程序,深入了解UML类图的各类数据结构,状态图,顺序图等内容。在这里我主要针对UML类图第一次作业做出总结。
第一次作业是解析mdj格式文件中的各类数据,通过实现一个UML类图解析图,来通过指令查询有关类图的信息。
在程序中,设计自己的类MyUmlInteraction,通过输入经过处理后的mdj格式文件,区别处理包括类,接口,操作,属性等数据结构。在我的设计中,我主要针对class,interface,operation三种数据作出处理,分别创建新的类,并在读入所有数据后处理好各类数据的从属关系,比如在class对象中记录所包含的operation,attribute等。而对于关联,继承信息等数据,也都记录在相关类或接口中。
在bug修复过程中,最主要是要处理好继承有关的信息,注意多继承,接口和类的关系等。
四个单元中的架构设计及OO方法理解演进
架构设计
第一单元
第一单元主要是处理多项式求导相关问题,作为作业入门的第一单元,实际上并未很好的运用好面向对象这一特点来设计自己的java程序,还是运用面向过程的相关知识来解决求导问题,这也导致了程序的复杂性以及不可扩展性,随着作业要求的一步一步加深,程序的难度在面向过程中越来越难,最后也导致了一系列的性能bug。
第二单元
第二单元是针对多线程编程,在第二单元,逐渐对面向对象有了一个初步认识,也开始尝试运用多个对象来解决问题,尤其是在多线程的作业中,通过设计调度多线程,去解决死锁问题等,学会使用wait和notify。
第三单元
第三单元是针对JML行为接口规范语言的学习,通过这一单元的学习,也是在java面向对象的程序设计上有了更好的规范化设计习惯,在程序中主要对于给定的JML语言来实现相应的需求,运用效率跟高,性能更好的数据结构来处理给定的数据,运用合理地算法来高效完成接口任务。具体而言,主要的难点是图的最短路径相关算法,通过不断地设计改进得到更好的理解。
第四单元
第四单元主要是针对UML类图的学习,通过对类图的深入分析,了解到各种数据是如何被规范存储,以及各种关系,顺序图和状态图。但是个人觉得在状态图和顺序图的理解方面还做得不是很好。
方法理解
对于OO方法的理解,感触最大的就是要学会创建类,对于不同功能,经常使用的数据类型及其操作,尽可能地开出新类,对于相同类型,操作不同的可以考虑继承关系等等,总之不要在一个类里堆砌过多的琐碎内容,学会让程序变得可视化,变得简洁,易于读懂,也要为功能的扩建,结构的重构提供方便。
四个单元的测试理解及实践
其实在测试方面一直做得不够好,从多项式处理开始,只是通过大量的边缘数据,或者“大”数据来检测程序是否有bug,再通过简单的调试功能及对程序结构,算法的分析找到自己程序的问题并解决。而实际上有时候由于程序的不够简洁,有些bug需要大量的重构,也是造成了效率极其低下,所以程序的架构也是在完成作业前需要重点考虑的。
课程收获
在面向对象这一课程中,重点便是学会面向对象这一重要技能,虽然在一开始确实很难运用面向对象来实现自己的程序,但是通过一次又一次的作业练习中,找到了使用面向对象的技巧。除此之外,对于如何处理多线程程序,理解JML,规划化程序,理解UML类图这些知识,都对深入理解面向对象程序有着极大帮助。
改进建议
首先是关于测试调试相关问题,我觉得可以在课程上介绍有关知识,介绍一些小经验之类的;
希望对于一些难度较大的作业,比如每个单元最后一次作业,可以将时间适度放宽一点,可以占用一点写博客的时间,这样会更均衡一点;
最后是希望指导书可以更友好简洁一点,让同学们更好更快地得到作业重点要求以及一些同学比较关心的细枝末节。