专业汉语词典知识平台,分享汉字词语知识、历史文学知识解答!

励北网
励北网

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

来源:小易整编  作者:小易  发布时间:2023-03-06 03:40
摘要:面向过程与面向对象的区别一、编程思想 编程的本质是逻辑,要想学好编程,不仅要掌握基本功——编程语言,更要培养良好的编程思想,面向过程和面向对象是两种重要的编程思想。数据结构与算法是编程能力,而不是编程思想。 优秀代码的原则:高复...

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

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

一、编程思想

    编程的本质是逻辑,要想学好编程,不仅要掌握基本功——编程语言,更要培养良好的编程思想,面向过程和面向对象是两种重要的编程思想。数据结构与算法是编程能力,而不是编程思想。

    优秀代码的原则:高复用、低耦合。这两个原则保证代码的灵活性高、方便改动、复用性高,能够提高代码编写效率。

二、面向过程

2.1 面向过程定义

    面向过程是绝大部分程序员的思想,它一种以过程为中心,依次把解决问题的步骤分析出来,并用函数封装好,后续在主函数中按照具体步骤调用相应的函数。

    面向过程编程的程序主体是函数,一个函数就是一个封装起来的模块,各个子步骤往往是通过各个函数来完成,因此面向过程是以行为(函数)为中心,始终关注的是怎么一步一步解决问题,从而实现函数的顺序执行。传统的面向过程的编程思想总结起来就八个字——自顶向下,逐步细化,它将要实现的功能描述为一个从开始到结束按部就班的连续的步骤(过程),依次逐步实现完成这些步骤。

2.2 优缺点

三、面向对象

3.1 面向对象定义

    当问题的规模变得很大时,用面向过程的思想是远远不够的,所以就出现了面向对象的编程思想。

    面向对象编程是以数据(对象)为中心的编程思想,它把要解决的问题分解成各个对象(而不是各个步骤),比如世界上有很多的人事物,每个人事物都是一个独立的对象,都有自己的属性和行为,对象与对象之间通过方法来交互。建立对象的目的不是为了完成一个步骤,而是为了描述某个对象在解决整个问题步骤中的属性和行为。

    面向对象编程的分析问题步骤:分析问题中参与其中的有哪些实体,这些实体应该有什么属性和方法,我们如何通过调用这些实体的属性和方法去解决问题。现实世界中,任何一个操作或者是业务逻辑的实现都需要一个实体来完成,实体就是动作的支配者,没有实体,就没有动作发生。

    面向对象编程是比较高级和抽象的思想,它具有三大特性五大原则:封装、继承、多态、单一、开闭、里氏替换、依赖倒置、接口隔离。

    面向对象的思想就是优秀代码原则的体现:

  • 面向对象的继承性是高复用的体现;
  • 面向对象使得面向过程的变量和函数限制在对象里面,变成了对象的一部分,使得变量和函数有了单独的执行环境,从而使得变量和函数与外界隔离,这就是低耦合的体现。

    如何培养面向对象编程思想?

  • 时刻谨记面向对象的三大特性五大原则;
  • 不断地重构已经写好的业务逻辑代码。

3.2 优缺点

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

  • 面向过程适合开发中小型项目,面向对象适合开发大型项目;
  • 面向对象和面向过程最本质的区别在于考虑问题的出发点不同。面向过程是以事件流程为考虑问题的出发点,而面向对象则是以参与事件的角色(对象) 为考虑问题的出发点,所以面向对象在处理问题时更加灵活;
  • 对于面向过程的思想:需要实现一个功能的时候,看重的是开发的步骤和过程,每一个步骤都需要自己亲力亲为。对于面向对象的思想:当需要实现一个功能的时候,看重的并不是过程和步骤,而是关心的是对象,每个对象执行什么行为。

四、一个小例子

4.1 例1

    以已知圆的半径,求圆的周长和面积为例,理解面向过程和面向对象编程的区别。

    面向过程的分析思路是:分别定义求周长、面积的两个函数,这两个函数的输入都是圆的面积,在主函数中依次调用两个函数即可。

def cal_round(para):
    pass
    
def cal_area(para):
    pass
    
    
if __name__ == '__main__':
    r = 1
    round = cal_round(r)
    area = cal_area(r)

    面向对象的分析思路是:这个问题有一个对象/类(圆),对象/类有一个属性(半径),对象/类有两个方法(求周长、面积),所以构造圆这个类之后使用半径就可以把这个类初始化了。

class circle(object):
    def __init__(self, r):
        self.r = r
    def cal_round(self):
        round = 2 * 3.14 * self.r
        return round
    def cal_area(self):
        area = 3.14 * self.r * self.r
        return area
if __name__ == '__main__':
    r = 2
    cir = circle(r)
    round = cir.cal_round()
    area = cir.cal_area()

本文地址:百科问答频道 https://www.neebe.cn/wenda/916635.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


百科问答
小编:小易整编
相关文章相关阅读
  • 面向对象编程是什么意思,面向对象编程详解

    面向对象编程是什么意思,面向对象编程详解

    面向对象编程是什么意思,面向对象编程详解面向对象的编程(Object-OrientedProgramming,OOP),每当看到这个术语,我们就会把它与Java联系起来。事实上,Java普及了面向对象的编程风格,除了Java之外,还有很多O...

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

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

    面向过程与面向对象的区别一、编程思想 编程的本质是逻辑,要想学好编程,不仅要掌握基本功——编程语言,更要培养良好的编程思想,面向过程和面向对象是两种重要的编程思想。数据结构与算法是编程能力,而不是编程思想。 优秀代码的原则:高复...

  • 面向对象的特点有哪些,面向对象的特点主要概括

    面向对象的特点有哪些,面向对象的特点主要概括

    面向对象的特点有哪些,面向对象的特点主要概括面向对象的特点封装:创建一个对象,集中保存一个事物的属性和功能继承:父对象中的成员,子对象无需重复创建,就可直接使用多态:同一个函数在不同情况下表现出不同的状态封装创建对象的方法:{}newObj...

  • 面向对象的特征有哪些,java的面向对象三大特征

    面向对象的特征有哪些,java的面向对象三大特征

    面向对象的特征有哪些,java的面向对象三大特征Java基础-面向对象三大特性封装继承多态类图泛化关系(Generalization)实现关系(Realization)聚合关系(Aggregation)组合关系(Composition)关联...

  • 周排行
  • 月排行
  • 年排行

精彩推荐