OO已经进行了三周的学习,在这段时间里我遇到了种种困难,也学到了一些知识。
因为本来这三次作业我都没有通过,这个分析个人作业的任务无从下手,所以我尽量补完之前的作业再进行分析,如果还是没有完成的部分就先分析作业里的难点,记录补上作业的过程。以下是我对近期学习的一些反思和体会。
首先是说明学习现状,OO课程的任务很重,如果有五次无效作业就会判定不及格,现在我已经有三次无效,相当于站在了不及格的悬崖边上。因此接下来的每一次作业都非常重要,马上要放清明节,在这个期间我要把下一次作业尽力做好开始改变。
其次是分析为什么会有这个结果:
第一是之前没有JAVA基础,并且上学年的C语言也理解不深入,导致现在学习新语言很吃力。在写作业时,不熟悉语言让我要用更多的时间完成自己的想法,甚至根本完成不了自己的想法。这是目前最紧迫的问题,需要从语法学起,通过例题的事件来完成。
第二是时间投入不够。这个学期的开始,我准备补考占用了较多时间,错过了熟悉JAVA和编程环境的很多时间,以后的几次作业也越来越紧迫。另外更重要的因素是我在遇到困难时没有坚持克服困难的勇气,几次失败后就直接放弃了。老师说想要完成作业至少需要二十个小说的投入,而我不仅基础不好还投入时间太少,这种态度是没法写好作业的。
第一次作业
第一次作业对编程设计并没有太多要求,只是考察基础知识和对指导书的理解。
我当时对JAVA一窍不通,没有看多少语法就先找到例题,模仿着写了几个类,直接用C语言编程时的思维完成了要求。
面向对象的思想完全没有理解用上。这是我第一次作业最大的问题。
问题二:第一次作业中我知识储备的不足也是一个大问题。例如需要用到的正则表达式我完全从头学起,最后得出的结果却显示我编写的正则表达式不能正确实现功能。
问题三:第一次作业我花了大概五小时读懂指导书和学会使用git提交作业,输出的结果没有完全满足手册要求的输出,修改了一处错误又增加了更多错误。分析来说这应该是因为我对程序整体结构没有把握,想到哪写到哪。正确的做法应该在阅读指导书后整理出具体的程序思路,然后边写边进行发现错误和修改错误的过程。
类图:
类的内聚性一般,相互间的耦合性也较差。最重要的是没有实现要求的功能!
度量分析:
第二次作业
第二次作业是在认识了对象和类的特性和用法后进行的作业,开始考察对面向对象程序设计的理解了。类似上课时的员工例子可以写出一些基本功能。
第三次作业
第三次作业是在第二次作业的基础上进行的,继承多态和抽象是学习的主要内容。
第二三次作业我用的时间不足,最终都没能通过测试。由于我的第二次和第三次作业都还没有通过测试,这里就不能进行完整的程序分析了。但是可以分析没有写出来的困难在哪里。下面是我借用学姐的代码和自己的进行比较分析。
学姐的类图:
学姐的度量分析:
对比之后,我的程序电梯功能没有实现的原因有以下几个:
1.我的程序每一个类都太大了,还是没有摆脱C语言编程以函数为主导的思维,又强行模仿别人面向对象的做法,最后成了四不像,结构非常混乱。
2.遗漏了多种情况,或者说不会应对不标准的情况,这是我编程能力的缺失。
3.具体到每个类则是程序有警告但是不会消除。老师说警告是非常危险的并且不应该忽略,我还需要向同学学习如何去除那些警告。
心得体会:
1.编程的时间付出非常重要,遇到困难应该花更多时间解决而不是直接自暴自弃。阅读指导书需要时间,设计程序结构需要时间,具体写程序和调程序需要时间。我应该有更多的耐心,尽量补上与别人的差距。
2.编程之前需要思考怎么写,否则写到一半经常发现没办法接下去,只好从头再来,这会浪费更多的时间。
3.多和同学交流,很多时候自己一个晚上也没发现错误怎么改才对,别人已经经历过很轻松就能指出问题。来回在自己的思维中打转,这样的时间浪费是无意义的,多加交流可以促进自己程序的改进。