第二阶段作业总结博客

0.前言:

第二阶段作业整体难度较第一阶段要高,主要考察的是类的多态、继承的掌握和使用。但是难点在于正则表达式的使用,掌握正则表达式的使用对于此次作业至关重要,正则表达式可以使对数据的校验代码精简而高效,是解题的关键。

第五次作业三题难度递减,第一题的水文校验及处理是主要的考察点,难度较大。对数据的校验极大彰显了正则表达式使用的优势,由于当时还并没有掌握正则表达式的使用,故解题失败。第二题主要了解一个计算圆周率的方法,对于类的使用要求不多,可用可不用。第三题则考察类的继承和多态,如果对此掌握较好题目思路简单。

第六次作业个人认为第二题难度更大。第一题是第五次作业第三题的一个功能拓展,可直接在原有的代码上修改解题,虽然代码长度较长,但是逻辑思路简单。第二题如果对正则表达式掌握较好则解题相对简单,结合match类中的一下方法使用可在一百行代码内解题。但是我个人的思路是对字符串拆分提取数据进行运算,逻辑思路的模糊导致代码繁杂冗长,最终也没有解题成功。

第七次作业个人认为是第二阶段最为简单的一次作业,前两题与第五次作业第三题和第六次作业第一题大同小异,掌握类的继承与多态就可以轻松解题。第三题则是对求素数算法的完善,更偏向于面向过程编程。

1.作业过程总结:

①:三次作业的迭代关系主要体现在第五次作业第三题、第六次作业第一题和第七次作业一、二题对类的继承,多态的考察。这几题都是关于图形类的设计,在解题的过程中能体会到类多态性、继承性对于面向对象编程的重要性。第五次作业第三题在题目要求中直接给出了编写哪些类和方法,无须自己设计。而第六次作业第一题则需要自己思考类于类之间的关系进行设计,且对虽然输出的要求也更多,需要对类的多态性与继承性的掌握。第七次作业的两题则对程序功能进一步拓展,加入了排序和归类的功能,需要掌握对类的对象的一些操作。总体而言,这一阶段性作业的知识迭代关系体现在类的多态性和继承性的掌握。

②:通过三次作业对类的多态和继承的使用过程可以体会到它们对面向对象编程的重要性。比如在题中各个图形类中都有计算面积或者计算体积的方法,通过继承和多态可以使得在输入的无论是哪种图像的代号,我们可以通过创建它们的共同父类的对象然后利用多态性来计算不同图形的面积。如此便不需要在主方法中进行判断来创建不同的图形对象,使得主方法精简。而第六次作业和第七次作业图形类相比,第七次作业多了一个梯形的类,利用多态的可拓展性可以使得第七次作业可以在第六次作业的基础上略微修改便可以解题。但是个人认为多态性虽然使得程序具有可拓展性,但是使得程序的可读性降低且更不易于理解。

③:第五次作业主要是使用正则表达式的问题,初步学习无法理解正则表达式的使用,也对match类中的方法不熟悉。故放弃使用正则表达式,转而将字符串拆分来校验数据,使得代码复杂,且难以理解,逻辑混乱,最后发现拆分并不能满足所以的校验情况。解题失败。第二题问题较小,都是一些继承上的写法问题,通过看书和csdn的博文解决。但是因为图形类较少,本人并没有使用类的多态性,而是在类中定义静态变量了来进行使用,个人认为这样的代码易于理解。但是如果对象或类的数量多,这样写就会使代码冗长。且不利于对面向对象设计的理解,这样的代码更加趋向于面向过程设计。

第六次作业本人的解题也仍然使用了类中的静态方法来解题。第二题也还是正则表达式的使用问题,查询csdn中的相关博文也仍然没有理解正则表达式的使用,使用字符串拆分解题未果,解题失败。作业截止后请教解题成功的同学学习了正则表达式的使用。

第七次作业没有再使用静态方法,而是通过对象来调用方法实现计算面积等操作,题目相对简单,没有遇到什么大问题。第三题求素数有时间限制,多次改进代码也没有成功解题,通过csdn学习了一个筛选法求素数减少了一个循环语句,解题成功。

④:第五次作业第一题较难,在学习如何使用正则表达式上花费了大量的时间,然后使用字符串拆分方法时因为逻辑复杂,代码繁琐,也花费了大量时间,最终还是没有完成。第二、三题比较简单,花费时间不多。

第六次作业第一题因为和前面的题相似,前面定义的类可直接使用,故花费时间比较少。第二题也是在正则表达式是的使用上花费了大量的时间,在使用字符串拆分解题时也花费了大量时间,最终也还是解题失败。

第七次作业总体简单,且可以使用前面作业已经定义的类,花费时间少。求素数在改进代码进行多次尝试,花费不少时间,学习了筛选法后轻松解题。

⑤:数据的校验如果不用正则表达式将会变得非常麻烦,且逻辑上难以理解,也很难全面地完成数据校验,无法得到正确结果。而在数据的规律与排序上,需要考虑清楚数组的长度、边界,如果越界会报错,没有到达边界则部分数据没有参与排序,无法得到正确结果。、OO设计心得:

2.

①:类的继承性可以总结出类之间的共同特征,然后通过继承来让它们拥有这个特征,而不需要在每一个拥有这个特征的类中都编写这个共同特征,使得代码精简且高效。在程序中复用一些已经定义完善的类不仅可以减少软件开发周期,也可以提供软件的可维护性和可拓展性。类的多态性可以使程序具有良好的拓展性,可以对所有类对象进行通用的处理,使得程序可以具备多种情况的通用性。

②:单一职责原则考虑的是程序在迭代更新过程中,如果一个类具有多个职责,则在功能拓展的过程中,可能会使得代码原有的职责发生改变,产生错误。开-闭原则也是类似,对拓展开方,对修改关闭,原因是如果对原有的代码进行修改,可能会使得代码原有的功能发生改变,产生错误。

③:面向对象编程在事物的描述和功能方面具有很大优势,配上注释代码也具有很好的可读性,可以解决很多实际问题。而且类的模块化设计使得代码块的复用性和拓展性很好,让软件设计周期缩短。

④:类的设计需要总结类与类间的共同特征、方法合理设计抽象类,有利于程序功能的拓展。一个类的功能要齐全,避免设计太多的类。

3.

①:本次主要有对数据的校验,对代码的测试可以检测代码是否可以对所以错误数据情况都能够校验。避免在程序使用过程中出现错误。

②:使用Junit进行程序测试可行。利用测试类对每个代码模块分别进行测试,可以细化测试过程。使得测试更加全面,而且在测试出程序错误后直接对出错模块进行单独测试与尝试修改。

4.

学习面向对象编程内容较C语言内容更多,更加复杂,需要主动地去了解一些包中已经定义的方法使用。对方法的灵活使用会使得编程事半功倍。面向对象编程在字符串操作方面很灵活,类似正则表达式这种在校验数据方面有很大的用处,需要深入了解学习。收获了对类的多态性和继承性的灵活运用。

5.

①:难度可以适当降低,量可以增多,对多种类型的题目进行练习。

②:个人认为可以对一些包中的常用方法进行细化的讲解,以及举例一些实例运用。

猜你喜欢

转载自www.cnblogs.com/yan19201625/p/12818316.html
今日推荐