第二阶段作业总结

前言:此次博客是针对前三周作业的思考与收获,主要内容包括类的继承以及多态、接口和正则表达式。

作业过程总结:

1、这三周的作业中有两次作业连续出现了关于正则表达式的题目,一道是利用正则表达式去校验输入日期的合法性,另一道是利用正则表达式去检验输入一元多项式的合法性。这两道题都要求对正则表达式有一个自学、使用的过程。剩下的题目中是关于继承和多态的应用,题目之间的关系变得紧密。例如:第一次题目中那个求图形面积的,最先开始是利用继承去分别实现每个图形的求面积方法,到了第二次题目里面时,要求使用多态去求得每个对象的面积,第三次作业第一题中则是在第二次作业上使用接口去对每个图形对象进行排序,第二题中要求把每个图形的对象分别分为一类再进行排序操作。总体而言题目是一步一步再加要求,难度也一步一步再增加。在解题时,要思考每个题目的联系,例如:从继承到多态再到接口,你必须把前面的继承问题搞清楚后你才能继续往下写,继承关系弄清楚后,再搞多态,最后再实现接口的方法去排序。这就是一个迭代的过程,从易到难。

2、通过作业慢慢熟悉了继承和多态以及接口的使用,比如说那个计算图形面积的题目,首先需要你定义一个Shape类这个类为CircleRectangle等类的父类,并且子类中都要重写父类的方法,而多态是创建一个Shape类型的引用使之指向不同的对象,从而让不同的对象接收到统一信息,进行不同的操作。而接口的使用在于排序这些对象,根据面积大小去排序对象,在第三次作业中,要求使用Comparable接口,而要使用Comparable需要去实现CompareTo()的方法,进而实现排序。

3、作业中遇到的问题和解决方法:

1)首先是关于第二次作业中如何根据面积大小给对象排序,当时不知道如何去让ArrayList数组中对象位置交换,这是我当时纠结了很久的问题,后来经过学习和查找发现有一个set方法可以更新下标的值,利用set方法就解决了排序对象的问题。

2)第二是语法问题,这类还是自己去网上多学习学习。

3)代码的简化、优化,在第三次作业中的第二题我遇到了这个问题PTA显示,后面我看了看我的代码,发现确实不必要的语句太多了,整个代码就是一团乱的,于是我又重新做了一遍,最后才解决这个问题。

每次作业花费时间:
第一次作业花了全部所给的时间,主要是正则表达式那块有问题,导致程序不能运行。

第二次作业到最后也没全对,有些测试点没过。

第三次作业大概花了两天左右的时间将其全部做完,并且测试点全过。

心得体会:

经过这次练习,多态、继承、接口已经全部练了一遍,再加上上次学过的封装,面向对象三大技术特性已全部学完。封装、继承、多态这三者之间的联系紧密。封装性是保护有些私有的属性,不让随便访问。而继承性是在保留既有的封装性去访问其中的方法,也增加了代码的复用性,多态就是在继承关系下向上转型或向下转型,传递子类对象。

开闭原则:

对于程序代码的修改是封闭的,而对于程序的扩展是开放的。也就是说在我们写好一个程序时,在这个程序中我们要求它去实现一个增加的功能,这时候就不能去修改代码。因为直接去修改的话,也许会造成别的部分出错而形成的连锁反应,因此这时候只能往里面加。这样做的好处是在后期对软件测试的时候仅仅只需要测试你新加部分的代码,提高代码的复用性以及软件的可维护性。

单一职责:

通俗点就是说每个类做好属于自己该做的事情,例如作业中求圆的面积的类Circle类,这个类只需要求圆的面积,而其他图形的面积不用管。这样做的好处在于在其中一项功能出现错误之后,只需要去找到相应的类,找出问题。

程序的测试:

对于程序的测试是非常重要的,这时候往往需要用到eclipse中的Junit。使用Junit对程序单元测试,不用人为加一些输出语句去判断输出是否正确,并且每个单元的测试用例相对独立,简便好用。

 

课程收获:

经过这三次的作业首先学到了正则表达式检验数据,其次是继承、多态、接口。尤其是多态的使用,对于程序是非常有作用的。并且在完成作业的同时用到了一些类去处理字符串,以及数组的处理,像ArrayListStringBuilder等。但是这三周的作业,还有一些不足。在正则表达式这一块,还需要继续学习与研究。尤其是第一次作业中那个用正则表达式去判断日期的合法性,其中有很多的情况需要去考虑与琢磨。对于编程,还是得仔细和认真,再就是坚持,坚持很重要,只有坚持才能学到东西。面对难题需要去不断踩坑,这样才会有提升,不然一直做一些会并且简单的题目,永远不会进步的。还有就是代码的优化,在上几次的作业中我已经尝到苦头了(运行超时),然而在这次的作业中,我再一次踩坑了。代码的长度过于繁琐,导致我改的过程非常困难(反复的改,非常头痛),其实只要我一开始认真思考构造也许就不会出现这种问题了,这也算一次总结吧。

 

 

对课程的建议:

首先对题目:我觉得题目数量不应过多以及题目难度应该从简单到难,一题一题慢慢加难度,并且希望题目与题目之间要有一些微妙的联系或者有提示。这样可以在作为简单的题目之后得到一些解决难的题目的信息,这样就不会在做难题时,完全没有头绪。

其次是课程内容讲解的方面:我希望还是能结合相应的代码、例子去帮助我们理解,适当地减少一些理论上的知识讲解。当然我也希望老师能在课堂上多讲解题目中可能要用到的东西,方便我们在做题目的时候快速思考。

posted @ 2020-04-23 21:29  可以输但没必要  阅读(68)  评论(0)    收藏  举报