OO结课了,狂喜
- 哈哈哈哈哈
- 哈哈哈
- 哈哈
- 哈
第十三次作业
- UML类图
- 简要分析:
- 本次作业是对UML类图进行解析,给到的接口里面已经有了很多类了,但是自带的类肯定是没有反应这些类的结构的.所以就自己写了MyClass和MyInterface和MyOperation类.
- MyClass类内部包括了属性和方法,以及父类,以及实现的接口,以及关联对端,以及各种查询方法
- MyInterfaces类内部包括了属性和方法,以及实现的接口,以及关联对端,以及各种查询方法
- MyOperation类内部包括了参数和返回值,以及各种查询方法
- MyUmlInteraction则负责管理所有的类和接口,以及输入的解析
- 整体来说这样搞得搞得架构是富有层次性的,实现起来也不难,很多题目要求的查询方法都可以用递归的思想来实现
- 强测: 被卡了一个t的点,是因为图遍历的时候没有做好标记,算是对算法的复杂度的理解有深刻了.
第十四次作业
-
简要分析:
- 本次作业是对状态图和顺序图进行解析,整体难度不大,基本遍历就能实现.
- 基于上次作业,由新增加了MyInteraction,MyStateMachine,Mystate类
- MyInteraction存有所有的顺序图相关的信息
- MyStateMachine存有状态图的相关信息.
- MyState存有其可达的状态,可看作状态图中的一个节点.
第十五次作业
- 不放类图了,和上次的一样
- 本次作业新增了对UML类图的检验,上次作业除了存储信息上的一些容器选的不合理以外,其他方面都是可以直接使用往MyClass类中新增方法来实现检验规则的.
四个单元的总结
第一单元
第一单元是对表达式的解析,前两次作业是可以用一个公式就可以完成表达式,因子的抽象的,但是第三次作业加了括号以后,就比较难办了,于是看了课件上通过对不同运算的抽象来实现,于是进行了重构.课件上的方法果然好使,代码少了很多,重构起来也很轻松.这个架构对于性能的优化也是有很好的支持,只需要优化每种运算的结构即可.但是wf的检测还是出了大问题.
第二单元
第二单元是电梯多线程,没有了傻瓜电梯,一上来还是有点难搞的.吸取了上一单元的教训,第一次作业便开始好好的设计架构,改了好几个版本,才最后选了一个我觉得设计比较合理的东西交上去了.第二三次作业就稍微轻松一些了,加东西也都比较容易,但是还是出现了线程安全错误.这个单元以后对多线程的安全有了深刻的认识.
第三单元
第三单元是根据已有的助教的JML去实现代码,这一单元的代码体验还是比较容易的,但是第一次还是爆炸了.这单元讲的是契约式编程,但是要自己去写JML,还真是不知道怎么去下手.
第四单元
第四单元是对UML的解析,从架构的层次入手,来读系统进行设计,能够在写代码前就对考虑到其系统的可复用性,可拓展性等且UML独立于语言,在现在用到的也比较多.只可惜我的水平只能够画画图玩一玩了.
对测试的理解与实践的演进
在本学期的学习,除了oo课程的学习以外,也增强了自己做测试的能力.
- 第一单元采用的测试方法是随机生成数据与python的求导结果进行对比
- 第二单元采用的测试方法是随机生成数据并对结果的合理性进行检验
- 第三四单元采用的测试是随机生成数据并与同学对拍
但是强测还是出现了一些问题.互测也发现了不少bug
其次在第三单元了解到了单元测试,虽然在实际中没有用到,但是在架构合理的情况下,单元测试也是保证正确性的很好的方法.
课程收获
- 对于代码的审美发生了改变.从以前的一坨,到现在能够抽象出类来进行管理,好的设计写出来的代码都是简明的.
- 除此之外便是提升的敲代码的能力,我一天居然能写一千行代码.
- 还有就是测试的能力了,以前写过的代码都是直接上评测机,现在不行了,要自己测试了
课程建议
- 实验课可以不可以不对你写的代码进行纠错[吐血].
- 没了没了,希望oo助教身体健康,少掉点头发.
线上学习oo
- 理论课视频看着很容易走神,很难跟的上老师的步伐.虽然可以暂停,但是懒得按下暂停键.
- 研讨课的话能够学到一些别的同学比较厉害的技术和经验,听到大佬的分享,对我来说很有帮助.
- 线上做实验惊心动魄,一脸懵*