java面向对象作业_java面向对象第二阶段作业总结

0.前言:

本次博客主要是针对Java面向对象第二阶段(5-8周)的作业总结与反思,主要以PTA上的练习和课堂作业为主,进行总结。

1.作业过程总结

本次总结针对的是三次pta作业。

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

第一次作业主要是对Java中的字符串的应用,和对应用正则表达式对输入字符串数据进行合法性校验的考察,还有图形类的继承的应用。可以说这是我们第一次接触正则表达式的相关知识,并且应用在一个对于我们是初次处理数据来说是有难度的题目上。第二次作业是在第一次作业的图形类的继承上加了多态的使用,还有使用类的继承、多态性实现简单多项式的导函数的求解,进一步加深了我们对继承的理解,和正则表达式的应用。第三次作业是在前两次作业的基础上,即类的继承、多态性使用时加上接口的应用,加深了我们对接口的理解。

②如何通过作业逐步理解面向对象的封装性、继承性与多态性三大技术特性;

每次作业的一些类里的属性的使用都是有限制的,而在其他类里使用就需要通过一些特殊的方法才能使用,这属于对自身类的一种保护。这就是属于封装性。作业中图形的继承,Shape类是父类,而这些Circle类,Rectangle类,Ball类,Box类都是它的子类,它们都继承了Shape类一些东西,比如周长,面积等。而多态性则表现在一个行为表现出来的方式是不一样的,比如同样是求面积,但每个物体的求面积的公式是不一样的,所以所需要的方法是不一样的。

③作业过程中遇到的问题及解决方法

第一次作业,主要是水文数据校验及处理的题目,对于输入的数据的检验要求比较多,以至于很多测试点都过不了,最后只能一个个来更仔细地修改。

2bda5b1f0a77d8f9f5e8e5ddf35f99c9.png

并且空格的处理也是很麻烦的:

0960557552a3a5cd27da73ba03d67f62.png

第二次作业的一元多项式求导的题目,对一个多项式的拆解问题花了比较多的时间,想了很久都找不到一种比较好的拆解方法,也问了很多同学的想法,最后选了一种比较好的方法。我也听同学说是强拆的,用了一百多行代码,我是不大想这样做的。

输入格式和输出格式都有着很多的要求:

d6a8fe01606cf5e42da7bb67bcf059d1.png299e643403dd86d37f030aa47689c635.png

图1   输入格式                                                                                                         图2    输出格式

第三次作业的图形卡片排序和在此基础上的分类排序问题,可以说是前一次作业的升级版,是一种对排序的应用。而最后的素数的问题,本以为是可以一遍过的,却出现了运行超时的情况,题目给的是10s的时间限制,而测试的数偏大,于是只能一遍遍修改。从这一题中也学到了很多想法。

④每次作业花费的时间比例

第一次作业花了十二小时左右,尤其是第一题水文数据的校验问题花的时间最多,多次在格式问题上出错。第二次作业花了七小时左右,一元多项式的格式检验问题一直找不到比较好的方法。第三次作业三个小时,难度较小,思路都是比较清晰的。

⑤对编程过程的严谨性的认识及教训

第一次作业的水文数据校验和第二次作业的多项式的检验都是对输入的数据的正确性判断,而有时少一个字符或是多一个空格都是不能让程序正常运行的,因此对数据的处理就显得很重要了。

2.OO设计心得

①对面向对象三大技术特性之间关系的理解

封装是通过将对象的某些属性和和操作隐藏起来,内部信息是对外隐藏的,在其他的地方就不能随便使用了,是对成员的一种保护。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

继承的子类拥有父类非 private 的属性、方法,子类可以拥有自己的属性和方法,即子类可以对父类进行扩展,子类可以用自己的方式实现父类的方法。Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类。

多态是一种事物的不同表现形式,具有多样性。就像是走路,每个人走路的形态都是不相同的。

②面向对象设计的基本原则理解(单一职责原则及“开-闭”原则)

在面向对象中每个类每个方法都是承担也是实现一种功能的操作,不会出现很多功能放在一起的情况。

对于开闭原则,看到过作业两句话,“对于扩展是开放的” ,“对于更改是封闭的”,模块的行为可以根据需要得到扩展,此时可以不用改动原来的代码而得到实现。

③OO编程思维的理解

面向对象中,对问题细致划分,通过一个个小功能的实现,而实现整个大的功能,而不是去专注于整个过程应该怎么解决。因而复用性很强。

④类设计心得

一个类的设计,应该是一个相对比较大的功能的实现,在这个类里有着实现该功能所必要的条件实现起来相对完整。

3.测试的理解与实践

①测试对于编码质量的重要性

测试是对一个程序能完整运行的必要检测。很多程序正常的数据可以通过,但很多时候输入的东西千奇百怪,不一定是合法性的,这就需要我们的程序能够精准无误地识别出来。

②查阅资料,假设使用Junit进行程序的测试是否可行

通过查阅资料得知,JUnit是一个开放源代码的Java测试框架,用于编写和运行可重复的测试。Unit是一个回归测试框架(regression

testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试。所以使用Junit进行程序的测试是可行的。

4.课程收获

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

通过这4周的训练,,对面向对象三大技术特性封装,继承与多态三者之间关系有了更深的理解,对它们的运用也更熟练了。了解了并慢慢开始使用“开-闭”原则,进一步训练了单一职责原则,对面向对象理解更深。在求素数的问题上,第一次是运行超时的,这也让我看到了代码的优化也是很重要的。

5.对课程的建议

①第三阶段作业难度、题量的建议

第三阶段的作业难度肯定是比之前的更大,但最好是难度不要太大,题量也不要太多。

②课程内容讲解方面的建议

做题的话,只靠课上老师讲的内容是不够的,很多内容都是需要自己去找资料的,希望课上的内容有更多的实例让我们去理解。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值