面向对象和面向过程

面向对象,里面的“面向”是什么意思呢,“面向”的意思就是面对着,面向对象,就是你看到的都是对象,比如你做一顿午饭,面向对象的就是:盖浇饭,茶水

面向过程的话就是:炒饭+米饭+炒菜

 

所以这里的面向,是程序员面向,从程序员视角看到的世界,如果看到的是一个个对象,那就是面向对象,如果看到的是一个个过程,就是面向过程.。

 

一,什么是对象,对象的本质是什么

 

在Python中,对象的本质是引用。对象是一种封装数据和操作数据的方法的方式。它们是通过创建类实例来创建的,这些实例具有相同的属性和方法。

Python中的对象是基于引用语义的,即对象的本质是引用。这意味着当我们在程序中创建一个对象时,Python会为该对象分配内存空间,并返回一个指向该对象的引用。这个引用可以被视为指向对象的指针。

通过对象引用的方式,我们可以调用对象的方法来执行特定的操作,并且可以访问和修改对象的属性。这种封装和抽象的方式使得代码更加模块化和可重用。

此外,Python中的对象还支持动态类型和多态性,这意味着我们可以在运行时动态地创建和操作对象,并且可以使用不同的类型来实例化同一个类。这种灵活性使得Python成为一种非常强大的编程语言,可以轻松地处理复杂的问题。

 

二,什么是面向对象

 

面向对象(Object Oriented, OO)是一种软件开发方法,它以“对象”为中心,把数据和对数据的操作封装在一起,作为一个独立的实体(即对象),通过类来创建对象,通过对象之间的交互来实现程序的功能。

这种编程思想借鉴了现实世界中的人与客观世界的交互方式,将客观世界中的事物抽象为“对象”,并将它们封装起来以实现代码的重用和模块化。

在面向对象的程序设计中,对象是程序的基本构成单元,它们具有独立的属性(数据)和行为(方法)。对象之间通过消息传递(发送和接收)来交互,以实现程序的功能。

面向对象编程具有以下特点:

  1. 封装性:对象将数据和操作封装在一起,隐藏内部实现细节,只通过对象接口与外部交互。
  2. 继承性:通过继承实现代码重用,子类可以继承父类的属性和方法,并可以添加自己的特性。
  3. 多态性:同一消息可以发送给不同对象,产生不同的结果,实现一种形式上的“一个接口多种方法”的机制。
  4. 抽象性:通过抽象类和接口定义通用行为和接口,具体的实现细节由子类来实现。
  5. 代码的可重用性和模块化:通过继承和多态实现代码重用,通过模块化实现代码的模块化。

总之,面向对象是一种以对象为基础的编程思想,它借鉴了现实世界中人与客观世界的交互方式,将客观世界中的事物抽象为“对象”,并通过对象之间的交互来实现程序的功能。这种编程思想具有封装性、继承性、多态性、抽象性和模块化等特点,是当前软件开发领域的主流技术之一。

 

举例:

 

面向对象编程:

 

class Car:  
    def __init__(self, brand, color):  
        self.brand = brand  
        self.color = color  
      
    def start(self):  
        print(f"{self.color} {self.brand} car is starting.")  
      
    def drive(self, distance):  
        print(f"{self.color} {self.brand} car has driven {distance} miles.")  
  
# 创建一个Car对象并启动车辆  
my_car = Car("Toyota", "red")  
my_car.start()  
  
# 驾驶车辆一段距离  
my_car.drive(100)

 

在这个示例中,我们定义了一个名为Car的类,它具有两个属性(brandcolor)和两个方法(startdrive)。通过使用类,我们可以创建多个具有相同属性和方法的车辆对象。每个对象都是一个独立的实体,具有自己的属性和方法,可以与其他对象进行交互和通信。这种编程范式称为面向对象编程

 

面向过程编程:

 

def start_car(brand, color):  
    print(f"{color} {brand} car is starting.")  
  
def drive_car(distance, brand, color):  
    print(f"{color} {brand} car has driven {distance} miles.")  
  
# 启动车辆并驾驶一段距离  
start_car("Toyota", "red")  
drive_car(100, "Toyota", "red")

在这个示例中,我们定义了两个独立的函数(start_cardrive_car),每个函数都执行一个特定的任务。我们调用这些函数来执行这些任务,而不需要创建对象或定义类。这种编程范式称为面向过程编程

 

posted @ 2023-11-04 22:45  年轻人——001  阅读(36)  评论(0编辑  收藏  举报