第四、五次大作业和期中考试总结
一、目录
前言
设计与分析
心得
主要困难以及改进建议
总结
1.前言
第四、五次作业个人觉得在知识点上是没有增加的(可能是自己没有运用到),期中考试难度也不怎么大,总之,只要认真听过课,大作业认真完成,期中考试的题目是能过的,另外,大作业一经发布,就要立马开始做,不要去拖,等到后面你会完不成,再者,作业上很少运用到现学知识,我感觉这是一个不好的习惯,学到的知识应该现学现用,才能巩固知识点,大多数的作业还是按照以前C语言所学来写,应该尽早摆脱这种现状。到如今java讲得最多的还是面向对象的思维,掌握面向对象的思维方式是十分重要的,这里对于第四、五次大作业和期中考试,我罗列以下知识点,用的最多的就是类设计,还有继承与多态,抽象类与接口,还有就是在大作业上你可能会用到一定的正则表达式,这在判断输入格式如在菜单格式,订单格式的判断中发挥着极大的作用,学好正则表达式,可以从网上搜索相关的如中文的正则表达式的写法。对于这些所罗列的不会的知识点,一定要多看看网课,另外,多在java编译器上跟着老师敲敲代码,能够让你对这个知识点有一个更深的了解。
2.设计与分析
(1)第四次大作业
主要是在一个点上过不去,然后卡了好久,结果点过了,但是分数却是极低的,因此在下次大作业如果出现此种情况,应该果断放弃,去过另一个测试点,不要死磕。自认为自己代码的设计还是过于复杂,但自己在某些代码上还是做了一定的注释,极大方便了之后的修改与查看。自己对于整体的代码设计感觉还是不怎么说得过去,由于自己的代码是未能够完善且得分率不高,这里不做更多的进行图表之类的分析,在汲取这次大作业的错误与分析后,本人进行了代码的重写,在一定程度上还是能通过许多的测试点,所用知识点不多,总体上还是运用面向对象的思想,里面的代码内容还是停留在C语言的层次上,我觉得今后应当好好运用现学知识,不然的话学java感觉没有学到什么。
(2)第五次大作业
这次作业的得分率高,尚且只有一个测试点没有通过,这次作业开始写的时间早,是作业开放的第二天就开始写,所以我才有了足够充裕的时间来写我的代码,还有就是作业遇到不懂的或者遇到过不了的测试点,可以多向同学询问,在问之前可以自己想一想怎么解决,然后再来问,个人认为这样可以提升自己的思维能力,在整体设计上,我写了五百多行的代码才将其实现,事实上许多代码在这一次大作业上都用不上,还是根据上一次作业进行修改而来的,要是进行一定的删减的话,估计400行左右就可以实现,在代码复杂程度上,我觉得可以对其进行一定的简化,就比如可以对类进行改进,在类中实现更多的功能,再有,就是可以运用一下继承的方法,相信可以使代码更加简单,对于一些格式的问题,可以运用到正则表达式的知识点,比如判断输入的内容是否是中文,我是这样写的,首先定义一个格式,String pattern1 = "[\u4e00-\u9fa5].*",然后就可以将其与其他的格式进行组合,这样判断格式就不成问题,在格式上的问题就解决了,许多新增的功能都可以往是否建立类来解决,当实现一个功能不容易时,这种思想是正确的,比如,代点菜和桌子,就可以建立一个桌子类来储存桌子所点菜的信息,这样在计算桌子所点菜的总价上这个功能就容易了许多,在输出上也更为方便。以下是我用SourceMonitor来分析这个菜单计价的图表:

