前五周总结(2)
前言
这学期正式开始接触Java,多我们来说这是一个新的语言,前五周的学习让我们对Java有了初步的认识,学习期间所涉及到的问题也都是比较基础的题目,但尽管如此,对于初学者的我们,还是有一定的难度的,需要一次次的尝试,一次次的调试,一次次试错,一次次修改,最终才能写出一份较为完整的代码。这些题目主要是以巩固语法为目的,让我们夯实基础,其中涉及到了类的创建,封装性的实现,抽象类的使用,也有String类的使用方法这样的小知识点,总体题目难度不算很大,题量也适中,只是其中有一些题目或是知识点对于我还是有些困难的。
雨刷问题
雨刷问题是正式学习Java接触的第一个问题,简单的开始,通过一次次地学习,一次次的优化,将雨刷问题写的更加完善。从最初的不伦不类,到后面渐渐从中看到了Java的影子,慢慢具有了一定的Java的特点,同时也使我对Java的理解更深一步。
第一次
第一次只有一个类,只是简单实现了雨刷的基本功能,根本看不出任何Java的影子。当时刚接触Java没多久,脑子里的知识体系还停留在上学期学的C语言上,因此画出的类图简直不能看。
类图:

第二次
第二次初步学习了Java的封装性,分出了五个类,虽然只是很简单的分出了五个类,但相较于第一次来说,已经有了一定的进步了。
类图:

第三次
初步了解了单一职责原则,增加了Driver和Print两个类,让类图看起来更加丰富了一些。
类图:

第四次
运用了MVC模式,且尝试嵌入单例模式,只不过对这两种模式仅仅是一知半解,有点照葫芦画瓢的意思,虽然也算是写了出来,但之后还需要进一步的学习,加强对这部分知识的理解
类图:

第五次
合理设计实体类、业务(控制)类、接口类、各个类的抽象父类以及相互的关系,基本符合SRP(Single Responsibility Principe,单一职责原则)、Demeter法则(Law of Demeter)、“开-闭”原则、里氏代换原则、依赖倒转原则以及合成复用原则,使雨刷问题更加完善。经过这次的改进,类图看起来已经有了Java的感觉了,我对Java的理解也更加深刻。
类图:

总结
通过几周的学习,雨刷问题逐渐完善,从最初的一个类到最后的十五个类,我也从最初的完全不了解到现在的略知一二,了解了Java七大原则并尝试运用,也找到了学习的乐趣。最开始接触Java的时候,脑子里只有C语言的知识,于是便依葫芦画瓢,稀里糊涂的把C语言的知识原原本本迁移到Java的学习中,写出来的程序简直是四不像,但当时的我仅仅满足于程序能运行,看着那仅有一个Main类的Java程序竟然还沾沾自喜,经过后来的学习,我逐渐认识到Java与C语言的不同之处,也将脑中的知识进行分离,防止混淆,避免再次写出那些不伦不类的代码。
PTA
PTA上面的题目主要有两种类型,一部分是一些计算类问题,主要目的是帮我们夯实基础,将基础语法、基础知识一遍遍重复,应用到那些题目中去;另一部分是一些实验类的题目,让我们对Java的特点有更深刻的了解,让我们的代码逐渐规范。
第一次
第一次作业基本围绕同一个问题展开,那就是日期计算问题,三个题目层层递进,一步步把同一个问题优化。
题目要求:参考题目集二中和日期相关的程序,设计一个类DateUtil,该类有三个私有属性year、month、day(均为整型数),其中,year∈[1820,2020] ,month∈[1,12] ,day∈[1,31] ,
应用程序共测试三个功能:
1.求下n天
2.求前n天
3.求两个日期相差的天数
输入输出样例:

第二题第三题逐步优化,类图如下:


