OO_Unit4总结

OO_Unit4 总结

一、本单元架构总结

总体而言本单元架构实际上为对uml图内各类图的架构进行模仿,对部分基本属性直接使用官方包类,而对部分需要实现复杂方法的单独复写类,以此构成本次作业。三次作业类图如下:

HW13

本次作业为对类图进行解析,架构为顶层的UmlInteraction,中间层的MyClass,MyInterface,以及底层的Myoperation。其余更基础的属性直接使用了官方包属性。

image

HW14

本次作业对类图、状态图、顺序图三种UML图进行查询,类图与第一次作业结构一致;对于顺序图,实现了顶层类MyUmlCollaborationInteraction,使用集合存储下层MyInteraction,MyInteraction下使用集合存储下层MyLifeLine。

状态图相对来说复杂一些,其架构自上至下可表示为MyUmlStateChartInteraction->MyUmlStateMachine->MyReion->MyState->MyTransition。

对三种图的解析器综合封装成MyUmlGeneralInteraction类作为对外接口。

image

HW15

本次作业相较于上次作业增加了对类图的检查,架构变动仅为在顶层类MyUmlGeneralInteraction类与三种图的顶层解析器之间增加了MyUmlStandardPreCheck类。

image

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

写在前面:作为一名重修生,相较于第一次学习课程遇到重重困难时留下的深刻印象,本次学习过程中基本没有遇到多少困难,大部分作业都能在几个小时内完成。在此主要是谈一些实践时的心得。

第一单元作业

第一单元作业由求导变为了拆括号,就我而言可以看作编译课程的简化版。因此我还是将编译时的方法应用到了其中:递归下降分析表达式,拆括号过程则相当于生成中间代码,而化简表达式相当于编译课设的优化过程。整体架构也采取了这种模式递归下降分析->拆括号->化简表达式。在上次学习中由于是初次接触面向对象且还要兼顾java语言学习,时间紧张,架构设计混乱,本次按照上述思路整体实践下来取得了较好的效果。

第二单元作业

第二单元作业在前两次采取了之前的架构,即输入->托盘->调度器->托盘->电梯的架构。前两次作业中输入、调度器、电梯均为线程,但在第三次作业中发现调度器作为线程而言并不能提高并发性,反而是临界区的设计让代码较为臃肿。

第三单元作业

第三单元在架构设计等方面并没有太大的考验,主要是锻炼了图的算法以及JMl规格阅读能力。

第四单元作业

第四单元作业架构设计并不困难,因为输入本身存在清晰的逻辑结构。个人认为难度更多体现在阅读UML源码,理解其构成。

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

测试方面:本学期的测试均为黑盒测试与白盒测试相结合,黑盒测试为主,白盒测试为辅。

黑盒测试:主要依赖于自动化的评测机等工具,该部分主要通过大量的生成随机测试用例测试基础功能的正确性,对于大部分强测点来说,使用这种手段已经足以通过。

白盒测试:主要测试一些极端情况和程序运行是否符合预期。就第一二单元而言,即使造出的数据点运行正确,依然可能存在个人设计的优化过程没有正确运行的可能,此时需要针对优化构造一些用例验证其运行情况;就三四单元而言,更多的体现在一些对图算法等时间复杂的的此时。

四、总结自己的课程收获

本此课程最大的收获还是体现在多线程程序设计,在上一次的OO学习过程中直到电梯单元结束才算真正对多线程编程工具的使用形成了正确的认识。而本此学习过程也是对其加以实践。期间还作了一次分享,也正是为了准备这次分享让我更系统地去学习了多线程编程相关工具,改变了一些错误的认识。

五、立足于自己的体会给课程提三个具体的改进建议

  1. 就实验课而言,我记得Java内存管理的那次实验课在两次学习过程中均存在同学难以在规定时间内正确理解并完成实验,可以考虑优化实验难度。

  2. 就研讨课而言,今年新增了小组讨论环节,但是依然容易在部分环节出现能力强的同学占了几乎所有的观点输出的情况,特别是每单元中期的研讨课大都会讨论下次作业的架构,此时尚没有开始的同学几乎无话可说。建议可以准备一些更丰富、参与性更高的问题,当然设计问题这确实是极具难度的。

  3. 一般而言,好的架构更容易取得好的强测成绩,以强测成绩对ABC room进行分类,那么本来在架构设计方面存在困惑的同学在互测环节中将某种程度上缺失学习优秀架构的机会。

posted @ 2022-06-23 19:29  Gyy+  阅读(36)  评论(0编辑  收藏  举报