针对学习Java第二阶段PTA三次作业总结

0.前言
  主要说明本次博客针对的作业情况

  本次博客是针对PTA上近三周以来所布置的三次作业(nchu-software-java-homework04,nchu-software-java-homework05,nchu-software-java-homework06)做一个总结和分析。

 

1.作业过程总结

  ①总结三次作业之间的知识迭代关系;

  从第四次作业到第六次作业,题目逐渐从提供uml类图和主类代码到只提供类图再到相似的题型不提供类图,极大的考验了我们分析题目要求和逻辑思路的能力,到第六次作业最后一题就需要我们降低代码复杂度。

  第四次作业重难点在第一题水文数据校验及处理的思路分析和正则表达式的使用;

  第五次作业重难点第二题一元多项式求导,依然在正则表达式的使用和各种非标准格式表达式情况的考虑。

  第六次作业需要根据类图调整思路,提高第一题图形卡片排序游戏代码逻辑的规范性以供第二题图形卡片分组游戏复用,掌握接口的使用。
  ②如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性;

  封装性应该是最先接触到的,为了提高代码各个类的复用性,就会尽量去规范写法用法,把对象的属性和实现细节隐藏起来,仅对外提供公共访问方式,它可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问,这样我们就能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

  为了减少代码的冗杂,消除结构定义上的重复,就要用到继承,可以实现代码的重用,子类最低也维持和父类相同的功能,子类也可以进行功能上的扩充。

  第六次作业用到的接口就很好地体现了面向对象的多态性,同一个接口,使用不同的实例而执行不同操作。
  ③作业过程中遇到的问题及解决方法

  第四次作业中遇到最大的问题是第一题水文数据的校验中我对正则表达式的用法很陌生, 查询了各种网站以后发现大部分讲的比较笼统或者片面,不够系统成体系,看了以后做不到举一反三真正掌握,就找了一些网课从每一个符号的作用和用法听起,才能够自己写出来想要表达的正则式。

  第五次作业一元式的求导同样要求对正则的熟练掌握,更需要掌握对字符串各种截取方法,测试点很全面,在代码整体逻辑正确后,还测试了好多点,一点一点把每个测试点都改对。

  第六次作业在根据uml类图搞清每个类每个方法的用法时遇到瓶颈,主要是搞不清cardSort(),Comparable<T>,compareTo(Card card)这几个在排序中的具体用处,就先研究接口的使用,看了几种compare接口的用法,也就明白了几个方法的具体用处。
  ④每次作业花费的时间比例

  第四次作业先写完了后两题,第一题断断续续改了三天。

  第五次作业写了两天,主要是断断续续在改第二题一元式求导。

  第六次作业花费了一个上下午。
  ⑤对编程过程的严谨性的认识及教训

 

  

  第四次作业第一题水文数据和第五次作业第二题一次元求导需要考虑的细节很多,测试点很全面,比如连续输入为多个空,数字中带有空格等,带有空格的情况需要加一条data=data.replace(" ","");语句,一次元求导需要考虑系数为1和指数为1的情况数字不显示等等。


2.OO设计心得
  ①对面向对象三大技术特性之间关系的理解

  多态包括接口的实现,继承父类进行方法重写,同一个类中进行方法重载等,有继承和重写是多态存在的必要条件,而封装是把尽可能多的内容封起来,对外提供简洁的接口。
  ②面向对象设计的基本原则理解(单一职责原则及“开-闭”原则)

  单一职责就是一个类或者一个接口一个方法只负责一项指责和技能,这样就使类的职能看起来有目的性,明确,简洁,提高系统的可维护性。而开-闭原则有抽象和封装实现,可以总结为“用抽象构建框架,用实现扩展细节”。

  ③OO编程思维的理解

  面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
  ④类设计心得

  通过一次又一次的pta作业,我逐渐能够赋予类比较恰当的职责,各类各司其职,在以用处命名类名和方法的同时,能够较好的体会到单一职责原则的优越性,大大降低代码冗杂度,提高了类和方法的复用性,可移植性。当然我的水平还欠缺很多,需要更多的练习和研究去熟练掌握。
3.测试的理解与实践
  ①测试对于编码质量的重要性

  之前的课堂上讲过测试分为性能测试和功能测试,功能测试是完成基础的要求中的实现各项功能和行为,满足用户的基本需求,基本需求如果都出现问题的话,这个产品自然是失败的;性能测试是基于功能测试之上的减小空间存储和提高时间效率的高一级的追求目标,让用户体验感更好才能吸引用户,让用户满意,比如要下载一个游戏,如果发现这个游戏所占内存比同类游戏大得多,或者说游戏中运行慢,反应迟缓,想必这个用户分分钟就给游戏卸载了,所以测试的重要性可见一斑,直接决定了编码的成功与否。
  ②查阅资料,假设使用Junit进行程序的测试是否可行

  经查阅发现使用eclipse利用Junit4进行程序模块的测试是可行的,

 

 在弹出的属性窗口中,首先在左边选择“Java Build Path”,然后到右上选择“Libraries”标签,之后在最右边点击“Add Library„”按钮,

 

    然后在新弹出的对话框中选择JUnit4并点击确定

 

  在Eclipse的Package Explorer中用右键点击该类弹出菜单,选择“JUnit 测试用例”。

4.课程收获
  总结这四周来在OO方面的教训及收获

  渐渐熟悉了面向对象的思维,遇到题目能够基本根据uml类图构造出来思路和解决方法,有时候会觉得类图给的方法冗杂了,自己会根据自己的想法删加一些方法和类,但是渐渐发现当完全理解了类图所给的思路,解决起这个问题来才会更加清晰明了,有时候是要肯接受不一样的思路和自己的思路中和才会有思维的扩展,思考问题的眼界才会更宽。
5.对课程的建议
  ①第三阶段作业难度、题量的建议

  难度要说不难得不到锻炼和提升,题量每次作业两题三题也不算非常多,但是可能是我掌握的还不够熟练,每次作业要占据大量时间,有时候可能会连续几天,只能稍微减少其他课程的学习,希望通过往后的训练我能够更加高效快速地完成作业。
  ②课程内容讲解方面的建议
  对于课程内容讲解暂无什么提议。

猜你喜欢

转载自www.cnblogs.com/Jiangmengmeng-blog/p/jiangmengmeng-PTA-456.html
今日推荐