JAVA第二阶段作业总结
PS:此次博客主要是针对我的第二阶段作业的总结,可能仍然存在部分错误,希望可以谅解:)
- 前言:第二阶段一共完成了3次PTA作业,旨在让我们更加了解并运用封装、继承和多态的运用。
- 作业的过程总结:
相比于第一阶段的作业,第二阶段的作业无论是在逻辑思维的严谨性上还是在代码的复杂程度上都有着很大的提高。简单点来说,就是难度更难了,特别是第一次作业。
(1) 第一次作业
第一次作业的第一道题水文数据校验有着很大的难度,通过率仅有2%。这一次作业的难点是正则表达式,这道题目要求同学十分谨慎的考虑表达式,比如是否复合格式、有无特殊情况等。其次是蒙特卡洛方法求圆周率和图形的继承。这几道题初步引入了java继承的方法。
(2) 第二次作业
第二次作业是第一次作业的强化练习,是图形继承和多态和一元多项式求导。里面有更多的正则表达式用法,以及java常用类的用法如ArrayList的用法,StringBuilder等。
(3) 第三次作业
第三次作业是在第二次作业的基础代码上进行升级,在原有代码的基础上增加了ArrayList泛型的应用方法、单一职责原则的运用和comparable接口的运用等。通过comparaTo可以重新定义排序规则,十分方便。
通过这三次作业,我更一步了解了继承、封装和多态性的特性,以及懂得了如何去解决几种方法去解决问题。首先,封装体现在了每一道题目中,把对象进行封装,属性设为私有,对外部提供get和set方法。而用户通过各种方法接口去使用代码,完成工作。而继承性使得一个类(子类)可以继承另一个类(父类),子类具有父类的所有属性和方法,同时也可以具有父类不具有的方法和属性。而多态则是用同一个操作去操作不同的对象,产生不同的结果,比如说comparable的重写可以改变顺序等。
遇到的问题:
主要的问题在于对正则表达式的使用不太了解,由于网络上的资料不是太全面,也没有很好的例子去参考和借鉴,导致在出现正则表达式的题目上花费时间较长。这三次作业花费的时间分别为9;9;6小时,但个别题目还是存在不可解决的问题,通过和同学的交流和大部分问题得以解决(抱紧大佬大腿)。
由于java是一门十分严谨的编程语言,在正则表达式的校验到每一个数据的输出,往往一个微小的错误都可能造成程序的错误。这时候就要花费大量的时间去检查,所以还是要严谨一点,争取不在这方面犯错。其次,一定要尽早完成作业。
- 2. 设计心得:
1. 对多态的理解:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。在作业中的体现主要是重写(override),在子类对父类方法进行重写,有效避免了重复代码的出现。
2. 封装:通过封装把代码分成多个模块,提高安全性的同时也有利于后期的维护,同时也增强了复用性。
3. 单一职责和开闭原则:单一职责原理在类里的体现让一个类的功能变得单一,有利于程序员的后期维护,同时把类单独封装也可以让代码的移植更为方便,节省了时间。开闭原则则是在设计模块的时候,使得这个模块在不改变源代码的情况下改变这个模块的行为。开闭原则使得我们在原有方法的基础上进行修改和拓展,以至于达到要求。
4. 设计类的心得:对于一个类的设计,首先考虑的应该是类的逻辑性和正确性;在此基础上,也要让这个类有着高度复用性,这样可以减小工作量,为自己和他人带来便利。同时也要坚持单一职责的原则,使得移植更加方便。
3. 测试的理解与实践
1. 对于一段代码而言,正常运行往往不能够决定这段代码的好坏,只有完美通过测试才算初步完成。Pta平台上题目便是在程序没有编译错误的基础上判断程序是否通过多个测试点的测试来进行给分。测试可以直接判断一段代码是否有着某种功能,以及反映出这种功能的局限和质量。除去程序员对代码的测试现在的大多数app,在正式上架之前,都会有测试阶段,这种通过大众来测试程序的方法也是屡见不鲜。
2. Junit是指单元测试,通过编写一段代码来检测被检测测代码中某项有着具体功能的代码是否正确。要求准确、快速地保证程序基本模块的正确性。在eclipse中可以直接使用。
4. 课程收获:
第二阶段我们主要学习了java的封装、继承和多态三大技术的具体特性,在面向对象的思考方式上,我有了更好的理解。也理解到了java的优势和不足之处。其次学习了正则表达式的一些运用方法,对单一职责原则的理解也让我的代码的复用性更好。但在完成pta主页的时候我还是深刻认识到了自己编程能力的弱势和知识储量的不足。由于没有教材,且大部分资料是在网上搜索得到的,使得这种知识的获取逐渐快餐化,没有完全吸收和理解。在查阅资料的过程中,我意识到网友们有着独特的思路和优秀的编程思维,在查阅资料的同时可以记录相应的笔记,在过后进行回顾,可以有效增强知识储量。
5. 对课程建议:
在第二阶段的学习中,我遇到了很多问题,比如说正则表达式的运用和接口的运用,以及个别题目上的测试点老是过不去的情况,希望老师在上课时可以拿出一个具体的,值得推荐的例子,进行讲解,让我们可以学习其他优秀的方法,思路甚至是好的编程格式。同时也可以希望老师可以给我们推荐更多优秀资料,谢谢!

浙公网安备 33010602011771号