第一阶段的总结
前言
本次博文是针对前三次面向对象程序设计作业的总结
作业包含Java语法的基本使用,Java对象和方法的认识,面向对象设计方法的认识。
1作业过程总结
①总结三次作业之间的迭代关系
第一次到第三次作业,难度逐渐上升。
第一次作业:主要考察的是Java语法的基本使用,主要是if-else的嵌套,for\while循环的使用和嵌套,switch的使用等;
第二次作业:主要考察的是对象和方法的初步使用,主要是通过方法之间的调用,进一步熟悉Java语法,接触类和对象的使用以及方法的调用;
第三次作业:主要考察的是面向对象思想应用到类的设计上,通过对第二次作业的逐步迭代,逐步抽象,用面向对象的思想重构第二次作业。
②如何通过作业逐步从面向过程过渡到面向对象
在第二和第三次作业中,从面向过程的日期判断迭代到第三次作业面向对象的日期计,面向过程在思考和编写代码时较为简单,但具有很大的耦合性,代码中各部分关联较大,且只能顺序完成单一功能,一旦出现需求更改,几乎难以修改代码。而面向对象将各部分抽离出来成为类,使其解耦,通过对象之间的操作完成所需功能,复用性好,扩展性强。
③作业过程中遇到的问题及解决方法
主要问题
第一次作业中,直角三角形使用勾股定理计算,会得到斜边为根号2等无限不循环小数,无法和测试数据匹配.
解决方法:利用数学极限的定义,当两者之差小于极限E时,就认为他们是相同的
第三次作业中,测试数据中有整数型(int)最大值,在运算后,出现溢出等问题
解决方法:利用强制转换,将int转换为long类型来运算
④每次作业花费的时间比例
三次作业所花时间比列接近2:2:5,虽然之前有尝试过自学JAVA,但是令人遗憾的是没有学懂,好在C语言基础不算很差,在前两次作业上花的时间不算很久,但是到了第三次作业我无法从面向过程中走出来,面向对象对于我来说有着一条无法跨越的鸿沟,主要是概念问题,一时没有办法接受,但是最后在同学和老师的讲解下也渐渐缓和过来,成功地完成了三次作业。
⑤对编程过程的逻辑严谨性的认识及教训
面向对象过程相比于面向过程,更为复杂,实现起来较为简单,主要是观念的转变问题,复杂在总体设计上,往往花费时间更久,通常大于编码时间,需要考虑功能的扩展和复用。同时,设计方案有很多种,第一思路往往不是最好的,需要反复思考,逐步迭代。
2 OO设计心得
①面向过程与面向对象的比较
面向过程思路直接,按照步骤一步一步完成所需任务即可。面向过程是对任务和事务的抽象,不是按照步骤,而是通过各个不同部分\不同对象之间的关系来完成任务。
第二,面向对象需要思考好类的设计,如果类设计的不好,程序的耦合性和复杂性会非常的高。
②面向对象设计的基本原则理解
1. 单一功能原则:
一个类或一个方法,应该只干一件事。
2. 开闭原则:
在设计的过程中,应该逐步抽象出更高级的抽象,在新功能或者调整出现时,只需要扩展和很小的修改,尽可能的减少修改。
③OO编程思维的理解
面向对象是对世界的抽象,它将存在的事务抽象为一个类,这个类具有属性和可以完成的功能。如人类:有身高性别年龄名字等等等属性,可以完成送外卖送快递搬砖写代码等功能,但是类不能帮你完成事务,需要一个实例才能。比如某一个人可以送外卖,但人类本身不能去送外卖,需要实例一个外卖员,才能完成功能。类只是个定义,干活的是对象。
3 测试的理解与实践
①测试对于编码质量的重要性
往往在编码完成后,由于设计和编码过程中的不完善和问题,会在一些情况下出现无法得到正确结果的情况,有时候错误隐藏的较深,没办法直接看出来。要保证程序的健壮性和正确性,就需要测试,将可能存在的错误找出来。
②假如让你设计测试用例,你会如何做
尽可能的设计一些处于极限情况的数据,比如无穷大之类可能造成溢出等问题的数据,在一些逻辑复杂的地方要着重设计测试用例进行测试。
4 课程收获
一开始很不理解为什么计算机语言这么多种,也搞不懂JAVA和C的区别到底在哪里,尤其是从一开始的pta作业和老师让我有点云里雾里的讲解中,我没有意识到面向对象到底代表着什么。不过从后面一次次的实践中,我似乎感受到了不同的语言在自己领域中的优势,还有面向对象的意义。