Java学习的最终总结

前言:

  本博客主要是对这一学期Java作业以及这一学期的学习情况的总结

 

一、作业过程总结:

 

  (1)本学期三个作业周期的作业难度是逐渐增加的,涉及的知识点也是越来越丰富,作业的测试点也是越来越多,相应的老师也给我们降低了题量,并且增加了时间。第一作业周期中,第一次作业是让我们熟悉Java的语法规则,第二次与第三次联系较大,只需要涉及不同的类来解决,这也是老师为了让我们更好的理解Java而设计的。第二作业周期给我造成的困难是最大的,这其中的三次作业难度其实是递减的,第一次作业水文数据校验需要用到正则表达式,由于当时刚接触正则表达式,无法熟练的运用,加之在家学习效率低下,所以完成情况很差,第二次多项式求导相对于第一次要好很多有了第一次的前车之鉴所以完成情况也大幅度提升,第三次三个题都是老师上课讲的内容,所以也很容易完成。第三作业周期三次作业题目分别是雨刷程序功能扩展设计、统计Java程序中关键词的出现次数、表达式求值。其中第一次作业是老师讲过的内容进行一个拓展,完成起来很简单。第二次统计关键词次数个人感觉挺难的,有两个点一直过不去。第三次作业运用到了栈,难度适中。

 

 

 

  (2)第一作业周期中:在作业过程中遇到问题如果是一些语法规则类的问题我一般会通过百度来解决。如果是测试点过不去,我会结合给出的测试点对代码进行改正。如果是思路出了问题在自己百思不得其解后我会向同学请教这个问题,并且提出自己的观点与看法。第二作业周期中:这三次作业中主要遇到的问题主要还是正则表达式的正确运用,以及题目所给类图的理解。我一般遇到问题会通过上网查找资料以及和同学交流思路来解决问题。第三作业周期遇到的主要问题是怎样运用ListMap,以及多项式求值过程中遇到带负号的数怎样去运算,主要通过百度,以及向同学请教来解决。

 

 

 

  (3)每次花费在写作业上的时间是逐渐递增的,第一周期的作业一个下午的时间就能解决,第二周期的作业最长的三天时间也能解决,第三周期的作业都只有一题,其中第一次很简单,两小时就能解决。但是,第二第三次作业都用了一个星期去完成。

 

  (4正则表示式的设计一定要严谨,少一个.都可能匹配不成功,需要转义的符号,多表达式求值各种非法情况都要考虑完全,不然很多测试点过不去。

 

 

二、设计心得 

  (1)1.面对对象侧重于团队合作,需要很多人完成的大量工作。面对过程适合于一个人的小量工作。面对对象更符合人们的做事方式。面对过程的性能高,面向对象易维护、易复用、易扩展。   2.封装:封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制。封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。封装的优点:1. 良好的封装能够减少耦合。2. 类内部的结构可以自由修改。3. 可以对成员变量进行更精确的控制。4. 隐藏信息,实现细节。继承:继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。继承可以减少代码的重复,提高代码的利用率。 多态:多态是同一个行为具有多个不同表现形式或形态的能力,是对象多种表现形式的体现。多态的优点:1. 消除类型之间的耦合关系。2. 可替换性。3. 可扩充性。4. 接口性。5. 灵活性。6. 简化性。

 

 

  (2)1. 面对对象设计基本原则我认为更应该站在用户的角度去考虑问题,既然是面对对象,就应该站在用户的角度去考虑实际的问题。   2.单一职责原则:每个类都应该有自己的单一的功能,并且该功能应该由这个类封装起来,同时这个类应该只有一个引起它变化的原因那就是他自己本身代码的修改,他的修改不会对其他的类造成影响。-原则:每个类应当对扩展进行开放,对修改进行关闭。其他的修改对他并没有什么影响,但是其他的类是可以使用他的功能和属性。

 

 

  (3)面向对象以对象为中心,将对象的内部组织与外部环境区分开来,将对象的内部属性数据与外部隔离开来;就是封装对象特征,对外提供入口,其行为与属性构成一个整体,而系统功能则表现为一系列对象之间的相互作用的执行流。在编程组织中,对象的属性与方法不再像面向过程那样分开存放,而是视为一个整体(程序的最终实现其实还是分离的,但这仅仅是物理实现上的,不影响将对象的这两个部分视为一个整体),因此具有更好的封装性和安全性(表征内部的属性数据需要通过对象的提供的方法来访问)。面向对象强调的是整体性,因此面向对象与面向过程在很多方面是可以互补的。同时由于对象继承和多态技术的引入,使得面向对象具有更强、更简洁的对现实世界的表达能力。从而增强了编程的组织性,重用性,灵活性。

 

 

 

三、测试的理解与实践

  (1)测试能够对代码的完备性,可行性,优化等进行很好的评估,能够及时发现问题,如何去解决,起到了至关重要的作用!同时测试能够避免在运用过程中发生错误造成很大的损失,测试样例越多,代码的健壮性也就越强。同时如果测试还能反映出一个代码的性能,在两个代码实现的功能都相同时,运行时间短的代码效率显然更高,测试会让你的程序变的健壮。

 

 

  (2)1.假如我设计测试用例,我会分四个部分,第一个部分就是正常值测试,这是一个程序能否正常运行的基本条件,第二个部分是极小值的测试,第三个部分是极大值的测试,最后一个部分就是非法数值的测试,这样可以充分考验程序的健壮性。  2.使用JUnit测试是可行的,JUnit是一个Java语言的单元测试框架。它由Kent BeckErich Gamma建立,逐渐成为源于Kent BecksUnitxUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。他可以自动化测试,不需要人为的干预。

 

四、课程收获

 

  (1)在这一个学期学习Java的过程中,了解了Java语言的特点:简单、纯面向对象、分布式、健壮、安全性、体系结构中立、可移植性、多线程、高性能、开源、免费。体会到了面向对象和面向过程的区别,同时在写作业过程中遇到困难以及解决困难不仅加深了我对知识点的理解,同时也锻炼了我自主学习,查缺补漏的能力。同时也希望在今后的学习中要多运用 Java,多巩固基础,为今后的学习做一个很好的铺垫。

 

 

五、对课程的建议

  (1)本学期的作业难度我认为稍微有点难,但是为了提高编程水平,只做简单的题目效果肯定不好。并且我希望老师在作业截止之后开放代码互相查看功能,因为有的时候虽然测试点过了但是程序并不一定是完整的,互相学习借鉴可以使思维更加缜密,代码更加健壮。

 

 

  (2)上课过程中我希望老师可以适当的讲解作业的内容,在讲解新的知识点的时候可以联系实例来讲,代码可以课前上传给我们预习,同时腾讯课堂的回放可以早点上传,因为有的时候因为网络问题有的知识点会没听明白,需要下课看回放。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-06-06 12:48  Yuhandsome  阅读(169)  评论(0)    收藏  举报