前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何理解面向对象编程?

如何理解面向对象编程?

作者头像
高一峰
修改2020-09-22 14:18:13
5890
修改2020-09-22 14:18:13
举报
文章被收录于专栏:高渡号外

如何理解面向对象编程?

—— 新手编程1001问之C#编程基础


总觉得面向对象编程这个概念比较抽象。对象是个什么鬼?编程不就是写代码吗?你写一堆代码,然后运行,然后得到或显示运行结果,不是这样的吗?为什么还要说是面向对象编程?难道是程序员写代码时,面前要摆个“对象”,然后心里默念“对象保佑”,才能少出bug吗?

哈哈!没错、没错,只有对象保佑,才能少出bug。

其实,对于现在的新人来说,学习什么样的编程方法,都应该没有太大的障碍。相反对于有过程化编程经验的人来说,学习面向对象编程才是一件比较痛苦的事情,因为,他有面向过程的包袱,思维被“过程”格式化,忽然要采用面向对象的编程模式,比较难以跳出既定的思维习惯。好在“面向过程”的这一批“老人”,现在应该都切换过来了吧,估计想要他们再回到面向过程都难了。

首先,我想说,相比过去的面向过程编程,面向对象编程是一种轻量级的编程方法。

从两个层面来理解这里所谓“轻量级”的含义:

其一,从开发项目的角度。因为,它将你的开发项目定义为一个总体对象,然后,根据功能模块、服务对象等的不同被规划为若干子对象。咱们编程不再是直接为一个项目编程,而是为每一个子项目(子对象)编程,从而实现每一个功能子集。

其二,从代码组织的角度。因为,面向对象编程的编程思想,将程序相关的一切资源,包括代码本身都称之为对象。那么程序代码描述的任何目标,都是一个对象,程序员可以再面向这个对象来组织新的代码。所以,我们编程的过程不再仅仅只是处理数据,还会将已经组织好的代码块作为新的对象来处理。

正因为如此,现代程序员极少有写长代码的机会和习惯,甚至在一个对象里,连续超过100行代码的机会都是极少的,绝不像过去动辄上万行代码。这会带来一个极大的好处,就是一次性的代码量少了,程序员在写代码的间隙有更多踹息的机会,感觉写代码更“轻量”,也有更多的时间思考代码优化和重构的可能,或者能将更多的关注点放在组织架构和业务逻辑的处理上。

这就是面向对象编程之所以能取代和流行原因。

那么,究竟什么是面向对象的编程呢?下面我们来细细解读。

假定读者已经学习了一些关于编程的基本概念,诸如:变量、变量的运算、数据类型,包括数组、列表,还有流程控制语句等等。有了这些基本的概念,对下面的内容就应该比较好理解了。

面向对象编程,既是一种编程思想,也是一种编程方法论。

我们需要从这两个方面来理解:

  • 究竟是一种什么样的编程思想?
  • 又是一种什么样的编程方法论?

第一,它建立了这样一种编程思想

简单说,就是面向对象编程的思想。编程的过程,就是创建对象和创建对象的行为能力的过程。

包含三层含义:

1、万物皆对象,包括数据和代码。

2、创建对象,就是创建对象的描述,设计对象的行为。

3、编程的过程,就是创建对象的过程。

分述如下:

1、万物皆对象,包括数据和代码

既然万物皆对象,认识事物,就是认识对象。

包括我们开发的程序项目,也是对象,以及项目中要实现的一切功能细节,一切可视化的界面元素,一切不可视的变量、类型等数据和代码,都是对象。

2、创建对象,就是创建对象的描述,设计对象的行为

认识对象,就是认识对象的属性和行为。包含两个方面:

其一,一切对象,作为一个实体,皆有属性。所谓属性,是对对象特征的描述,就是定义它叫什么名字?长什么样子?是什么类型?有什么特性?等等。

其二,只有属性的对象是死的,一个有生命的对象,还必须有行为的能力。编程的目的就是为了创建有生命的对象。

比如一个项目,光好看不中用是不行的。它需要具备必要的功能,也就是行为的能力。项目中,我们定义的一切对象(如变量和类型等)都是有生命的,它们通过人机交互,甚至自动触发,能够产生行为,这个行为被称之为“事件”》。

这些对象的属性和事件,都是程序员需要定义的。

3、编程的过程,就是创建对象的过程

