从面向过程到面向对象之初

  在学习面向对象(Java语言)之初,也需要像学习面向过程(c语言)学习特定的语法规则。通过开始的一些强化语法的练习发现两者语法规则大同小异,例如:实现条件选择结构的方式(if 、if else 、if else if、 if 嵌套Switch()  case1:..case2:…default:…);实现循环结构的方式(While、do{}while();、for:)等,在只接触这些时还是在用面向过程的思维进行程序设计。刚刚开始学习和应用(Java编程练习题),更多的时间花在熟悉Java语言的基本语法和规则,和后期测试与修改,而不是对于问题从不同层面的思考与设计,考虑不同的设计的优劣,即没有注重于设计。

  在进一步的学习及对一些涉及多个类的问题设计,才发现面向对象设计与面向过程的一些本质差别。面向过程一个“main”函数“打天下”,比较注重过程——方法,即怎么做;而面向对象则侧重于对象,即谁来做,每个对象的职责不同而其中职责即方法。

  通过深入的学习,发现两者设计思想、理念差距非常的大。显然面向过程,通过字面就可知它注重过程,即解决某问题、指令的方法,它是一种基础的方法。强调解决问题的过程,即方法(算法);一个大程序由多个小程序组成,这些小程序称函数。可以说面向过程是从上往下一步步实现、步步求精,面向过程最重要的思想方法是模块化。总而言之,面向过程侧重于怎么做,注重步骤过程,不注重职责分工,正因为如此,面向过程在复杂的需求变化的情境之下显得比较吃力。随着学习的深入,熟悉了Java语言的基本语法和规则后,更多的时间花在对于问题从不同层面的思考与设计,考虑不同的设计的优劣,即注重于设计,后期测试与修改熟悉Java语言的基本语法和规则,当然后期测试与修改还是需要下很大功夫。

  当然,面向对象与面向过程有一点点相似的东西,但是理念和思想却截然不同。虽然面向对象的方法含有面向过程的思想,但是面向对象侧重的是对象,不是怎么做,而是谁来做。相比较于面向过程的函数,面向对象是更大的封装,根据各个对象的职责在各个对象中封装多个方法。它更加注重的是对象和职责,不同的对象承担不同的职责;它提供固定套路,它在复杂的需求变化中非常具有优势。

  在学习面向对象的对象中遇到一些在面向过程中相似的问题,如:·各类型数据的越界问题(运用勾股定理判断直角三角形应当用Math.abs(c*c+b*b-a*a)<=1e-6),而不是简单的c*c+b*b-a*a));·用循环结构嵌套选择条件解决问题使用代码时把需要n次判断选择写成一次的低级错误;·当然初期对于Java的规则和设计理念有些许的不习惯。

  当然。无论是面向对象,还是面向过程,测试对于编码质量都尤为重要。最初写出来的代码,往往不能全面的解决问题,存在或多或少的细节问题未注意到;甚至偶尔存在一些大问题,比如逻辑上出现错误等。因此,在完成一个程序的代码之后,后期测试显得尤为重要且不易。后期测试出现若错误,则需要思考是数据越界、算法设计得不够完美、还是逻辑结构、或者大框架出现问题等等。如果是我来设计测试用例,首先需要考虑对于一些正常数据的测试,然后更重要的是对于边界数据的测试,其次非法的输入输出的测试。当然不仅仅只设置对输入输出测试,特别题目或项目还需对程序的设计的结构的测试。

  对于代码主要有两方面需要特别重视的:第一:是符合语法规则和正常认知、规则习惯,如在类、方法、变量、适当的注释等,使代码的可读性较高,这样做使得后期测试和更改更简易,并且在一个项目中是团队合作,良好的编码习惯和可读性高的程序(代码)非常的有利于团队成员之间更好的交流与合作;第二:我认为决定一个程序的优劣的主要还在于其对于问题或者项目的理解和思考角度和思考的层面;然后在针对进行设计程序的结构,不同的类的设计,如各个类的职责,程序的逻辑框架结构。

  总而言之,学习面向对象思维不能在停留在面向过程的层面,应当更上一层楼,站在另一个层面想问题。面向对象侧重于对象——谁来做,各个对象具有不同的职责——能执行不同的指令实现不同的功能。

  本人通过一个月左右对学习面向对象,主要学习和收获有:

    1、  单一职责原则。一个类专注于单一功能,在新的一轮测试中类需要修改的可能性非常的大,如果把多个功能放在同一个类中,功能之间就形成了关联,改变其中一个功能,有可能中止另一个功能,而每个类专注于一个职责就可以有效避免此类问题。

    2、  关于继承:在任何父类出线的地方都可以用他的子类来替代(子类应当可以替换父类并出现在父类能够出现的任何地方)子类必须完全实现父类的方法。在类中调用其他类必需要使用父类。

    3、  学习了如何使用UML图将整个程序清晰简洁的呈现出来。

    4、  熟悉了Java语言的基本规则。

  最后对于Java程序设计这门课程十分兴趣,它为程序设计提供了一种新的思想和设计方法,实用性非常大,设计理念、思想很新颖,当然难度系数自然不用说,需要在接下来的时间花更多时间精力去好好专研。

 

posted @ 2020-04-05 01:02  brief1  阅读(200)  评论(1)    收藏  举报