初识面向过程编程与面向对象编程的区别

初识面向过程编程与面向对象编程的区别

面向过程编程(OPP),顾名思义,是以过程为中心的编程思想。通过画流程图等方法梳理出整个程序的步骤流程,围绕着要解决的任务来设计,然后用代码把整个过程依次实现。这就要求熟悉所有问题域,熟悉整个流程。
比如要分析ATM取钱这个过程:我们需要到ATM机边把银行卡插进去,然后输入密码,ATM机判断密码是否正确,如果不正确,提示“密码输入错误,重新输入”,如果正确,进入选择菜单,选择取钱功能,确认密码,如果密码错误,ATM输出提示“密码错误,取钱失败”,如果正确,取款成功,最后选择退卡,结束取钱,整个过程结束。

面向对象编程(Object Oriented Programming,简称OO),是围绕着问题域中的对象来设计,首先从问题域中抽取解决问题有意义的组件进行关注,然后对这些组件进行数据、职责划分,最后再利用各种组件进行组合,实现问题域。
首先要了解什么是对象。我们经常听到一句关于对象的描述:
万物皆对象,对象因关注而产生。万事万物都可以作为对象,但关注的角度不同,就会有不同的理解。
比如我们手中的的钱,在大部分人心中,钱只是衡量我们手中财富的一个指标,当我们关注一个人有多少钱时,它可以作为那个人的一个属性(属性可以理解为QQ等社交软件中贴的标签,描述某个或某些对象具有的词语。比如问一个人帅不帅,这个帅不帅就是一个属性,回答“帅”或者“不帅”,这就是对属性的描述,即赋值),当我们关注一个钱包能放多少钱时,它可以作为钱包的一个属性;但如果是在设计钱的人眼中,他们更多的是关注钱的编号,面值,钱上面的图片,防伪记号等等,此时,钱就是对象,钱的编号,面值,图片以及防伪记号等等就是属于钱的属性。
以上的举例是不涉及任何行为的,初学时,面对一些面向对象的行为分析,很容易就错误的理解对象。比如我们到银行ATM机上去进行存取款等操作,显然人和ATM机分别是两个不同的对象,但分析行为时很多人可能就会很矛盾。人去ATM机上办理业务,整个过程是人拿卡插进ATM机,然后输密码,再选择查询余额或存款等,操作完后退卡。此时查询余额或存款的行为是属于ATM机的,人只是去办业务时调用了ATM的这些行为,这些功能。在分辨对象行为时,其实可以先把不同的对象分开,把各个对象有的具有的属性和功能都放在对应的对象上,若对象不是人,则可以把这个对象的拟人化,对象具备的功能就可以看做它的行为,比如这里的ATM机,它的功能是提供查询,存款,取款等功能,我们去下达指令,让ATM机给我们存取款,ATM就自行进行存取款的行为。

面向过程编程,是把所有流程一起归纳整理,按流程依次编写、执行。从初始条件的声明、赋值,到执行语句,再到最后输出结果,整个流程都是集合在一起,对于初学者编写简单的,代码量少的小程序而言还算比较方便,但对于现代软件开发而言,各种各样的问题域不再熟悉,问题域的可扩展性越来越强,面向过程编程就显得不是那么容易维护、扩展。

面向对象编程,是通过把问题域分析整理,模块化,把不熟悉的问题域拆解,让我们快速熟悉。把程序抽取出对解决问题有意义的组件、对象,然后对这些组件、对象进行数据、职责的划分,最后把这些组件组合,实现问题域。面向对象编程的优越性体现在:各个组件、对象是分职责的方式设计,谁的职责变了,就只需要替换谁,不需要像面向过程一样去从头检查。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值