面向对象总结博客

一、本单元作业架构设计

二、架构设计及OO理解的演进

  首先架构上,我个人在第一单元、第二单元、第四单元都进行了架构设计,在第三单元直接继承官方接口进行编码。

  第一单元的架构核心是层次化,把多项式分解为,项,因子等等成分,逐步求导。但第一单元的架构设计有较大不足,尤其是第三次作业,尽管参考了指导书的提示,但和官方参考代码相比并没有做到通过建模函数和函数组合规则把表达式构建为树结构进行求导,表达式拆分逻辑不够简洁,也不利于代码编写。此时我理解架构类似一种“做题方法”,好的方法会做起来简单,差一些的方法做起来复杂。

  第二单元的架构需要通过多线程建模物理世界中的电梯调度和运行,调度器、分配器、电梯、请求队列,编写程序时开始有了装配组件搭建系统的体验,更真切地体会到了“架构”的含义。

  第三单元我虽然只是按照官方接口进行设计,但我知道设计架构有诸多优势,比如可以更灵活地实现规格的需求等等,而且从函数的规格理解出软件的整体需求,然后设计自己的方案(就像第四单元一样)满足需求是对建模能力、抽象能力很好的锻炼。

  然后关于对OO的理解,面向对象是一种程序设计方法和思想,审视问题域的视角从结构化编程时的行为变为对象,我对OO的理解在学期内没有大的变化,但在第四单元学习UML时OO开发方法的相关知识得到了极大拓宽,而且当然整个学期过程中我对OO的熟悉和熟练程度一直在加强。

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

  我在每一个单元的作业中都进行了自主测试,构造生成测试数据,对拍或按规则评测自己的代码执行结果是否正确。

  起初,我开展测试的形式是用脚本生成数据运行程序查看结果,测试包括白盒测试和黑盒测试,关注功能和语句覆盖,边界情况等等,对测试的理解类似“输入样例”,认为是构造生成完整的测试集,以便查找程序中是否有bug。

  第三单元开始后我的测试形式和对测试的理解和以往有了很大不同。JML规格单元中我接触了单元测试和相关的自动化工具,第三单元的作业如果使用大规模的测试数据不方便判断执行结果的正误,而且每一次操作的结果是之前所有操作共同形成的,在某一个操作时程序运行错误完全可能是之前的问题,单元测试的必要性凸显了出来,可以使得测试数据作用明确,定点投放,避免重复,实现更加高效的测试。此时我开始使用Junit进行单元测试实践,另外由于规格确定后即可以事先构造测试,我也理解了测试可以驱动开发的作用。

四、课程收获

   一学期的OO课程结束了,我的主要收获首先最基本的在于java语言的掌握,JUnit,StarUML等等工具的使用,其次心理方面OO课程每周较为密集地安排作业,公测,互测,bug修复,实验对拖延习惯起到了纠正作用,而且在完成每个单元最后一次较为复杂的作业时就能清楚体会到平常递进的好处,另外经过OO课程一学期的锻炼会对敲代码更有底气更从容,最后最重要的是能力和思想提升方面,包括前面分析的架构设计能力,OO编程思想,测试能力,还有互测增强了寻找bug,hack的能力。

五、建议

   1.第三单元和第四单元建议在作业结束后给出官方标程

   2.优秀代码展示只包含pre,unit1,unit2,建议也给出第三单元和第四单元的优秀代码

   3.指导书可以更明确或事先审核充分,本学期有过几次作业发布后指导书修改、规格修改的情况

六、线上学习体会

  本学期由于疫情缘故一直没有返校学习,许多课程都做了相应调整,但我认为OO课程应该受影响较小,作业,实验,录播课等都可以正常线上进行,线上学习的体验可能和返校学习相近。OO线上学习唯一较强的体会是上课没有固定时间需要自己自觉学习并且有提前意识,否则会对完成作业造成障碍。

原文地址:https://www.cnblogs.com/buaa17373128/p/13166614.html