面向对象和面向过程的本质区别
多年来,面向过程和面向对象为人所津津乐道,这个可能是程序员当中极其容易勾起的话题。而最容易谈起的就是C是面向过程的语言,C++是面向对象的语言,然而我觉得这个回答有点肤浅,因为C也可面向对象,C++也可面向过程。我们所说的面向过程和面向对象应该是一种思想,不应该限制在编程语言当中。
但是相对而言,C++,Java更容易面向对象,因为他们似乎专门为面向对象而生,解决了软件结构设计的一些难题;而C语言更容易面向过程,因为它是一门系统语言级别的语言,需要较高和较快的性能和速度。
其实很多人并没有意识到自己是在面向对象还是在面向过程,简单来说,虽然写了很多函数和很多个类,但是依然没有编程思想,人云亦云。
首先我们来了解一下它们的概念
面向过程:是以过程为中心的编程思想。以我的理解,事物比较简单,可以用线性的思维去解决。有个同事是做mcu固件的,也就是单片机开发,用的是keil编译器,他干的就是不断写函数,单线程梭到底,不会用协程,多线程通信。
面向对象:是一种对现实世界理解和抽象的方法。以我的理解,事物比较复杂,使用简单的线性思维也无法解决。所以它有封装,继承,多态,抽象特征。项目程序代码是以类为单位,方法从属于类。
共同点:面向过程和面向对象都是解决实际问题的一种思维方式,二者相辅相成,并不是对立的。解决复杂问题,通过面向对象方式便于我们从宏观上把我事物之间复杂的关系、方便我们分析整个系统;具体到微观操作,仍然使用面向过程方式来处理。
面向过程
优点:性能比面向对象高,因为类调用时需要实例化,比较消耗资源;比如Linux/Unix等一般采用面向过程开发,性能是最重要的因素;很多驱动,单片机mcu开发,涉及到硬件图形渲染,算法封装等,都会采用面向过程。
缺点
1.复用性较低,因为面向过程时逐步进行功能的实现;
2.代码维护更改性低,在面向过程编程中没有面向对象的封装方法,如果出问题得全局进行逐步代码分析;
所以如果是面向过程,你采用多线程,多进程,协程,这些方式通信,其实还是比较痛苦的,需要你有扎实的编码水平和经验,不然一个bug可能会让你的大厦崩塌。
面向对象
优点:
1.易维护,代码可读性好,而且面向对象就是比较容易读懂业务逻辑;
2.易复用,需要的时候new一个类,实例化,可继承,可封装;
3.易扩展,可多态,可以自己重写实例化这个方法;
4.由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护;
5.在复用时直接调用封装好的方法即可,而且安全性相对较高,可以避免不必要的更改引起的错误;
6.允许一个对象的多个实例同时存在,而且彼此之间不会相互干扰;
7.安全性较高
缺点:其程序处理的效率比较低,代码容易冗余,经常碰到一个瓶颈后就需要重构一下。
而这里面需要提的是类和对象的关系。类是对象的抽象,实例是类的实现。C++中对象和类有何联系和区别:
它的区别就像
float pi = 3.141592654;
中的float和pi的区别一样。
类是用户自定义数据类型,而对象是这些类定义的具体实例或变量。
什么时候面向过程,什么时候面向对象
以上也简要表达了面向过程和面向对象的场景。就我觉得,如果是做上层应用,做app应用开发来看,有面向对象的思想就已经是水平相当好的程序员了。因为设计模式,很多设计思想的基础就是类,就是面向对象的叠加。只有写过几十万行代码的人才懂面向对象带来的舒畅,如果你仅仅只写过几万行代码,我想即使你用了面向对象的思想,你也体会不到他的优点。
凡事不可勉强,只要突破你的瓶颈后,在一些必须要用面向对象去解决问题你才能获取他的精髓,如果场景中面向对象和面向过程都能解决问题,那么我觉得你是不会体验到他们区别的。
对新手而言,可能面向过程是最经常的。即使你自豪的封装的几个类,那么也不要以为自己是在面向对象了,其实有可能你还是在面向过程。格局打开,尽可能阅读多的代码,去熟悉一些开源和大工程,这样就能感觉到的宇宙的浩瀚和自己的渺小,从而提升自己的水平,不断打破上限。
兔云程序
致力于推广编程教程,服务程序员
22篇原创内容
公众号
相关文章
-
雷军:从金山“宰相”到小米“沙皇”
-
卡思商业智能分析系统:4大方案一站式解决短视频KOL营销难题
-
第三届陕西“一带一路”科技创新创业博览会4月20-22日西安举办
-
三星回应联名,百度好看视频被微信封杀?NASA或将救援钢铁侠
-
手机可以边充电边玩吗 手机充电的事项有哪些
-
热点 | 江苏金湖现过期疫苗 小程序“腾讯安心计划”可查疫苗过期时间
-
华为或向苹果出售5G芯片;京东宣布实施核心高管轮岗计划;小米去年赚134亿,雷军年薪百亿
-
搜狐5G峰会|5G和AI融合,世界将发生哪些巨变?
-
荣耀8X系列出货量破千万的启示:品质够硬核才可能赢得用户
-
手机被盗后,你的支付宝真的还安全吗?
-
回望2018:华为云的顺势和错位
-
微软“作死”Windows
-
淘式「躺平」生活
-
物美接盘近半数邻家门店,更名为“多点便利店”
-
期刊网收录的论文评职称认可吗?
-
敲黑板,这些细节数据才是苏宁零售经营的核武器
-
1.2亿用户、55亿张照片的网易相册要关闭,网友直呼一代青春消失
-
疫情引爆在线教育市场互联网巨头切入点有何不同
-
国内知名音乐站无法访问疑倒闭,创始人曾被坤音娱乐控诉挪用1000万
-
曾一天卖掉一年的量!尝到甜头的非洲老铁,这次想承包中国的年货
-
“复制”一个淘宝直播?福布斯杂志:亚马逊做得还远远不够
-
热点|富士康原价出让小鹏汽车股权或为后者IPO做准备
-
苹果新财报发布后,股价盘后大涨近6%
-
苹果新闻是媒体巨头的派对还是葬礼?
-
广州公共设施行业企业名录
-
BW-20N100W+固定衰减器
-
焦点分析丨拼多多距离“第二大电商”只差临门一脚,但这一步没那么好走
-
PEGSuccinicAcid-PEG-SuccinicAcid,SuccinicAcid-PEG-SA含有丁二酸的PEG
-
12小时成交超1500亿!天猫双11引爆中国消费升级新能量