【拓展】面向过程与面向对象的区别

原文链接:https://blog.csdn.net/qq_45096273/article/details/106455108

面向对象和面向过程的区别(个人总结)_GoGoGoHan!的博客-CSDN博客

一、面向对象OOP

面向对象编程(Object Oriented Programming,面向对象程序设计)的主要思想是把构成问题的各个事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙一个事物在整个解决问题的步骤中的行为。面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。通过这些概念面向对象的思想得到了具体的体现,面向对象是一种解决问题的思想,面向对象的计算机语言通过对目标对象的属性、行为封装最终拿到目标对象。

二、面向过程PO

面向过程编程:面向过程(Procedure Oriented)是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是封装、继承、类。面向过程是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为,注重的是过程,分析函数并一步步实现然后再调用。

三、面向对象的优缺点 

优点:

1.易维护;2.易复用;3.易扩展
4.由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
5.在复用时直接调用封装好的方法即可,而且安全性相对较高,可以避免不必要的更改引起的错误;
6.允许一个对象的多个实例同时存在,而且彼此之间不会相互干扰;
7.安全性较高

缺点: 其程序处理的效率比较低

四、面向过程的优缺点

优点:性能比面向对象高,因为类调用时需要实例化,比较消耗资源;比如Linux/Unix等一般采用面向过程开发,性能是最重要的因素;

缺点:

1.复用性较低,因为面向过程时逐步进行功能的实现;
2.代码维护更改性低,在面向过程编程中没有面向对象的封装方法,如果出问题得全局进行逐步代码分析;

五、举例 

在面向对象的编程中,只考虑:
1.双方的行为 2.游戏地图的绘制 3.游戏规则的制定,判断输赢;

在面向过程的编程中,需要考虑:
1.游戏开始 2.黑子先走 3.绘制画面 4.判断输赢 5.白子移动 6.绘制画面 7.判断输赢 8.重新返回步骤2继续依次执行 9.游戏结束 

 六、面向对象相比面向过程的好处

封装:我们可以根据不同功能和操作的数据来封装成不同对象,由对象实现具体的操作,我们只需要调用对象的方法即可,代码简洁、而且方便测试。

可能你会说面向过程也可以分离出一个一个的函数出来啊,也可以分成各个模块来调用啊,为什么要用面向对象?

接下来看下面的特性:

继承:假如有同一类操作,然后这些操作都有一部分共同的操作,通过面向对象,我们可以让子类对象继承父类对象,父类对象实现了这部分操作,所有子类对象都可以很容易复用这些代码,不用自己实现一遍。

那你可能有会说,面向过程也可以分离出公共的函数来调用吧,为什么要面向对象?

好,接下来看下面向对象的这个特性:

多态:其实前面的继承不单单是复用了父类的代码,还表示所有继承了父类的子类都是同一类对象。

假如我们有这么一个操作,要判断传进来的动物类型,然后执行这个动物的eat操作,面向过程是怎么做的呢?

class Animal {
    void eat(){
        
    }
}
class Dog extends Ainmal{ 
     void eat(){
        ...   
    }
}
​
class Cat extends Ainmal{ 
     void eat(){
        ...   
    }
}
​
class Human extends Ainmal{ 
     void eat(){
        ...   
    }
}
​
void eat(Animal a){
    a.eat();
}

面向过程是上面这么做的,也就是在编译期就一定会确定调用了哪个函数,而且要写一大堆判断代码,假如又加进来了几种动物,又得修改这份代码,耦合度很高。

而面向对象是这么做的: 

class Animal {
    void eat(){
        
    }
}
class Dog extends Ainmal{ 
     void eat(){
        ...   
    }
}
​
class Cat extends Ainmal{ 
     void eat(){
        ...   
    }
}
​
class Human extends Ainmal{ 
     void eat(){
        ...   
    }
}
​
void eat(Animal a){
    a.eat();
}

 通过多态,只要声明我需要某一类对象的父类,然后传进来一个具体子类,在运行的时候调用的是子类的方法。而且不管后面有加多了多少个子类,都不用改写好的代码,耦合度大大降低,而且代码易维护

总结 

面向过程:就是自顶向下的编程,注重的是过程的逐步实现,对函数进行一步一步的分析从而一步一步的解决问题;

没有面向对象的易复用、易测试、易扩展、耦合度低、易维护。但性能高。

面向对象:就是高度实物抽象化,注重的是各部分代码要实现的功能,而不是步骤。 