从图中来看,尤其是从这个柱状图来看,就可以看得出我所写代码的复杂度之高,最高已经超过60,由此,代码的复杂度超高,真可以好好修改一番,来降低复杂度,最高复杂度高达93,平均一下也就47,超出了正常范围40,也许在源代码的基础上删减一些兴许能降低一些复杂度,毕竟多了许多与这次作业无关的代码。
(3)期中考试
期中考试设置了4道题目,在总体来说,难度是不大的,主要知识点为3个,考的知识点不算多,知识点分布如下:1.类设计,2.继承与多态,3.抽象类与接口。但鉴于对知识点掌握的不熟练(平时也没有勤加练习,在几次大作业上都没有运用到知识点),所以当遇到自己不怎么会的题目,还是再次运用了面向过程的思想来写,就比如7-4的对图形面积进行排序,还是运用到了上学期C语言所学到的冒泡排序来写的,我深深感觉到自己对java这门语言没有过深的学习,尚且还是停留在上学期的思想当中。这四道题目总的来讲是关于类设计的,主要考察对面向对象的思维方式,合理运用类设计,在类当中设置合理属性和方法,是我们做对题目的关键,比如继承与多态这个知识点,前面7-1,7-2这两道题目我觉得尚且可以运用面向过程的思想来做,但到了7-3,7-4就不得不运用面向对象的思想。对于7-2来说,题目给了类图,照猫画虎,实在有点简单,该类图如下:

所给类中的方法和属性都已经明确的给我们了,我们只需要照着类图来敲写出正确的代码即可,对于这四道题目,我抽取了7-4进行图表分析,在SourceMonitor的分析下,得到以下图表:

这段代码可能因为行数少,思维简单,所以可能在复杂度上并没有太大。对于7-1到7-3这类题目来讲,个人觉得不必要太过于仔细分析,这三道题目在难度上没有太大,所以只是略微说说。
3.心得
通过这两次大作业及期中考试,我发现了许多我的地方的不足之处,不会运用所学知识点,还停留在C语言的层面,对于现学的知识点,不能够很好的掌控和理解,从中我学到的是应该对所学的知识进行一个整理,对于知识点应该在老师讲完之后再找几个题目来练习一下,应该在每次大作业发下来后对其进行一个合理的规划,看看哪个地方可以使用一下今天老师所讲的知识点,对于刚写完提交的代码可以进行一次审查,比如对于自己所设计的类中的方法和属性,可以再进行一次简化,进行修改,再对Main里面的内容进行怎样的修改才能使其精简更容易看懂,自己的代码应该多一些注释,多一些文字性说明,这样在下次大作业来临的时候也会更加容易修改,期中考试让我明白多对知识点进行打磨和练习,这样才能临阵不危,才能在考试中从容应答,熟练掌握知识点是我们应对考试的必需武器。另外,对于自己一直所没有通过的测试点,可以先试着放下,说不定在过其他测试点时就想出了解决办法,像我的第四次大作业就是个反面教材,可以说没过测试点,又没拿到分,还白白浪费时间,所以,在汲取了这次的教训以后,在今后在也不会犯错了。
4.主要困难以及改进建议
对于这个作业及期中考试,个人认为主要的困难还是在于对Java知识点所掌握得不够熟练,不会使用所学到的知识点,就算在大作业上,很难找得着能让我使用知识点的地方,许多的知识点就算学到了,因为没有勤加练习和记忆,到了越后面就越是会遗忘,以至于不会使用知识点,这是我最大的一个弊端之处,到后来不得不要重新对知识点进行一次复习。我还是对于类设计和面向对象尚且还存有一点的不熟练,以至于代码设计的这样复杂。
建议:自认为可以多写一些小程序或者练习题,加强对知识点的记忆和理解。同时,也可以尝试阅读一些优秀的Java代码,了解它们是如何运用知识点的。 另外,多看看课本上的代码或者知识点也是十分重要,毕竟一切的知识点都来源于课本。
5.总结
总结来说,大作业的难度是不怎么难的(相较于上一届的题目来讲),只要你认真学,肯花时间和精力去做,就没有完不成,得不到分的作业,毕竟期中考试便是考所学知识点,通过这几次的作业,我应该更加对知识点进行一个总结,对于每一次的作业来讲,总结归纳是十分重要的,通过总结知识点,查到自己在哪些方面的不足,然后在网上查找相关资料或者看看网课,找些练习来做做,加深自己对不熟悉的知识点的认知和理解,这样有助于自己学的更好。另外,自己对于上课所讲的内容要进行一次总结归纳,对于自己所不懂的问题多问问老师同学。