pta第二阶段三次作业总结
一.前言
pta第二阶段三次作业量不多,但是题目颇具代表性,充分考查了学生对老师教授内容成果。在这三次作业中我发现很多问题,首先,题目开始涉及继承,多态和包装等Java重点,学习和练习的题目都向更深层进发,而且题目颇具特色可以很明显地展现继承,多态等技术的优势。但这也有好处,就是让学生自己去发现问题,解决问题,从而提高学生程序编译能力和问题发现,问题解决得能力。
二.作业过程总结
首先,第二阶段第一次作业开始接触继承,利用继承解决一些图形上的问题,如:图形继承和蒙特卡罗方法求圆周率。还有对正则表达式的运用,如:水文数据校验及处理,这类问题处理起来很困难,但是用对了办法就会简单一点。第二次作业也有继承类问题的出现,但更侧重多态问题的研究,如:图形继承与多态,而第二题是对正则表达式的考查和多态的考查。第三次作业则完全向多态过度,通过研究图形卡片排序游戏和图形卡片分组游戏这两个相似的题目来学习和认识多态的使用和作用;而第三题则是简单对素数的研究。
继承的两个特点:1.子类可以拥有父类的“内容”。2.子类还可以拥有自己的专有的内容。在继承的关系中,”子类就是一个父类“。也就是说,子类可以被当做父类看待。例父类是员工,子类是讲师,那么“讲师就是一个员工”。封装,封装是面向对象编程的核心思想,将对象的属性和行为封装起来,而将对象的属性和行为封装起来的载体是类,类通常对用户隐藏其实现的细节,这就是封装的思想,在Java中通常通过建立一个实体类,用来封装对象的属性和行为,通过set()和get()方法封装起来,例如,用户在使用一款软件的时候,只需知道如何使用软件,点击某个按钮就可以实现一定的功能,用户不需要知道软件是如何被开发出来的,软件内部是如何工作的,在使用该软件时不依赖于开发时的细节和软件内部工作的。采用封装的思想保证了类内部数据结构的完整性,应用该类的用户不能轻易直接操纵该数据结构,而只能执行该类允许公开的数据。这样可以避免外部对内部数据的影响,提高程序的可维护性。
而继承性,简单来说就是使子类的对象拥有父类的全部属性和行为,同时可以增添自己的所特有的属性和行为。这样可以节省写共同具有的属性和方法代码的时间,有利于代码的复用,这就是继承的基本思想。软件的代码使用继承思想可以缩短软件开发的时间,复用那些已经定义好的类可以提高系统和软件的性能,减少系统和软件在使用过程中出现错误的几率。一个类可以是其他类的父类,为其他类提供属性和行为,也可以是其他类的子类,继承父类的属性和方法,子类的实例都是父类的实例,但不能说父类的实例是子类的实例。
在写这些题目时,遇到很多问题如:对类中封装性的理解不清导致的错误,对多态的理解和使用错误,而且在写代码时无法快速地想到如何用继承和多态解决问题,写题目时花费的时间太长,不仅如此而且错误率还高,要花长时间来修改代码,才可以解决问题。而且,题目测试点太多,容易出现错误。而在遇到问题时我会花大量时间在网上查资料,或者问同学并且坚持将问题解决。
第二阶段三次作业数量不多都只有两三题,但花费的时间却越来越长,与前几次作业情况差不多,时间都时增长,但是发现错误和解决错误的能力却有了很大的增长,这也算是一个进步。
在作业变成过程中,吃了严谨性好大的亏,特别是第一次作业,明明是最简单的一次作业却还错了,只因写代码时不够严谨,导致数据错误输入。而在其他题目上,想将题目所需方法尽可能简化,却没有考虑周到,代码计算范围不够全面。所以在写代码时严谨性很重要,这关乎一个代码的对与错。
三.程序设计心得
可以从这几次作业中发现,继承是多态的前提 ,如果没有继承,就没有多态,继承主要解决的问题就是:共性抽取。面向对象可以说是一种对现实是事物的抽象,将一类事物抽象成一个类,类里面包含了这类事物具有的公共部分,以及我们对这些部分的操作,也就是对应的数据和过程。在面向对象思想中,对一个类,将数据和过程封包围起来,对外隐藏具体的实现细节 并且数据(成员变量和成员函数)在内部是完全自由使用的,而外部对数据的访问是加访问限定的,某些对操作只能根据由内部提供接口。继承可以说是一种代码复用的手段,我们在一个现有类上想扩展出一些东西的时候,不需要再次重复编写上面的代码,而是采用一种继承的思想。在派生出的子类里添加一些我们想要的数据或方法,也可以理解为从一般到特殊的过程。
在面向对象编程领域中,单一功能原则规定每个类都应该有一个单一的功能,并且该功能应该由这个类完全封装起来。开闭原则是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一,其它很多的设计原则都是实现开闭原则的一种手段。对于扩展是开放的,对于修改是关闭的,这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们可以改变模块的功能。对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。
四.测试的理解与实践
在写pta作业时也充分体现了测试的重要性,eclipse虽然有识别错误的能力,但能否得出正确得结果还需测试后才能得知,而且测试结果需要与pta给出的结果对比是否一模一样才行。测试不仅可以检验代码的可运行性,还可以检验代码运行的正确性。
junit是实现Java程序自动测试的工具,其中junit3测试时基于继承的测试方式,junit4是基于注解的测试方式。如果利用junit对程序进行测试可以降低程序出错的概率,是一个很好的习惯。
五.课程收获
在这四周的学习中,我从分体会到写代码时要心静这句话的真谛,心不静就不能体会到题目的真正意思,更会使代码出现错误的概率增大,数据作用范围理解不清,导致无法得到正确的答案。这也让我知道,学习不是一成不变而是不断变通,在平时应该经常看一些别人写的代码,学习别人的优点,提高对一个问题解决方式的方法,使一个问题有多个解决方法,提高自己的编程能力。
六.对课程建议
老师的讲课能力很强,在上课时提出的写代码作业应该放在课后完成而不是上课解决,因为这太浪费时间,学生代码正确性也得不到保障。其次pta上的作业希望老师能进行一些讲解,毕竟写完后需要老师的一些提点,以帮助学生进步。作业难度方面没什么建议,题目数量不在多而在精,这点老师做的十分的好。而在课堂上希望老师可以多以例子讲解,并着手实践,以帮助理解和运用。

浙公网安备 33010602011771号