OO第二次博客作业

一.前言

      在第二次博客作业的题目集4-6中涉及许多知识点,难度分布适中,每次题目集中有容易的题目也有难一些的题目,涉及的知识点大多为类的相关,类的创建,继承与聚合,其中主要的难点主要为正则表达式这一方面,这里大多要靠自学多看,其中还包含着一些基础的字符串数组,排序方法等等。总的来说知识点覆盖方面广,难度中等偏上,题目量适中,对于现在程度的学习而言,完成应该没有太大的问题。

二.设计与分析

      1.本次博客作业要求进行对题目集的方法等进行比较,首先是将题目集4中的7-2和题目集5中7-4两种日期类聚合设计进行比较,(将作业的设计类图放置下方以便于进行设计的比较),先对题目集四中7-2的设计类图进行分析(下面左图),该设计类图为一个main为主类,其还包含DateUtil,Day,Month,Year四个类,DateUtil类中主要包含题目主要函数如判断日期是否合法,求前多少天后多少天,而其他类中主要包含其属性等,在题目四中该些类都是层层继承,感觉有些许繁琐,相对与题目集五中的7-4而言更加简便一些,7-4中主体类和方法函数和题目集四中大致相同,唯一差距是类图设计方法不同,在7-4中Day,Month,Year三个类是以并列的关系继承于DateUtil类中相对于题目集四中更加利于数据的存储和拿取,所以以我的观点而而言题目集五中的方法会比题目集四的要更好。

  2.第二个是对题目集四7-3,题目集六中7-5和7-6中三种图形继承设计的思路与技术运用进行分析(属性的封装和隐藏,类的继承,多态以及接口等等),在题目集四中主要是考察点是类的继承,在main类中主要定义一个能够键式交互的菜单用于选择图形的类别在父类Shape中定义求面积的方法getArea的方法,在其子类中在进行属性的定义以及方法的补充,总体来说难度不大。在题目集六7-5与题目集四中的main类大致相同,不过在题目集六的7-5中引入了多态这一技术运用,需要创建abstract类其中发方法也是abstract类没有势实例的方法。7-6相对于前两题而言好比是小巫见大巫,7-6这一题只要了解了接口这一知识点后就轻而易举了,但在你了解接口这一知识点时你会发现接口功能的强大,接口能够解决Java无法使用多继承的一种手段,其中的方法必须全部是抽象方法。这三题将继承多态以及接口大致进行对比以及给了我们一个更直观的了解关于这三点的不同。

                                                                                                      

 

   3.第三点是对于这三次作业中的一个难点正则表达式的总结和分析,正则表达式在这三次题目中分布广泛但是对于其难度而言却是有困难变简单(老实说感觉在折磨人的意思),题目集四中的7-1是这三次作业中首次遇见了正则表达式,虽然老师上课进行讲解了一些但这个难度对于初学者而言难度大了一些,下图是前后题的正则表达式的对比,左图为题目集四右图为题目集六,如果是从右边的代码过度到左边的话相信变化会很大,正则表达式这一部分需要自己多去学习和使用。

 

   4.题目集5的7-4虽然能够了解到大致的方法和结构,但具体方法不太了解其中例如map的使用导致在题目的有限时间内无法得到正确答案因此在这里无法给出一个分析,下次会更加努力的。

三.采坑心得

  在这三次题目集的书写过程中碰到了一些问题,有已经解决了的,也有还存在的问题在这里和大家进行一个分享,大家一起学习,一起交流。

  1.首先在题目集四7-2和题目集五7-4中出现了一些问题,例如日期的判断是否合理,前一天后一天,这里需要很仔细的注意细节,注意题目给出的要求,还有在书写日期加减时注意一些特殊日期,如闰年的2月,跨年的日期等等,提前注意这些细节的地方能够给代码整体的书写带来很多便利,从这里也可以得出在今后做题乃至更远工作时,应该提前了解题目或者客户的需求而不是直接进行代码的编写,要养成一个良好的习惯。

 

  2.在题目集五7-2以及题目集六的7-2中需要使用到排序的算法,但是由于算法有段时间没用对于如何排序有一些模糊,在书写过程中还出现了一些语法错误,因此对于以前学习过的知识需要适当的去进行复习这样才不会给以后的日常编码带来不必要的麻烦。

 

  3.题目集五的7-4中也很好的体现了自主学习的重要性,这题所需要使用到的知识点是老师在课上还没有讲到的,因此在我们答题的或过程中难免带来了一些困难,但假使我们在老师讲之前将其大致了解并学习一部分的话在写这道题目时都不会存在这么大的问题,多少也能进行一些答题。

 

  4.在题目集六中大多为正则表达式训练题,这几题的正则表达式进行修改后大多都能达到预期效果但对于正则表达式而言了解的并不是足够的详细,对于正则表达式的使用也还处于一个最表面的状态还需要多加的练习。

四.改进建议

  对于几次作业而言在进行初次测试提交后,虽然大部分能够达到题目所给出的要求但有些代码相对来说还是有一些复杂,下面是我对于代码改进的一些看法:

  1.首先是题目集四和五中的日期聚合类的题目,方法的改进空间不大,但是对于代码的框架而言可以改进的更加简便,在这一题提交的代码中main类和DateUtil类中存在重复方法,虽然对代码的运行以及结果并没有产生影响,但是导致代码更加的复杂。(以下给出部分代码重复的方法为isLeapYear())

 

 

  2.在题目集六中对于7-5的图形继承以及多态的这一题中,按照正常来编写代码时会让主代码内容过多,不便于观察可以适当的将输出这一板块放进函数中这样会更加简洁一些,当然不只是针对于这一题而言,在大多数题目中都可以参考这一类做法,但应该适当的增加一些注释,不然可能自己过了段时间后可能自己也看不懂了。(以下给出一个示例)

                      

 

 

 五.总结

   终于到激动人心总结的时候了,这不仅预告着对于近期作业自己学习的状态的一个总结,同时也是第二次blog作业的总结,详情请观看下文。

   1.对于本阶段学习的感觉,自己学到了很多东西,从刚开始接触Java连Java .util.Scanner的输入都要照着例题来的萌新进阶到现在的青铜玩家,虽然进步不是特别大但还是有在慢慢往前走,希望接下来越来越好。

  2.本次阶段性学习主要学习到了类的创建,使用,继承,多态,接口,对于类的创建以及使用继承来说接受比较容易,但接口和多态的使用还是不够成熟,虽然知道其用法以及其特点,同时对字符串使用,排序等等也比较熟练,当然在总结过程中不能忘了最关键的正则表达式,其使用范围很广但同时也存在一定难度,简单的使用还不成问题,如果还想进阶的话还需要再花一些工夫。

  3.个人方面还是需要多花时间去学习,把自己不懂的地方尽量去搞懂,多去做一些题巩固提升自己的能力,多多加油。

  4.在这里的话给老师也适当给出一些意见,首先就是针对pta而言在做完题后希望能够公布以下正确代码作为我们学习借鉴的代码,不是说只是让我们只是注意自己代码的查重率,而对于后面只有个查重结果,不懂的地方继续放在那里就不管了,上课方面的话希望老师的知识点能够多结合一些例题或者实际的题目来讲,这样相信能够让同学们更加容易接受。希望老师能够做出适当的回应,谢谢老师!

  以上就是我这次的blog作业全部内容,些许拙劣,望耐心观看,给个好评,谢谢!

 

------------恢复内容结束------------

posted on 2021-04-29 09:05  香克斯*  阅读(63)  评论(0)    收藏  举报