2022 OO 第四单元个人总结

2022 OO 第四单元个人总结

一、本单元架构设计

  • 下图为整体架构,按照给定接口将Implementation类分为ClassModelApiCollaborationApiStateMachineApi三个类分别解决问题,另外设BasicTypeCheckNameIdToNameNameToId为工具类供Api下实现的所有类使用。

  • 以下为ClassModelApi的架构:

  • 以下为CollaborationApi的架构:

  • 以下为StateMachineApi的架构:

其中我们关注到CPU时间为10s,并且对于所有算法尽在初始化时运行一次即可,所以我们可以dfs暴力解决不考虑时间复杂度。

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

课程最大收获就是面向对象的思维看待问题。

从第一单元每个类的每个属性都设置为private后创建get方法,在类外面实现功能;到第四单元基本不使用get对每个功能实现方法;从第一单元类混乱在一个文件夹,到第四单元各个类井然有序;从最初不知道什么是设计模式,到现在理解设计模式为更好的实现架构的一种模型。

在一学期的学习中,我真正的学习到了面向对象的思维。

面向对象是一种看待世界的思维方式,没有了上帝视角,组成系统的每个基本元素管好自己的事情,整个系统将井然有序,能够实现非常复杂的功能。

在第一单元的表达式运算中,我学会的大量的java语法与递归下降的思想,但架构有些混乱,鲁棒性极差多次重构;在第二单元的电梯调度中,我学会了初级的多线程编程,熟练使用继承避免重复造轮子,架构清晰,可以完成迭代;在第三单元的JML学习中,我感受到了JML语言的清晰,但其复杂的表达是制约应用的一大问题;在第四单元的UML的学习中,我对于架构的理解更加深刻。

三、测试理解与实践的演进

  • 第一单元:通过正则表达式生成测试样例,并测试边界数据;

  • 第二单元:由于解决多线程问题花费了大量心力,主要进行了随意测试点的对拍;

  • 第三单元:主要对CPU时间进行测试;

  • 第四单元:由于具有有限的功能,所以对所有功能进行测试;

四、课程收获

课内最大的收获在于OO思想的学习,并提高了我的架构能力、模型设计能力;另外在课程中对于java也有了基础的应用,对于其多线程编程、数据结构等有了一定的了解;同时也提高了我测试与debug的能力,做出一次作业对于自己也有很大的满足感。

另外课上测试是我上过最快乐的机。

五、改进建议

  1. 希望上机能安排在一周变成的前半段,因为上机会为我们提供很大的思路,在前两单元尤为明显。如果多线程没有理解上机的思路,在线下自己coding时会走很多弯路。

  2. 虽然java语法不是重点,但希望能设置一些java语法、数据结构的tips或者链接。

  3. 希望讨论区能具有检索功能。

posted @ 2022-06-20 23:00  iLoveFox  阅读(51)  评论(0编辑  收藏  举报