从形式上看,编程是写程序代码块,是不断定义对象的属性和行为的过程,本质上,就是创建各种对象的过程。

只不过,在这个过程中,我们一方面需要把对象的属性定义好,也就是对象的特征需要描述清楚。另一方面,我们更多的精力是要把对象的行为定义好,让它能按照我们规划设计的目标功能去实现。比如,某个对象在什么情况下会触发什么事件,来完成什么功能。

实际情况往往是,一个程序员在创建了一个项目以后,就会不断的按照项目规划设计的架构,来一层一层的搭建和填充整个项目的对象,也就是不停的定义对象的属性和行为,并让其实现既定的功能。

第二,它创造了这样一种编程方法论

简单说,就是一种基于对象、属性、事件和方法的编程方法论。

包含三层含义:

1、定义一个对象,首先定义其属性。

2、其次定义对象的行为,包括对象可能发生的事件及事件的结果。

3、定义对象行为的过程,通常是通过事件和方法来实现。

分述如下:

1、定义一个对象,首先定义其属性

属性用于描述对象的个性特征。比如外观特征、数量特征、访问特征等等,是创建对象时首先要完成的任务。

2、其次定义对象的行为,包括对象可能发生的事件及事件的结果。

为了让你创建的某个对象,具有某种行为能力,你必须规划设计好这个对象的事件,事件用于实现对象的功能。

3、定义对象行为的过程,通常是通过事件和方法来实现

我们说定义对象的行为,就是设计对象的事件,并通过事件的发生,来实现对象的功能。

举一个简单的例子,来解读上面的方法论。

比如,我们要创建一个按钮对象,这个按钮能够实现在用户使用鼠标单击以后,弹出一个对话框,提示“你好!”。

那么,我们分三步来完成它:

第一步,创建一个按钮,定义它的属性。包括:按钮的名称、ID、尺寸大小、显示位置等等。

第二步,给它设计了一个鼠标单击事件。那么,这个按钮就能接受一个鼠标单击的行为。

第三步,为鼠标单击事件添加方法代码,代码运行的结果,也就是单击事件的行为结果。

实例代码如下:

代码语言:javascript
复制
//创建按钮对象
<input type = ’button’ value = ’单击按钮’ style = ’width: 90px; height: 30px;’ onclick = ’ClickMe()’ />

上面的按钮中,对象的属性定义了,类型为“button”,显示为“单击按钮”,它的外观属性定义在style中,包括宽度和高渡,以像素px为单位。同时,还为它定义了一个鼠标单击事件,该事件会触发一个叫“ClickMe()”方法。

代码语言:javascript
复制
//创建按钮对象的事件方法
function ClickMe()
{
 Alert(‘你好!’);
}

所谓的方法,就是能够实现特定程序功能的代码块。

在程序项目中,程序员需要处理几乎他能想到的所有对象的所有事件,并为这些事件的完成编写实现其功能的代码。

面向对象编程不仅帮助我们建立了对象、属性、事件和方法的思想概念,而且可以说,面向对象编程的过程,就是一个程序员主动规划和设计“对象、属性、事件和方法”的过程。

我们为一个应用项目编写程序代码,通常不是被动地了解这个项目的对象、属性、事件和方法。而是根据项目需求,主动地设计它,从无到有地创建它们,设计出所有的对象,对象的属性,可能发生的事件,以及与事件相关的各种程序方法。

这是就一个主动的过程,即便是面对一个历史遗留的维护项目,我们依然应该拥有这个项目的全局观念,知道它是由哪些对象构成的,所有的对象可能发生哪些事件,每一个事件的方法是如何实现的,等等。

至于代码本身,它也是一种对象。这个对象,我们会更多的运用到“封装、继承和多态”的编程理念,来进一步优化我们的编程方法和代码结构。

所以,面向对象编程为我们创造了一套完整的、成熟的、科学的方法体系,归纳为一句话,那就是:面向对象的编程,就是基于对象、属性、事件和方法的编程思想,以及基于封装、继承和多态的编程方法。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 高渡号外 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何理解面向对象编程?
相关产品与服务
腾讯云小微
腾讯云小微,是一套腾讯云的智能服务系统,也是一个智能服务开放平台,接入小微的硬件可以快速具备听觉和视觉感知能力,帮助智能硬件厂商实现语音人机互动和音视频服务能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档