OOP和POP之间的区别

作者: Laura McKinney
创建日期: 2 四月 2021
更新日期: 17 可能 2024
Anonim
python基础086 面向对象和面向过程的区别 执行者思维 设计者思维
视频: python基础086 面向对象和面向过程的区别 执行者思维 设计者思维

内容


面向过程的编程(POP)面向对象编程(OOP) 两者都是编程方法,它们使用高级语言进行编程。程序可以用两种语言编写,但是如果任务非常复杂,则与POP相比,OOP的运行效果很好。在POP中,由于数据在程序中自由移动,因此“数据安全性”正处于危险之中;此外,由于无法实现“代码可重用性”,因此程序冗长且难以理解。

大型程序会导致更多的错误,并且会增加调试时间。所有这些缺陷导致了一种新方法,即“面向对象编程”。在面向对象程序设计中,主要关注点是“数据安全’;它将数据紧密绑定到对其进行操作的功能。它还解决了“代码可重用性”,就好像创建一个类一样,可以创建其多个实例(对象),这些实例可以重用该类定义的成员和成员函数。

还有一些其他差异可以通过比较表来解释。

    1. 比较表
    2. 定义
    3. 关键差异
    4. 好处
    5. 缺点
    6. 结论


比较表

比较依据流行音乐面向对象
基本的
面向程序/结构。
面向对象。
方法 自顶向下。自下而上。
基础主要重点是“如何完成任务”,即程序的过程或结构。主要重点是数据安全性。因此,仅允许对象访问类的实体。
大型程序分为称为功能的单元。整个程序分为多个对象。
实体访问方式没有观察到访问说明符。
访问说明符是“公共”,“私有”,“受保护”。
重载/多态它既不重载函数,也不重载运算符。它使函数,构造函数和运算符重载。
遗产他们没有提供继承权。继承是通过三种方式实现的:公有私有和受保护。
数据隐藏与安全没有适当的隐藏数据的方法,因此数据不安全 数据以公共,私有和保护三种模式隐藏。因此,数据安全性得到了提高。
资料共享全局数据在程序的功能之间共享。通过成员函数在对象之间共享数据。
好友功能/类没有概念的朋友功能。使用关键字“ friend”,类或函数可以成为另一个类的朋友。
注意:“ friend”关键字仅在c ++中使用
虚拟类/功能没有虚拟类的概念。虚拟函数的概念在继承期间出现。
C,VB,FORTRAN,PascalC ++,JAVA,VB.NET,C#.NET。


面向对象编程(OOP)的定义

OOP的主要担心是将数据隐藏在类的非成员函数中,该类将其视为“关键信息”。数据与对其进行操作的类的成员函数紧密相关。它不允许任何非成员函数修改其中的数据。对象通过成员函数相互交互以访问其数据。

OOP是基于“对象”,“类”,“数据封装或抽象”,“继承”和“多态/重载”的基本概念开发的。在OOP中,可以通过对数据和功能进行分区将程序划分为模块,如果需要,还可以将其用作创建模块新副本的模板。因此,这是一种通过构造用于数据和功能的分区存储区域来促进程序模块化的方法。

面向对象的概念

  • 对象:被视为类型类的变量和类的实例。
  • :这是一组类似类型的对象。对象的完整数据和代码集通过使用类来创建用户定义的数据类型。
  • 数据抽象和封装:抽象不过是隐藏背景细节并表示基本特征的方法。封装是一种将数据和功能打包到单个单元中的方法。
  • 遗产:继承是一种从一类到另一类对象获取对象特征的技术。换句话说,它有助于从现有的类别中派生新类别。
  • 多态性:多态性提供了一种使用单个函数名称创建函数多种形式的方法。
  • 动态绑定:它指定与特定过程关联的代码直到运行时调用时刻才知道。
  • 通过:此OOP概念通过发送和接收信息来实现不同类之间的交互。

面向过程的程序设计(POP)的定义

POP是一种常规的编程方式。过程程序设计的主要重点是按顺序完成任务。流程图组织程序的控制流。如果程序是扩展程序,则它以称为功能的一些小单元进行结构化,它们共享全局数据。在这里,由于程序中的功能意外更改,引起了对数据安全性的担忧。


POP特征

  • 在设计程序时,POP遵循自上而下的编程方法。
  • 大多数功能允许共享全局数据。
  • 它还将较大的程序分为称为功能的较小部分。
  • 它允许从一个功能到另一个功能在系统中自由移动数据。
  • 数据通过功能从一种形式转换为另一种形式。
  • 它重视功能的概念。
  1. POP是面向过程的编程,而OOP是面向对象的编程。
  2. POP的主要重点是“如何完成任务”它按照流程图完成任务。 OOP的主要重点是 数据安全 因为仅允许类的对象访问类的属性或功能。
  3. 职能 是大型程序或子程序中的小单元,它们执行以完成主要任务。相反,该类的OOP属性和功能在 对象.
  4. 在POP中,没有特定的访问模式可以访问程序中的属性或功能。相反,在OOP中,有三种访问模式“公共”,“私有”,“受保护”,用作访问属性或功能的访问方法。
  5. POP不支持“重载/多态”的概念。相反,OOP支持重载/多态,这意味着使用相同的功能名称来执行不同的功能。我们可以在OOP中重载函数,构造函数和运算符。
  6. POP中没有继承的概念,而OOP支持继承,该继承允许通过继承使用其他类的属性和功能。
  7. 与OOP相比,POP不那么安全,因为在OOP中,访问说明符限制对属性或函数的访问,从而增加了安全性。
  8. 在POP中,如果要在程序的所有功能之间共享某些数据,则会在所有功能之外全局声明该数据。在OOP中,可以通过类的成员函数访问类的数据成员。
  9. 在POP中,没有好友功能的概念。与之相反,在OOP中,有一个不属于类成员的Friendly Function概念,但是由于它是Friends成员,因此可以访问该类的数据成员和成员函数。
  10. POP中没有虚拟类的概念,而在OOP中,虚拟函数支持多态。

好处

POP(面向过程的编程)

  • 提供在不同地方重用相同代码的能力。
  • 有助于跟踪程序流程。
  • 能够构建模块。

OOP(面向对象编程)

  • 对象有助于项目中的任务分区。
  • 可以使用数据隐藏来构建安全程序。
  • 它可以潜在地映射对象。
  • 允许将对象分类为各种类。
  • 面向对象的系统可以轻松升级。
  • 使用继承可以消除冗余代码。
  • 可以使用可重用性扩展代码。
  • 可以实现更大的模块化。
  • 数据抽象提高了可靠性。
  • 由于具有动态绑定概念,因此非常灵活。
  • 通过使用信息隐藏将基本规范与其实现脱钩。

缺点

POP(面向过程的编程

  • 全球数据容易受到攻击。
  • 数据可以在程序中自由移动
  • 很难验证数据位置。
  • 功能是面向行动的。
  • 功能不能与问题的要素相关。
  • 现实问题无法建模。
  • 部分代码是相互依赖的。
  • 一个应用程序代码不能在其他应用程序中使用。
  • 使用功能传输数据。

OOP(面向对象编程)

  • 它需要更多资源。
  • 对象的动态行为需要RAM存储。
  • 执行传递时,在复杂的应用程序中很难进行检测和调试。
  • 继承使它们的类紧密耦合,从而影响对象的可重用性。

结论

POP的缺陷引起了对OOP的需求。 OOP通过引入“对象”和“类”的概念来纠正POP的缺陷。它增强了数据安全性以及对象的自动初始化和清除。 OOP使得创建对象的多个实例成为可能,而不会产生任何干扰。