首页 > 其他分享 >面向对象和面向过程的区别

面向对象和面向过程的区别

时间:2023-02-13 11:11:24浏览次数:37  
标签:思维 区别 对象 编程 面向对象 面向 过程

前言

壹哥相信,经过你对前面文章中技术点的学习,现在的你应该已经对Java具备了初步的了解和掌握,这为我们继续往后学习奠定了良好的基础。我们知道,Java是面向对象的编程语言,但是至今仍有不少同学还不太懂”面向对象“的确切含义。难道面向对象就是”面对着自己的对象“,那我没对象咋办?那么从今天这篇文章开始,壹哥就带大家真正地认识面向对象,Let’s go!

------------------------前戏已做完,精彩即开始-----------------------

全文大约【2000】字,不说废话,只讲可以让你学到技术、明白原理的纯干货!本文带有丰富的案例及配图,让你更好地理解和运用文中的技术概念,并可以给你带来具有足够启迪的思考......

一. 面向对象

既然我们要学习面向对象,那首先得对其基本概念、特性、对象、类等内容有所了解。

1. 概念

我们知道Java是面向对象的编程语言,所以首先壹哥得给大家解释一下到底啥是面向对象编程。

所谓的面向对象编程(Object-Oriented Programming,简称OOP),其实是一种软件开发思想,也是一种编程范式。在面向对象的编程思想出现之前,主要是面向过程这种思想垄断着程序员们的编程思维。”面向“这个词,从字面理解就是”对着、朝向“,准确地说应该是”遵从、依照、按照、根据“的意思。”对象“,并不是指你的男/女朋友那个”对象“,而是指真实世界中的一个个实体,有点类似于哲学中”抽象“与”具体“范畴中的一个个”个体“。

可以说,在面向对象的编程规范中,“一切皆对象”,对象就是面向对象编程的核心。我们把现实世界中的一个个对象或物体,抽象地体现在编程世界中。就好比我们想驾驶一辆奥迪A6,A6就是一个对象,制造商给A6赋予了各种功能和特性,我们就可以调用这个对象完成一系列操控。所以每一个对象都可以包含一系列具体的操作,最终一个个的对象又组成了完整的Java程序。这些对象可以是独立存在的,也可以是从别的对象中继承过来的。对象之间通过相互作用传递信息,实现程序开发。

壹哥给大家举个栗子,假如我们想吃饭,按照面向对象的解决思维就是:

1. 创造一个“农民”对象,去种地;

2. 创造一个“厨师”对象,去做饭;

3. 创造一个“食客”对象,去吃饭;

4. ......

问题解决!

2. 特点

在面向对象编程中,一个对象会有以下特点:

● 对象具有属性和行为;

● 对象具有变化的状态;

● 对象具有唯一性;

● 对象都是某个类的实例;

● 一切皆对象,真实世界中所有的事物都可以视为对象。

当然,如果只是这样跟大家解释一通,很多小白肯定还是不明白到底啥是面向对象。别急,面向对象是一种认知思维,一种思维的养成,并不是一朝一夕就可以形成的。有些科班出身的Java程序员,在学校里接触了很久的面向对象,甚至都做了几年的开发,真让他解释啥是面向对象,他依然很懵懂。我们要想真正地理解面向对象,只看几篇文章和视频是很难吃透的。你需要进行大量的编程实践,写着写着,有一天你就会突然顿悟:“啊,原来这就是面向对象啊”!

二. 面向过程

在上面的小节中,壹哥还给大家提到了“面向过程”这个概念,虽然这不是我们要掌握的内容,但我觉得还是有必要跟大家拓展解释一下。

1. 概念

面向过程(Procedure-Oriented Programming,简称POP)也是一种编程思想和模式。它出现的时间比面向对象还要早,可以说是早期高级编程语言所采用的思维鼻祖。采用面向过程思维的编程语言有C、Fortran、Pascal、Basic等。

面向过程的编程思想其实很机械粗暴,所有的事情都可以拆分成一系列要执行的计算步骤,通常采用自上而下、顺序执行的方式来实现。还是给大家举吃饭的栗子,如果是按照面向过程的解决思维就是:

