前言

  OO第四单元的主要内容是UML的设计与学习。UML作为一种更能直观地表现代码结构的形式,在开始着手写代码之前先用StarUML明确一下代码结构无疑可以使正式写代码的时候更加方便,写出来的代码也更加结构化。

整体架构设计

  第十三次作业

  代码架构:

  第十三次作业主要思路是使用一个Initial类来初始化各种需要访问的属性,在之后的指令中,大部分只要对属性对应进行访问即可。这次代码出现的bug在于多初始化了一个属性。因为代码中对于孤立结点和与其他有继承实现关系的结点需要区别对待,用两个哈希表来存储,区分的依据在于后者的哈希表中是否有对应的key,如果没有说明是孤立结点,应该从前者的哈希表中取。但是初始化的时候对于所有的结点都初始化了后者,导致认为所有结点都有继承关系,出现错误。

 

  第十四次作业

  代码架构

  

本次作业继承了上一次作业的代码,InitialOther初始化本次作业需要的属性,并采用和第十三次作业类似的思路。这次代码没有出现bug,但是写起来很费劲。一个好的架构真的十分重要。。

 

架构设计和OO方法理解的渐进

  回顾整个OO课程的学习过程,最重要的就是学会了面向对象编程的大致思想。从最开始写C代码的时候,把整个函数实现的过程一一顺序写下来的面向过程编程,但如今学会将不同的功能封装成不同的类,各司其职,在需要的时候创建一个对象来实现自己想要实现的功能。同时写代码之前也学会了先思考架构。与其说是自觉地去这么做,不如说是被迫这么做。因为如果没有一个好的架构,可能自己的代码第二次读的时候就完全不知道在干什么。在写第二次作业的时候,看到第一次作业的代码后,索性重构。慢慢的体会到代码架构设计的重要性,在写代码之前先思考一下自己的代码应该怎么实现,哪些部分可以分拆,这些部分又是如何实现的,可能会出现bug的位置在哪里,可能会以怎样的形式出现bug,思考架构的时间往往是最长的,但是这是值得的。有了一个清晰的架构之后代码写起来十分流畅,不需要写一点代码想一下之后怎么写,使得整体代码更明晰,在之后扩展的时候也会比较容易。同时在第三单元作业的时候回看了一下大一的代码,感觉风格上还是有了比较大的提升的。

 

测试理解和实践演进

  因为中测的确是太弱了(这样也好,可以更容易的有效作业hhhhhhh。。),所以如果想在强测中取得一个好的成绩,在互测中不被刀到遍体鳞伤,那么测试自己的代码就变得十分重要。从大二上的计组开始,测试自己的代码的理念就已经开始萌生,并在大二下的OO课得到了强化。和同学一起对拍,或者自己写一个计算器进行标准答案计算,慢慢的掌握了测试的手段与技巧(同时也在java之余掌握了一点点python。。)。在实际应用中我觉得测试仍然十分的重要,给甲方的代码如果完全没经过测试或者测试的不够完全可能失去的就不是简简单单的分数了。在问题发生之前找到问题并解决问题的能力,也在OO课程中得到了培养。

 

课程收获

  首先收获的是学会了java。虽然老师一再强调语言的学习不是我们的重点,但是不会语言学起OO来在一开始真的很费劲。想要实现一个功能,实现完了以后发现原来java中已经实现了这个功能,以至于之后养成了想要实现一个功能就先查查是否有已经写好的方法供我使用。OO课程结束,我觉得我至少初步入门了java这门语言。其次就是面向对象的思想,改变了大一的编程思维,让整体代码更结构化层次化。同时也让我意识到代码风格的重要性,如果代码的结构混乱,风格很差,在debug的时候自己都不想看自己的代码。那么在以后的工作中,如果仍然保持这样的编码习惯显然是不能被同行所接受的,因此在OO课程中我也逐渐学会了良好的代码风格。

 

课程意见与建议

 关于OO课程在这个学期里看见群里吐槽的也有不少,但是我觉得其实没有什么。很多人吐槽延时,但其实我觉得他们之所以这么说是延时侵犯了他们的利益。我记得在第一单元和第二单元的第三次作业就延时过。课程的目的本来就是学习知识,并不是所有的人都天资聪慧,可能有些人学习新知识就是会慢一些,但是别人只要努力学习,可能迟一点,但是能够赶上来,稍微延时一下又能怎样呢?如果自己的代码真的够好,这些小细节想必也并不会影响自己的成绩吧?当然每一次我都是在ddl之前一到三天写完,所以我其实也并没有从延时中受益,但我觉得北航学子的心胸应该还是宽广一些,不要太计较这些细节(主要是觉得助教因为这个被怼有点心疼助教)。我觉得可能最后两次因为助教也比较忙吧,作业的发布时间和截止日期完全打乱了我的计划,所以希望之后还是周期性一些。同时希望第一单元的作业以后可以简单一些,毕竟可能很多人刚刚接触java,对于熟悉java可能都需要不少的时间,所以稍微降低第一单元的难度我觉得可能更好一些。最后希望在每个单元的第一次作业就提示一个推荐架构或者告诉我们之后作业可能会往哪个方向扩展,最开始的时候可能也因为自己的结构不够好,在后两次作业中出现了重构现象。如果最开始就有一个推荐架构或者告诉我们之后的扩展方向的话,会有利于之后作业的扩展。

  (最后,窝窝课程完结撒花~)

posted on 2019-06-21 23:09  Tinco  阅读(146)  评论(0编辑  收藏  举报