JAVA学习第二阶段作业总结

前言

       本篇文章主要是对PTA第二阶段三次作业的总结,以及现阶段对面向对象编程思维的理解与心得。若其中有错误或不足的地方,欢迎大家指出。其中第二阶段第一次作业为:水文数据校验及处理、蒙特卡罗方法求圆周率、图形继承;第二次作业为:图形继承与多态、一元多项式求导;第三次作业为:图形卡片排序游戏、图形卡片分组游戏、求素数。

一、作业过程总结

   第二阶段第一次作业第一题“水文数据校验及处理”中用到了正则表达式、StringBuilder以及LocalDateTime等类,第三题“图形继承”则用到了继承的知识。而第二次作业第一题“图形继承与多态”从题名就知道会用到继承和多态的知识,另外还用到了ArrayList、Collections类,第二题“一元多项式求导”则再次运用了正则表达式、继承、多态、List等知识。最后第三次作业第一题、第二题进一步用到了继承、多态以及comparable接口等知识。通过这三次作业我逐步学习、了解、运用并巩固了正则表达式、继承、多态、ArrayList等知识。

   第二阶段的作业每道题都有封装性,并强调有较好的可重复使用性以及单一职责,通过第二阶段作业的不断练习,我逐渐熟悉了面向对象的封装性。通过第一次作业的第三题“图形继承”初步学习运用了继承的知识,第二次作业的第一题“图形继承与多态”则进一步理解了继承性、多态性,以及第三次作业的第一、二题更加深理解了面向对象的继承性、多态性以及接口。这三次作业使我逐步理解熟悉了面向对象的封装性、继承性和多态性。

   在编程时必定会出许多问题,但在这里我只列出几个典型问题,如:第二阶段第一次作业的第一题是这个阶段最难得一道题,首先遇到的问题就是不知道如何将一条输入的数据分成各个部分,这可以通过split()来解决。然后就是正则表达式总写不对,但通过多次尝试、修改解决了这个问题。还有就是ArrayList<>不知道如何运用,通过查找文章与学习也解决了这个问题,需要用到add()方法以及List遍历输出,其中<>里是ArrayList里元素的类型。最后是各种数据类型的转换,这些通过查找资料都得到了解决。

   第二阶段的作业比第一阶段的作业增加了难度,所以用的时间比上一次会长,所用的时间比例为:5:4:1。

   通过这些时间的学习,编程过程的严谨性问题依然是一个重要的问题,不能够被忽视。首先编程要有清晰的逻辑,这样才可以保证编程的严谨性,其次就是要注意细节,不能忽视细节上的问题,否则要找到并改正这个细节问题会很浪费时间。如果你的逻辑不是很清晰,也可以试着去写,一点点修改完善,当然这是很费时间的。而编程越严谨,程序的质量自然也会越高,bug越少。

二、OO设计心得

   面向对象三大技术“封装”“继承”“多态”之间关系的理解。首先父类、子类要有一个好的封装,这样才可以谈到继承,若封装性不好,类的属性被随意调用,程序安全性就会降低。然后就是多态,有多态就会有继承,继承为多态的基础。方法的重写覆盖,即对于父类中的某个方法,在子类重新定义一个相同形态的方法。这就是我通过这段时间的学习,所理解的三大技术之间的关系。

   对单一职责原则及“开-闭”原则的理解。我对单一职责原则的理解为一个类中的一组相关方法的封装。对“开-闭”原则的理解为对象的扩展是开放的,但是对于修改是封闭的,即不同的对象是可以增加或减少的,可以增添其他的功能,但不能对原有的对象进行修改,这可能会造成程序发生错误。

   OO编程思维的理解。OO设计主要任务是将设计尽量与现实世界的事物相一致,尽量使程序设计的思路符合现实世界的规律。现实世界事物有什么功能,程序设计就有什么方法,现实世界事物有什么属性,程序设计也就有什么属性。这就是我对面向对象编程的理解。

   类设计心得。类要有封装性,提高代码的可用性和可靠性。还要符合单一职责原则、“开-闭”原则等原则,即一个类只有一个能引起变化的原因,只做一件事,还可以增加功能。这是我对类设计的心得。

三、测试的理解与实践

   做充分的测试可提高代码的质量,避免出现一些漏洞使程序崩溃无法运行或出现bug。这是我目前对测试的理解。

   Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何完成功能和完成什么样的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。另外Junit有断言功能,如果测试结果不通过会告诉我们哪个测试不通过,为什么,而如果是像以前的一般做法是写一些测试代码看其输出结果,然后再由自己来判断结果是否正确,使用Junit的好处就是这个结果是否正确的判断是它来完成的,我们只需要看看它告诉我们结果是否正确就可以了,在一般情况下会大大提高效率。

四、课程收获

   通过这几周的学习,我学到了正则表达式的运用,ArrayList、Collections类的运用,随机数的产生,封装、继承和多态,并对OO设计思维和面向对象设计的基本原则有了进一步的理解。

五、对课程的建议

   我觉得第三阶段的题量与第二阶段的题量差不多就行,不多不少。而第三阶段题的难度可以与第二阶段差不多,也可以稍微加一点点难度。

对于课程内容讲解方面,我认为可以加快课程的讲解进度,多学一点内容。还希望老师可以对课程的知识讲得细一点或全一点,与PTA作业的练习内容相契合,使学习的知识可以通过作业练习得到巩固。

猜你喜欢

转载自www.cnblogs.com/5wudi/p/12818803.html