面向对象第四单元总结

一.本单元架构设计

本单元的主要任务是解析UML图,通过编写程序完成对类图,顺序图和状态图的检查和解析。

作业首先要充分理解类图,顺序图和状态图之间的层次结构,对类、接口与属性、方法等关系有一定的熟悉。本次作业完成相较于前三次作业较为简单,每一次都是上一次作业的增量开发,因此并没有什么特别需要说道的地方。唯一能够说的部分或许就是将类图,顺序图和状态图分为3个单独的类进行封装,随后在3个类中单独进行操作,而不是将3个图混乱地堆叠在一个类中,防止对我们后续的处理造成比较大的混乱。

第一次作业的计算属性的耦合度就依赖于遍历所有元素的数组进行递归的实现。

第二次作业的判断是否为关键状态,核心思路仍然是依靠遍历,获得点与点之间的关系,然后进行判断。

第三次作业检查循环继承,既使用bfs也尝试使用了我一直不太熟练的dfs,通过不断地遍历来进行路径探索。

除此之外,由于 cpu 时间较为充足,因此暴力算法搞定一切!

二.架构设计思维及OO方法理解的演进

一个学期的OO课程结束了,怎么说呢,我感觉我似乎的确有了一点面向对象的思想,在OO课程开始前甚至可以说第一单元作业前,我应该都还是死抱着面向过程的思想不放手,但随着OO课的不断推进,逐渐体会得到了面向对象思想的妙处,特别是在第二单元的过程中。在这一单元中,主要实现电梯的各种运行方式,将各种电梯看做一个对象,可以很好的实现高内聚低耦合的要求特点。随着OO课的不断进行,我也不断高呼着面向对象万岁!(面向过程也万岁!

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

四个单元中评测在我看来呈现一个山峰的形状:

第一单元只是手搓数据,因为测试数据较为简单,很容易得到数据。

第二单元自己编写程序开始构造数据,尝试建立评测机(虽然有点不太成功),因为电梯所需数据较为复杂,手搓数据较为困难。

第三单元和第四单元,稍微有点摆烂,转回手搓数据或者和同学讨论数据。

四.总结自己的课程收获

1.了解了面向对象的编程思想

2.提前学习了利用递归下降解析

3.成功实现了一个多线程的程序,了解了多线程的运行方式

4.了解了JML的相关内容,学会了规格化开发

5.了解了类图的相关知识

五.具体的改进建议

1.第一单元的作业有点不太友好,希望第一单元的第一次作业能够简单点,后续难度可以稍微提高。

2.课上实验时,希望在结束后提供一次额外的提交机会...

3.希望可以在初次测评时提供一个强测点,另外强测结束后找不到之前弱测的数据点...