首页 > 编程语言 >面向对象编程与面向过程编程的区别

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

时间:2023-06-30 23:00:27浏览次数:73  
标签:对象 编程 面向 面向对象编程 过程 OOP

  一、面向对象编程(OOP,Object Oriented Programming):

    不必关心对象的具体实现,只需要能够满足用户的需求即可。主要以类或者对象为组织代码的基本单元。

  对象的三个主要的特性:

    1、对象的行为:可以对对象施加哪些操作,或者是对对象施加哪些方法。

    2、对象的状态:施加方法时,对象如何回应。

    3、对象的标识:如何判断具有向共同行为与状态的不同对象。

  好处之一:可以让用户自定义Java类变得轻而易举。

  二、面向过程编程:

  过程是指解决问题的步骤:也就是先干什么,再干什么,然后再干什么【流程化作业】。

    主要以“过程”作为组织代码的基本单元,属于一种流程话的编程风格,通过拼接一组顺序执行的方法,来操作数据完成这一项工作。

    主要是数据方法分离。猜测:可以先有方法,再有数据。最大的特点就是不支持类和对象。没有丰富的面向对象编程特征(继承、多态、封装)。

  三、面向对象编程相比较面向过程编程的好处?

    1、OOP 更加能够应对大规模复杂程序的开发

    2、OOP 风格的代码更易复用、易扩展、易维护

    3、OOP 风格的代码更易复用、易扩展、易维护

  四、常见的面向过程编程?

    1、滥用getter、setter方法。

    2、滥用全局变量、全局方法。

      代码中的配置参数一般设置为常量,放到某一个类中。静态方法将方法数据分离,破坏了封装的特性,典型的面向过程风格。

    3、定义数据和方法分离。

      MVC三层结构包括了Model层、Controller层、View层,每一层都有自己固定的作用。并且在某一种程度下固定了编码的书写过程。是一种典型的面向过程编码的方式。当然了这种开发模式被人戏称为“基于贫血模型的开发模式”。

  五、为什么明明知道面向对象编程与面向过程编程的区别,但还是容易写出面向过程风格的代码?????  

    在OOP类的设计中需要技巧和设计经验,思考如何封装合适的数据和方法到一个类里。

    面向过程编程往往更加符合人的流程化思维方式,比如:在生活中完成一个任务,通常更思考完成任务第一步需要干什么、第二步需要干什么。但是面向对象编程恰恰相反。它是一种自底向上的思考方式。先将任务翻译为一个一个模块,最后按照流程将类组装起来,完成整个任务。

 

   

标签:对象,编程,面向,面向对象编程,过程,OOP
From: https://www.cnblogs.com/kuangmeng/p/17492300.html

相关文章

  • 15.面向对象和super
    面向对象和super()类(Class):具有相同的属性和方法的对象的集合,即定义对象的模板对象(Object):类的实例化对象,有自己的属性和方法。类方法:使用装饰器@classmethod,传递类的属性和方法(不能传实例的属性和方法)类属性:类中的变量。类变量在整个实例化的对象中是公用的实例......
  • socket网络编程(三)——select多路复用问题
    1、select诞生的原因在上文我们提到了多客户端的时候,多台客户端发送数据到服务端的话,只能有一台客户端可以正常发送和接受数据,另外一台完全没有反应,那这个问题怎么解决呢?很多人可能第一反应想到利用多线程技术,线程多的话用线程池来维护。的确,多线程确实可以实现这个效果,但是,可能很......
  • 【面试必问】Spring核心之面向切面编程(AOP)
    tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。......
  • 【雕爷学编程】Arduino动手做(144)---KA2284 电平模块
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 浅谈一下c#多线程编程
    概念线程:线程是操作系统能够进行运算调度的最小单位,被包含在进程之中,是进程中的实际运作单位。同步:一定要等任务执行完了,得到结果,才执行下一个任务。如果程序执行耗时操作时会阻塞线程。应用场景UI与I/O:UI发出I/O操作,I/O操作是费时任务计算密集型工作(CPU-boun......
  • Kubernetes编程—— 使用自定义资源 —— 介绍自定义资源(Custom Resource,CR)
    介绍自定义资源(CustomResource,CR)自定义资源(CustomResource,CR),它是整个Kubernetes生态系统中最核心的扩展机制。 定义资源可以用作系统内部使用的对象,仅仅对它进行声明式定义,而不关联控制器逻辑,用不保存少量配置信息。但是自定义资源也可以成为很多复杂Kubernetes项目的......
  • 【雕爷学编程】Arduino动手做(142)---GY-25串口倾斜度模块
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 【雕爷学编程】Arduino动手做(141)---AS608光学指纹识别模块
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • dba+开源工具:面向开发的Redis轻便式图形可视化监控工具(附下载)
    轻便式RedisMonitor是面向研发人员的图形可视化监控工具,借鉴了LEPUS(天兔)监控平台以及redis-cliinfo命令输出的监控指标项,去掉了一些不必要、看不懂的监控项,目前采集了数据库连接数、QPS、内存使用率统计和同步复制延迟时长。RedisMonitor可以监控单机模......
  • A003 《棒棒糖自由》编程源码
    一、课程介绍本节课将复习变量并学习算术运算、dot画圆等新知识,最终绘制出一个彩色棒棒糖。二、知识重难点解析算术运算符Python编程中,加、减、乘、除这些基本数学运算,是经常用到的。运算符号分别是“+”、“-”、“*”和“”/“。注意:电脑上的乘和除号与大家在作业本上写的......