总结:这次习题集完成的非常艰辛,总是出现各种各样的错误,经过无数次调试、修改、提交、测试,终于最后通过所有的测试点。这次艰难的经历让我明白了我对于Java的理解仅仅是皮毛,还有太多太多东西要学,也让我调试改错的能力增加了,学会在代码中寻找错误,改正错误,并吸取教训。
第二次
第二次pta作业明显比第一次要好很多,可能是因为题目偏向基础语法,都是一些比较容易写出来的题目,也可能是经过一段时间的学习,让我对Java有了进一步的了解,这次的题目写起来就要轻松很多,一些题目直接一次通过,其余的也没有花费过多时间。
第三次
第三次的话要比第二次的题目略难一些,但相比第一次还是要简单很多,没有那么多稀奇古怪的错误出现,用了较短的时间就完成了。这次题目主要是一些String类的应用,通过查询、学习和做题,我也初步了解了String类一些简单的方法的应用,比如比较、删除、增添、分割等。
心得
经过这次PTA题目的洗礼,饱受测试点的折磨,终于还是通过了所有测试点,中间无数次的尝试,无数次的提交,看着那一行行绿色的“答案错误”的字样,我多少次想要放弃,想着这么多测试点,就一两个不过也已经很不错了,但是每次有这样想法的时候,就会点到排名里面看一看,看到别人那一个个一百分,心中不免有些不甘,明明我也写了那么多行,为什么我不能拿满分呢?我难道就是比别人差吗?于是我就会继续改错,绞尽脑汁想出那些可能的测试点,只要试出来一个错误,我就会非常开心,终于,功夫不负有心人,最终拿到了一百分。虽然作为一个初学者,我的代码肯定不是完美的,但是在这尝试的过程中,我学到了许多许多。耐心、坚持、仔细、不怕犯错,这都是在书写代码时需要拥有的态度,同时,这也是生活中需要有的态度,这让我受益匪浅。
实验
第一次
一、实验目的
1、练习类的构造方法、方法的调用、参数传递、对象的构造与使用;
2、练习循环结构、控制结构;
3、练习数据的输入与输出;
4、学习编写结构清晰、逻辑正确、功能完善的java代码。
5、学习使用工具对代码进行跟踪调试。
二、实验要求
1、对实验中要求的代码进行上机调试,完成实验指导书中全部实验内容。
2、编写实验报告。
三、实验步骤
(一)第一题
1、阅读给出的部分代码和题目描述;
2、通过题目提示写出student类的主要部分;

3、查找资料,学习随机数random的用法;

4、书写代码,保证无语法错误;
5、测试代码并修正代码中的可能错误和疏漏;
6、在规定的最后期限前提交代码。
(二)第二题
1、阅读给出的部分代码和题目描述;
2、检查代码出现的错误,并依次改正;
3、书写缺失的代码,保证无语法错误;
4、测试代码并修正代码中的可能错误和疏漏;
5、在规定的最后期限前提交代码。
四、实验结果
(一)第一题
1.

2.

(二)第二题
1.

2.

五、实验小结
1、学习了对象数组的使用方法,学会了创建对象数组,学会如何存储、使用数组中的对象。
2、学习了如何产生随机数,学会使用随机数产生不同范围的随机数,利用随机数间接产生随机的姓名。
3、对于eclipse的调试功能的使用更加熟练。
第二次
一、实验目的
1、 掌握类与对象的基本概念;
2、 掌握类的声明、创建与使用方法;
3、 掌握类的构造方法的定义与使用方法
4、 掌握类的成员变量、成员方法的定义与使用方法;
5、 理解类变量、类方法与实例变量、实例方法的区别;
6、 理解Java语言中包的概念以及package、import语句的使用。
7、 理解引用变量与对象实例之间的关系与区别;
8、 理解方法调用时引用类型参数的传递过程;
9、 掌握private、protected、public等关键的使用场合与使用方法;
10、 掌握对象组合的方式与方法;
11、 理解Java中方法重载的实现方式。
二、实验要求
1、 根据实验步骤中提出的要求,编写相应的Java程序;
2、 编译、运行自己所编写的Java程序;
3、 根据编译与运行过程中所获得的错误信息修改程序直至获得正确的结果;
4、 记录实验中遇到的各类问题并以及解决办法。
三、实验步骤
(一)实验二-1
1、阅读给出的部分代码和题目描述;
2、理解题意,构思框架;
3、改正代码中基础语法错误;
4、根据题目和所给出的部分代码,书写缺少的代码,保证无语法错误;
5、测试代码并修正代码中的可能错误和疏漏;
6、在规定的最后期限前提交代码。
(二)实验二-2
1、阅读题目描述,和改进要求;
2、根据题目要求思考改进方法;
3、书写代码,保证无语法错误;
4、测试代码并修正代码中的可能错误和疏漏;
5、在规定的最后期限前提交代码。
四、实验结果
(一)实验二-1

无论如何输入,结果总是loss
(二)实验二-2


经过改进,可以出现win的结果,并实现了类的封装性
五、实验小结
1、对类的封装性有了进一步的了解;
2、逻辑思考能力有一定的提高;
3、对于eclipse的调试功能的使用更加熟练。

浙公网安备 33010602011771号