1. 开垦荒地;

2. 种粮种菜;

3. 收获加工;

4. 做饭烹饪;

5. 开始吃饭;

6. 收拾整理;

7. .......

你看,整个执行逻辑就是这么机械粗暴,简单明了。面向过程就是把目标的实现拆分成了一个个的实现过程,而每一步又可以继续拆分成若干个子步骤。这种解决问题的思维,与面向对象是有明显不同的。

2. 特点

根据以上分析,我们可以感受到面向过程的优点在于,性能上它比面向对象要高。因为在面向对象中,我们在调用类时需要进行实例化,开销比较大。但面向过程的缺点也很明显,代码不易维护、复用和扩展性都很差,开发效率较低。所以面向过程的开发技术,主要是用在单片机、嵌入式开发、Linux/Unix等对性能要求较高,代码改动不频繁的场景中。

3. 面向对象与面向过程的对比

面向过程的解决思维是“步骤化”的。解决问题就是分析出实现一个需求所需要的步骤,通过函数(方法)一步一步地去实现,接着我们依次调用这些函数即可。

而面向对象的解决思维是“行为化”的。就是把整个需求按照特点、功能划分,将存在共性的部分封装成类。类实例化后就是对象,创建对象不是为了完成某一个步骤,而是为了描述某个事物在解决问题时的行为。按照这种思维,项目代码就很容易维护、复用、扩展,并且系统会更加的灵活。

-------------------------正片已结束,来根事后烟-------------------------

三. 结语

至此,壹哥就给大家解释了面向对象和面向过程的概念,并对比了两者的区别,你现在知道什么叫做面向对象了吗?

在下一篇文章中,壹哥会给大家讲解面向对象中最基本、最重要的组成单元:类和对象,大家不要错过哦。

五. 今日作业

1. 第一题

评论区说说你对面向对象的理解。

标签:思维,区别,对象,编程,面向对象,面向,过程
From: https://www.cnblogs.com/qian-fen/p/17115651.html

相关文章

  • 基于客户端和服务端实现分表分库区别
     ......
  • 63. C高级-面向接口编程
    14面向接口编程14.1案例背景一般的企业信息系统都有成熟的框架。软件框架一般不发生变化,能自由的集成第三方厂商的产品。14.2案例需求要求在企业信息系统框架中集成第......
  • 赋值和浅拷贝的区别
    当我们把一个对象赋值给一个新的变量时,赋的其实是该对象的在栈中的地址,而不是堆中的数据。也就是两个对象指向的是同一个存储空间,无论哪个对象发生改变,其实都是改变的存......
  • forEach和map的区别
    相同点都是循环遍历数组中的每一项forEach和map方法里每次执行匿名函数都支持3个参数,参数分别是item(当前每一项)、index(索引值)、arr(原数组)匿名函数中的this都是指向win......
  • Vue的computed和watch的区别是什么?
    一、computed介绍computed用来监控自己定义的变量,该变量在data内没有声明,直接在computed里面定义,页面上可直接使用。//基础使用{{msg}}<inputv-model="name"/>......
  • JAVA - - - String, StringBuffer,StringBuilder的区别
    String,StringBuffer,StringBuilder的区别Java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类。现在总结一下,看看他们的不同与相同。1.可变与不可......
  • Cookie 和 Session 区别
    Cookie保存客户的数据,服务器产生发回客户端Cookie数据保存客户端,不安全Cookie数据限制64KBCookie保存SessionID值Session数据存储服务器相对Cookie安全不限制类......
  • 面向对象特征
    面向对象:注重的是对象(参与者)需要做什么,更易于复用。扩展和维护https://blog.csdn.net/guorui_java/article/details/121178242封装封装性就是尽可能的隐藏对象内部细......
  • Java面向对象之函数式编程
    1函数式编程在数学中,函数就是有输入量、输出量的一套计算方案,也就是“用什么东西做什么事情”。相对而言,面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽......
  • String和StringBuffer的区别
    String和StringBuffer的区别   String是一个非可变性的类,这种类的特点是状态固定(不存在任何修改对象的方法),在该对象的生存周期内,它的值是永远不变的(它是线程安全......