OO第四单元-終わり

(1)总结本单元两次作业的架构设计

       两次作业的设计架构图如下:

第十三次作业

 

  第十四次作业

 

  从第三单元开始每次的作业架构设计都是官方提供接口然后我们对接口进行重写,但是我发现了一个问题:如果所有方法都在继承类中直接实现,程序会变得冗长,同时不容易进行代码走茬。在前几周的作业中我都没太注意这件事情,导致程序长度扣分同时也不好找到各个方法在程序中的位置。这对于我查找bug真的是很大的打击。但是在最后一次作业我终于开窍了(真的是棵后知后觉的木头),我将新拓展的几个方法的实现方法放在了其它方法类中了。但是由于这次作业是从第十三次作业拓展而来,又赶上考期,我没有时间将之前的代码进行重构,导致这次作业的整体架构还是非常混乱,有很多bug没能够找出来。

 

(2) 总结自己在四个单元中架构设计及OO方法理解的演进

       由于本人的编程水平处于下游,再加上这个学期开学前才开始接触java语言,基本上每周我都要花上大量时间在这门课程上。而花的时间最多的地方就是阅读指导书和架构上。

第一次作业我采用了一main到底的方式,现在看来非常的low,也导致了那次作业没能够进入互测。到了第二次作业,我把方法放入了另一个方法类中,写了两个java类。到了第三次作业,求导的内容变得更加复杂,一个类已经不能满足需求了,我使用了多个方法类,但是命名的方式是method1、method2这种。而且每个方法类中的方法比较杂乱。比如说,我把某类函数的求导方法和表达式合并的方法放在了一个类中,导致了杂乱无章。同时,三次作业我重构了两次,可以说我写的程序完全没考虑到可拓展性,是面向过程的。

第二单元的作业是多线程。我吸取了第一单元的教训,在构造时考虑了多电梯的情况。所以这次的三个作业完成得比较顺利(感谢荣老师,在我完全没有思路的时候提供了很好的构造思路,即调度器类搭配电梯类的方法)。可以说这个单元我很好的做到了面向对象编程。多线程本来就是一个实时的面向对象问题。我通过OO方法的学习,将电梯问题抽象、解耦,可以说这个单元我的思维非常OO了。(笑)

第三单元的基本架构已经在官方包中的接口给出了,这个单元我犯了个错误,即认为从接口把类继承后就直接在这个接口类中完成所有方法就可以了。其实我应该把几类功能分配到几个类中,建立一个地铁系统负责发送和接收消息,结果我做的跟第一单元的一main到底也没什么区别了…(这不OO,我的OO理解还是任重道远啊)

(第四单元的架构在在上文已经提及,这里不再赘述)

 

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

       要测试得充分就需要完备的测试用例集。由于我的编程能力有限,无法写出自动化测试脚本,基本上每个单元都是自己手工搭建测试集,但是由于对于助教大大们的测试重点和我设想的大都不一样,所以最后还是要照着在线评测机找自己的bug。第一单元的测试用例还比较容易完备,第二单元由于是多线程,对于临界数据以及程序执行顺序的检查都非常讲究,评测结果是和本地的环境有关系的,所以bug也有很多玄学的地方。第三单元引入了单元测试,同时还要达成覆盖性测试。第四单元的测试主要是针对UML图,想要完备测试比较困难。

       经过这个学期的debug事业,我从一开始的面向评测机编程变成了现在:在拿到指导书后,仔细思考在什么关键细节容易出错。先编写基础样例检验方法运行的正确性,再针对临界条件编写测试用例检验程序的鲁棒性。但是,依旧有很多细节无法检验到,导致中测和强测还是有很多bug。究其原因,是我自己编写测试用例效率低下,导致覆盖性不好的同时也无法检验大量数据的正确性。如果能够做到自己编写脚本并能够和他人程序对拍的话相比现在一定效率会更高。

 

(4) 总结自己的课程收获

       OO这门课程对于我来说是很大的挑战,因为我编程能力本来就比较差,再加上对java的接触时间较短,一开始我很焦躁。但是在几周的学习后我发现只要沉下心来一步一步来还是能够跟上的,以下是我在这门课程的一点收获。

       首先我深刻理解了面向对象的思维,以前编程都是面向过程的C语言和python,但这学期我接触的C++和java都是面向对象的语言。通过这门课程的学习,我知道了如何搭建架构,如何创建对象,如何多线程编程。

       其次,通过这门课程我的编程能力得到了提升,我懂得了用模块化的思维进行编程,通过使用多种设计模式搭建模型进行编程,这是我在OO这门课程中通过大量实践所获得的。

       当然,JML和UML的架构学习也是非常重要的。如果只是一味提高码代码的能力,是无法在这条道路上走得很远的,对于架构知识的学习,有利于我在编程之前利用面向对象的思路搭建好框架,起到事半功倍的效果。虽然我对于这个部分的学习还是不够,但是学到的一点皮毛还是让人受益匪浅。

       最后,就是测试的学习了。通过面向对象课程的互测公测环节,我知道了如何查找自己程序中的bug。同时,checkstyle文件也让我开始审视自己所写程序的美观程度,提高了我的代码风格。

 

(5) 立足于自己的体会给课程提三个具体改进建议

       其一,盲测的测试数据能否公开呢?最后几次作业我的中测都卡在了middle_5这个点上,问了很多人,自己也找了很多bug,但是就是不知道为什么出错了。能不能在中测结束后公布这两个盲点呢?因为强测的数据量和中测相比不是一个量级的,所以我觉得先从中测的错误找起会有利于强测的bug修复。另外,我希望中测的盲测点不要太过刁钻,我觉得盲测点所测试的应该是几类方法的综合应用,而不是卡特殊情况的(或许是因为我太菜了才被卡,但是我觉得卡刁钻的点实在是得不偿失,也许知道盲测用例后会大喊一声“原来是这样的啊!”但是有时候卡盲点的很大可能性是对指导书某个细节的理解有偏差,这种阅读理解问题确实很头痛)

       其二,后几次作业的指导书很多细节都没说清楚,导致大面积的歧义。尤其是最后一次作业的指导书,很多概念界定都没说清楚,结果评论区里一波又一波的提问和修改。我写最后一次作业的时候隔一段时间就要看一次网站,然后还要返回去改自己之前的代码,最后自己都凌乱了,不知道谁对谁错。我希望,尤其是最后两个单元,指导书应该更加详尽一点,因为这终究还是靠评测机打分的课程,最终解释权都在评测机上,因此指导书还烦请写得更加严谨详实一点。

       其三,难度梯度的设置还需要改进,比如说第三单元最后一次作业,和前一次作业比起来难度上升的太大了,引起本菜鸟的强烈不适,最后的成果也是稀里哗啦的。另外,希望课程组可以提示一下每单元的拓展方向会是什么,这样在写前几次作业的时候不会走太多弯路。

 

这学期的OO课程终于告一段落,感谢陪我一路走来、给我带来帮助的老师和助教大大们!

转载于:https://www.cnblogs.com/17231073oo/p/11073561.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值