一. 编程思想:面向对象和面向过程
什么是面向对象?什么又是面向过程呢?对于这两大编程思想,一直贯穿在我们的学习和生活中。我们知道面向对象和面向过程,但是让你真正说出来的时候,你也许就会发现,我真的不知道怎样描述它。
举一个简单的例子,给你一个任务,你要思考怎样完成它?如果你的思维方式是:
我先做什么,再做什么……这叫面向过程;
我先做一个什么东西来做这件事,再做一个什么东西来做那件事,然后它们怎么相互配合……这叫面向对象。
下面我将要讲解一下我是怎样理解这两大思想的。
二.面向过程理解
传统的面向过程的编程思想总结起来就八个字——自顶向下,逐步细化!
实现步骤如下:
1. 将要实现的功能描述为一个从开始到结束按部就班的连续的步骤(过程);
2. 依次逐步完成这些步骤,如果某一步的难度较大,又可以将该步骤再次细化为若干个子步骤,以此类推,一直到结束得到想要的结果;
3. 程序的主体是函数,一个函数就是一个封装起来的模块,可以实现一定的功能,各个子步骤往往就是通过各个函数来完成的,从而实现代码的重用和模块化编程!
大神博客中看到的例子.
案例:学生到校报道注册
面向过程流程图:
面向过程,就是按照我们分析好了的步骤,按部就班的依次执行就行了!所以当我们用面向过程的思想去编程或解决问题时,首先一定要把详细的实现过程弄清楚。一旦过程设计清楚,代码的实现简直轻而易举。
三.面向对象
采用面向对象的思想,解决上面的报名问题,应该如下:
第一步:分析那些动作是由哪些实体发出的
*学生提出报名
*学生缴费
*机构收费
*教师分配教室
*班级增加学生信息
于是,在整个过程中,一共有四个实体:
学生、机构、教师、班级!
在现实中的一个具体的实体,就是计算机编程中的一个对象!
第二步:定义这些实体,为其增加相应的属性和功能
属性就是实体在现实世界中的一些特征表现。如:
人的属性:姓名、性别、身高、三围、体重、电话号码、家庭住址、籍贯等
手机的属性:品牌、价格、颜色、尺寸、待机时间等
功能就是能完成的动作,在面向对象的术语中,动作就叫作方法或者函数。如:
人的动作(功能):吃饭、睡觉、学习、打游戏、走路、跑步、缴费!
手机的动作(功能):打电话、发短信、拍照、打游戏、视频、看电影等
下图显示了在上述实例中出现的实体以及相应的属性和功能:
第三步:让实体去执行相应的功能或动作
- 学生提出报名
- 学生缴费
- 学校收费
- 教师分配教室
- 班级增加学生信息
所以说,面向过程主要是针对功能,而面向对象主要是针对能够实现该功能的背后的实体。面向对象实质上就是面向实体,所以当我们使用面向对象进行编程时,一定要建立这样一个观念:万物皆对象!
四,面向对象和面向过程的比较
在我们将面向过程和面向对象讨论完后,会明显的感觉两者之间有着很大的区别。面向过程简单直接,易于入门理解,模块化程度较低。而面向对象相对于面向过程较为复杂,不易理解,模块化程度较高。
可总结为下面三点:
1.都可以实现代码重用和模块化编程,但是面对对象的模块化更深,数据更封闭,也更安全!因为面向对象的封装性更强!
2.面对对象的思维方式更加贴近于现实生活,更容易解决大型的复杂的业务逻辑
3.从前期开发角度上来看,面对对象远比面向过程要复杂,但是从维护和扩展功能的角度上来看,面对对象远比面向过程要简单!
如何选择面向对象还是面向过程,对于一个有着丰富开发经验的老手来说,这是个得心应手的过程。而对于一个新手而言,其实从两者的对比就可以看出,当我们的业务逻辑比较简单时,使用面向过程能更快的实现。但是当我们的业务逻辑比较复杂时,为了将来的维护和扩展,还是面向对象更为靠谱点!当然,当我们被经理催着上交项目时,不要再选择纠结了,哪个能让你更快的完成项目就用哪个吧