前言
本次博客主要是针对面向对象编程学习(Java)第一阶段的总结与反思,以PTA平台的练习作业为总结评估对象,望不断学习,不断提升。
一.作业过程总结
①__总结三次作业之间的知识迭代关系
• 第一次作业整体难度较小,五道试题都是基础结构中的常规类型,考察了选择、循环结构、字符编码转换以及数据精确度等基础知识,以熟悉Java基础语法为主,试题思维还是面向过程思维。
• 第二次作业整体难度比第一次增加,难度适中,四道试题更加考察了Java语法中的方法使用,是使我们从面向方法开始到面向对象的前提。
• 第三次作业的难度与之前相比有了明显的提升,主要原因在于这是一次完全的思维转换,四道试题中以类的设计与类图的关系设计为主线,我们在思考和编写代码时要站在面向对象的角度,例如以日期计算与判断为主要操作对象,通过三道试题的优化与更迭,较好地实现了课程核心的转换。
②__如何通过作业逐步从面向过程过渡到面向对象
我们从第一次的****Java语言+面向过程思维,到更深的Java语言+面向过程思维,到第三次Java语言+面向对象思维,这其中由于作业试题的优化设计,是让我们基本稳步推进思维的转换和语法的学习实践,从专注于函数方法的设计,到对类和对象的定义以及方法的使用,使我们学会了更好的面向对象来设计代码。
③__作业过程中遇到的问题及解决方法
• 第一次作业中的主要问题是第四题中对数据处理精确程度的判断发生错误,主要是由于对等腰直角三角形的边长的浮点型数判断于计算机来说对精度的控制会产生误差,要人为的控制才能解决。
• 第二次作业中的问题是第一题粗心导致输出格式错误,第四题对7,8月求前后N天考虑不周,漏掉了一个关键点导致错误。
• 第三次作业遇到了问题在于类间的方法调用与方法设计,从第二题的要求并没有这么高到第三题在类图的指导下按要求设计,这里的设计难度较高。
④每次作业花费的时间比例
• 第一次作业大约用了2小时左右,第二次作业大约用了4小时,第三次作业前后大约用了30小时左右。
• 三次作业的时间比例约为 1 : 2 : 15
⑤对编程过程的逻辑严谨性的认识及教训
从第一次作业开始就认识到了不仅仅是作业,当我们未来执行更高级体量更庞大的工程时,数据与算法的逻辑严谨都是至关重要的,有时候可能是一个小问题就可能导致进度停滞或未知风险,“千里之提,溃于蚁穴”,故我们应该对编程过程的逻辑严谨性导致的危害性要有充分的认识,才能避免更大的教训。
二.OO设计心得
①面向过程与面向对象的比较
• 顾名思义,“面向过程”,即注重代码内部功能如何实现算法设计的过程,对于整体来说统一性较高,更容易牵一发而动全身,就像一个座椅的一个支架断裂,整体难以实现原功能。
• 而“面向对象”注重的是对整体的选择分类处理,先决逻辑性更高,每个分类专注自身功能,对于整体更易解决与处理不同功能的关系,就像一本书缺了几页对其他内容影响较小,只要补齐并不会使其丧失功效。
②面向对象设计的基本原则理解
最基本最重要的核心就是——“单一职责原则”,对于分配好的类来说,每个类的逻辑上是负责其某一个职责的,就只能执行它应有的功能,而不能越界去干扰其他类的功能,这其实也是为什么要有类的功能存在的底层逻辑,就应该各司其职地处理问题。
③__OO编程思维的理解
本人对OO编程思维的理解是基于对问题处理所需功能,从逻辑上分配分类后,按要求在类中设计好内容,类间设计好高效率的关系,并对将来的可能的复用做好规划的整体性思维。
三.测试的理解与实践
①测试对于编码质量的重要性
• 第一,在于对本质功能是否能够实现的判断,由于完整的测试功能,我们才能发现不完善的错误并解决;
• 第二,在于对已经完成本质功能的程序的执行效率的提高,基于测试的时间我们可以改进算法优化执行时间,以减少存储空间的浪费和提升用户的流畅体验。
②假如让你设计测试用例,你会如何做
• 第一,基本的关键功能测试点必须面面俱到,如果功能有缺陷那么此工程是不合格的;
• 第二,我会考虑在基本功能之外的交互设计,编程应用的本质就是为人类提供更友好更智能高效的问题处理能力,那么基于人性化考量,可以对人机交互的层面对代码给予更高的宽容度,也更有利于课程兴趣的培养和人员创意的开发。
四.课程收获
总结这四周来在OO方面的教训及收获
• 从课程开始前我对课程的教学和测试难度等有大概的预估,但是这四周真正经历过来还是有不少体会的。
• 首先是翻转课堂的教学模式,自主学习加教师指导,学习效率变高的同时,对我们的自学与自律提出了更高的要求,需要我们及时处理问题以及和同学老师交流,如果不积极跟上并且没有良好的求学态度,这门课程将难以完成。
• 其次是测试难度,按层级递增,对我们来说富有挑战性,也是最高效的提升能力的方法,面对困难是暂时的,得到的优质思维与方法是长期的,不仅仅是课程本身的内容这么简单。
• 最后是对于未来,自身应该紧跟课程节奏,尽量走在老师的前面,主动发现问题,提出问题和解决问题,这才是学好本课程的关键要求。
五.对课程的建议
可以基于对课程进度与学生自觉性的判断,创立小组学习制度,方便交流讨论,每周在独立完成作业的情况下对作业错误与优化的处理进行针对性交流,并截图给老师反馈,并提供难以解决的共性问题给老师,再通过老师的讲解可以提升整体的学习效率。