OO第四单元总结

OO第四单元总结

一、架构设计

第四单元的目的是实现一个 UML 解析器,使其支持对 UML 类图、状态图和顺序图的分析,可以通过输入相应的指令来进行相关查询,并能根据 UML 规则进行一定的规范性验证。

在前两个单元里,我采取了将给出的element[]不做任何预处理,直接进行解析的方法,但是这种方法将几乎所有代码实现集中在MyImplementation类里面,既不符合面向对象高度封装的特点,又导致随着代码行数的增加,codestyle的处理难度逐渐增大。

于是第三次作业我进行了重构,将静态图的构建及预处理作为架构的重点,MyImplementation类仅作为使用各个解析方法的入口。这样高度封装的架构自然解决了代码风格的问题。

 

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

第一单元

第一单元为表达式的解析和化简,这也是我首次接触面向对象编程。这一单元充分体现了面向对象的特点,表达式、项等概念都符合“对象”的特点。本单元要根据表达式、项、因子之间的逻辑关联建立层次结构,中间借解析器等方法搭建系统框架,总结为“递归下降+表达式树”的方式。在本单元中,我们的代码工程第一次达到项目的级别,同时我也认识到建立一个好的,可拓展性的架构的重要性。

第二单元

第二单元的电梯调度让我们对多线程有了基本的认识。总体来说,本单元以“电梯”为对象,以生产者-消费者模型作为架构思维,关键点在于线程之间的互斥和同步(锁机制)以及调度算法。电梯调度需要根据电梯线程的特点进行设计。在这一单元中,横纵电梯的设计与结合,以及单例化输出都给我留下了深刻的印象。

第三单元

第三单元为根据JML规格编写代码。要求我们对JML规格语法熟练掌握。这一单元更加深入挖掘了OO课程中强调的“规范化”方面。之前两单元,对规范化的要求可能还仅限于代码风格,以及隐含在架构中,而在这一点单元则明确拿到台面上。并且在实际作业中,不仅要考虑规格,还要在性能上有所提升。

第四单元

第四单元主要是实现UML的解析器。这一单元不仅要掌握UML的前置知识,还要自己设计整体架构,综合了前三单元的特点。核心在于良好的架构,和图的数据结构及算法。清楚各元素之间的关系后,要通过整体的架构设计实现图的建立以及信息提取。

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

在四个单元的渐进学习中,我对测试的理解也不断加深。从第一单元刚上手时只会绞尽脑汁自己构造数据,到与同学进行对拍,再到合作利用评测机构造数据进行测试。测试中不仅要注意到随机性和全面性,还要对极端数据进行重点关注。

四、总结自己的课程收获

这门课程提高了我编写代码的能力和素养。小到git的使用、代码风格,大到JAVA语言的学习、架构设计、程序测试,各方面都得到了提升。每周作业中,从阅读指导书、到考虑架构,上手编写,程序测试,bug修复,这整个流程下来所带来的提升,是我之前编写算法题或小程序所体会不到的。

这门课程让我对面向对象有了十分深刻的认识和了解。理论和实践课结合,让我学到了设计模式、多线程、JML、UML等理论知识,还深刻体会到面向对象中的思想,这些思维习惯会伴随我到未来专业课,乃至工作后的编程工作中。

五、三个改进建议

1.希望能压缩三四单元的进度,尽量不要将ddl设置在考期当中。

2.平时训练实验的结果能有反馈

3.对于评测机的搭建以及代码测试方面,希望能在pre或者课程之初提供一些资料供同学们了解

posted @ 2022-06-29 15:31  陶索梓  阅读(31)  评论(1编辑  收藏  举报