本文目录
- 面向对象和面向过程最本质的区别是什么
- 在编程语言中,面向过程与面向对象的区别在哪优缺点在哪
- 怎么理解“面向对象”和“面向过程”
面向对象和面向过程最本质的区别是什么
这是技术面试过程中经常问的问题,真要彻底的讲明白,不是一件很容易的事情。可以简单的用C语言和C++两种语言的本质区别来具体解释,首先从设计模式来讲面向对象更加容易形成框架特性,现在高级语言基本上都支持面向对象,像java,python都是这个样子。
从事编程十几年两种思想的编程语言都有一些涉猎,整体给人感觉面相对对象更加容易理解,面向对象更加抽象,现在就一些具体的特性做一个大概的了解。
如何理解面向过程
面向过程和大家正常是思维模式接近,把一个问题按照从左到右,从上到下的解决方案分解成N个小步骤然后挨个去执行,说的再抽象一点就是模块化,具体实现通过函数来完成,函数里面又可以调用函数,最终功能点就是被无数个函数来完成。
从代码逻辑上分析,主函数main函数下面分成几个大的功能函数,这几个函数又被分解成无数个小函数完成,稍微复杂点开启多个线程异步处理一些功能,基本上就是面向过程的全过程了,非常容易理解,底层的功能模块也能别的功能模块共用,不能讲面向过程没有共用性,只不过相对框架性看起来差些,linux内核绝大部分代码都是C语言完成,如果没有框架性不可能这么稳定的运行,也正是这么灵活的功能模块调用,早就了高效,所以在某些领域C语言依然是编程首先,同时也是基石,现在很多编程语言的底层都是C语言来完成的。
如果能用C语言的框架把一个系统构建的十分完善并且具备很强的扩展性,一定是编程的高手,这主要靠内在功底把零散的东西有机的结合成一种框架,不像面向对象自带抽象模型体系。
如何理解面向对象
面向对象在模式上和面向过程截然不同,面向对象是先抽象一个模型,然后把这个模型实例化来使用,这个抽象模型就是大家经常听到的类的概念,类并不能直接去使用,而是需要直接实例化,所以做了很多年面向过程的老程序员,发现面向对象类必须实例化,特别是想调用里面其中的一个方法的时候,还需要拿到对方的实例,然后才能直接去调用,放在面向过程的编程里面是可以直接功能函数。
面向对象里面的类,其实是面向对象里面结构体的延伸,把这个概念放大化了。类主要是两个部分构成,属性和方法,属性就是变量,方法就是功能模块。当然面向对象最主要的概念是把事物抽象化,举个例子,把各种动物抽象成一个类,常见的狗,鸡鸭鹅等共有的属性,都有能走动的动作,都有脚属性,但不同的动物数量不一样,抽象成一个动物类,如果要弄一个狗的类首先继承一个动物类,并且把动物基本的特性继承过来,如果觉得有些方法差异太大就覆盖掉,同时增加新的特性封装成一个新的类,然后实例化进行具体使用,还可以同时继承多个类,拿到共性的方法或者属性,这样子能很好的继承已经有的功能,特别积累并且继承以前的功能。
面向对象在代码量上会比面向过程的会少一些,毕竟有些功能方法可以直接继承过来用,所以开发面向对象的程序员切换到面向过程会觉得特别不舒服,有些共有的方法直接继承过来去用非常顺其自然,面向过程调用更加突兀或者直接一点。面向对象在解决复杂是逻辑上更加占据一定的优势,而且越用越有感觉。
如何理解面向对象的三个特性?
1.封装性
就是把属性和方法都放在一个类里面,而且还可以通过访问类的权限属性给区分开,更加安全,不想要释放的功能,直接搞成私有机制,正好符合软件架构里面高内聚低耦合,自己内部的事情就不要暴露出来,外部接口尽量简单,所以在设计上就符合软件设计的理念,封装性还具有安全性了,不想让外部访问的时候可以屏蔽。
2.继承性
就是把之前已经实现好的代码或者方法通过继承的方法拿过来使用,能节省大量的代码量,符合代码设计里面的继承优秀代码特性,而且写好的类还能给后来的人继续使用,面向对象语言更能形象的称之为站在巨人的肩上
3.多态性
由于可以继承多个类,能够组合成多种特性,但多态的关键是覆盖,就是同一个方法可以用不同的方式去实现,展现出多态性。
虽然看似这些概念很简单,说起来要比较容易,还是要真正在项目中去体现,真正通过代码来验证自己的想法,通过大型的项目实战再回归研究这些基本的概念,就会对这个设计者充满无线的钦佩。
在编程语言中,面向过程与面向对象的区别在哪优缺点在哪
首先,面向对象编程语言和面向过程编程语言都是操作计算机的方式,从本质上来说也都是操作计算机执行任务的工具,只是方式上的不同而已。
面向过程编程语言故名思议,以业务流程为考虑问题的出发点,从上到下按照解决问题的流程来组织代码结构,把功能封装成函数,然后依次调用就可以了。所以,面向过程的编程方式往往具有更为清晰的代码流程。面向过程的编程在早期业务逻辑比较单一的时期是非常适合的,而且面向过程的编程语言往往有更高的执行效率,典型的代表就是C语言。当前,C语言在嵌入式开发、操作系统开发领域依然具有广泛的应用。
随着软件开发的复杂化,软件编程需要解决的逻辑问题越发复杂,此时面向对象编程语言就出现了,面向对象语言的主要特点是“抽象”,形成了类、对象、封装、继承、多态等一系列面向对象的概念,这些概念的使用使得开发大型的业务逻辑系统更加方便和可行了。Java是典型的面向对象编程语言,目前也是IT行业内应用最为广泛的编程语言之一,在Web开发、大数据开发、后端开发和Android开发领域都有大量的应用。
简单的说,面向过程以解决问题的单一思路为出发点,而面对对象则以多角度解决问题为出发点,所以面向对象的编程要更加复杂一些。从学习的角度出发,学习面向过程的编程语言要稍微容易一些,毕竟函数式编程更容易理解。在学习面向对象编程语言的时候,在学习的初期会具有一定的困难,困难在于要理解一系列抽象概念,所以不少人都说,学习面向对象编程就是学习“抽象”。
我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。
如果有互联网方面的问题,或者考研方面的问题,都可以咨询我,谢谢!
怎么理解“面向对象”和“面向过程”
首先,我们先从编程语言的角度,看看这两者之间的区别。
面向过程最典型的编程语言就是C语言,面向对象的语言则有C++、java、C#等。
C语言中,基本的数据类型就是变量、数组、结构体、函数,当我们在使用这些数据类型编程时,主要考虑的就是如何把需要处理的数据放在合适的数据类型中,并按照事情发生的先后顺序依次调用函数,完成业务逻辑的处理。
而面向对象的语言中,最重要的概念就是类,类的实例化结果就是对象。这类语言在设计过程中,参考了很多现实生活中的处理模型,如汽车是一个很抽象的物体,但是如果说奔驰汽车、宝马汽车就很具体了,这些汽车又有高配低配之分,汽车可以行驶等。
汽车的这些模型,分别对应面向对象中的基类、派生类、属性和方法等概念。由此可见,在使用面向对象编程时,对数据的合理封装是其主要核心工作。
最后,总结一下,面向过程编程的核心技术是数据结构与算法;面向对象编程的核心技术是23种设计模式。大家一定要熟练掌握!
特别声明
本文仅代表作者观点,不代表本站立场,本站仅提供信息存储服务。