代码易复用、易测试、易扩展、耦合度低、易维护。但性能没面向过程高,因为有对象的实例化,开销较大。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: LabVIEW面向对象编程(Object-Oriented Programming, OOP)是一种编程方法,以对象作为程序的基本构建单元。在LabVIEW中,对象是一种重要的数据结构,它包含了数据以及对这些数据进行操作的方法。OOP的核心思想是将数据和方法封装在对象中,通过对象之间的交互来完成程序的设计和开发。 LabVIEW中的对象通常由类(Class)定义,并且包含属性和方法。属性是对象所拥有的状态信息,方法是对象能够执行的操作。通过将相关的属性和方法打包在一起,可以实现数据的封装和隐藏,提高程序的可维护性和可重用性。 面向对象编程的一个重要概念是继承(Inheritance),LabVIEW提供了继承的机制,允许通过继承一个类来创建更加具体的子类。子类可以继承父类的属性和方法,并且可以添加自己的特定功能。这种继承关系可以实现代码的复用和扩展,减少了重复的工作量。 通过面向对象编程,LabVIEW还可以实现多态(Polymorphism)。多态是指一个对象可以根据不同的环境和需求表现出不同的形态和行为。LabVIEW中,通过重载方法(Overloading)和实现虚拟方法(Virtual Method)的方式,可以实现多态的效果。多态的应用可以简化函数调用和代码的设计,提高程序的灵活性和扩展性。 总而言之,LabVIEW面向对象编程提供了一种更加结构化和模块化的编程方法,通过封装和继承,可以实现代码的复用和扩展,提高程序的可维护性和可重用性。它还可以通过多态的机制,实现更加灵活和可扩展的程序设计。 ### 回答2: LabVIEW是一种基于图形化编程的开发环境,它的面向对象编程(Object-Oriented Programming, OOP)带来了许多优势。面向对象编程是一种软件开发方法,它将数据和操作封装在对象中,通过定义对象之间的关系来实现代码的重用和模块化。 LabVIEW的面向对象编程使得开发人员可以通过创建类(Class)来定义自定义的数据类型,并在类中封装数据和相应的操作。通过类的实例化,可以创建对象(Object)来实现对这些类的使用。这种对象的编程方式使得代码能够更加清晰、可读性更高,并且能够实现代码的模块化。 LabVIEW的面向对象编程还引入了继承(Inheritance)的概念,使得开发人员可以定义基类(Base Class)并从基类中派生出子类(Derived Class),从而实现代码的重用。子类可以继承基类的属性和方法,并且可以根据需求进行修改或拓展。这种继承关系使得代码的重用更加简单,同时也能够提高代码的可维护性和可扩展性。 此外,LabVIEW的面向对象编程还提供了封装(Encapsulation)和多态(Polymorphism)的功能。封装使得对象的内部实现对外部是隐藏的,从而保证了代码的安全性。多态使得相同的操作可以适用于不同的对象,从而实现了代码的灵活性和通用性。 总而言之,LabVIEW面向对象编程的理解在于将数据和操作封装为对象,并通过对象之间的关系实现代码的重用和模块化。面向对象编程使得代码更加清晰、可读性更高,并且能够提高代码的可维护性、可扩展性和安全性。这种编程方式在LabVIEW中得到了很好的支持,并且极大地提升了软件开发的效率和质量。 ### 回答3: LabVIEW面向对象编程是一种编程范式,它将数据和方法捆绑在一起,以创建可重用和模块化的代码。在LabVIEW中,对象是指具有特定属性和行为的数据类型实例。 LabVIEW的面向对象编程有以下几个关键概念: 1. 类(Class):类是面向对象编程的基本构建块。它定义了对象的属性和方法,在LabVIEW中对应为一个图标。类在实例化时创建对象。 2. 对象(Object):对象是类的实例,它根据类的定义来创建。对象可以独立于其他对象存在,并具有自己的属性和行为。 3. 属性(Property):属性是对象的特征,用于描述对象的状态。属性可以是数字、字符串、数组等。在LabVIEW中,属性可以被读取和设置。 4. 方法(Method):方法是对象的行为,用于执行特定的操作或任务。方法可以是函数、过程或子VI(Virtual Instrument)。 通过面向对象编程,可以将相关的属性和方法封装到一个类中,实现代码的模块化和重用。它允许程序员以类的方式组织代码,更好地管理和维护大型项目。此外,面向对象编程还提供了一种简洁、直观的方式来表示复杂的系统和关系。 LabVIEW使用类继承和多态性来增强面向对象编程。继承允许子类从父类继承属性和方法,并可以在子类中进行扩展或修改。多态性允许同一个方法在不同的对象上具有不同的行为,提高代码的灵活性和可扩展性。 总而言之,LabVIEW面向对象编程是一种用于创建可重用和模块化代码的编程方法。它通过类、对象、属性和方法的概念,提供了一种直观和简洁的方式来组织和管理代码。面向对象编程在LabVIEW中广泛应用于各种应用程序和项目中,提高了开发效率和代码质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值