首页 > 其他分享 >面向对象和面向过程

面向对象和面向过程

时间:2023-11-04 22:55:42浏览次数:33  
标签:对象 car brand 面向对象 面向 过程 self color

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

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

 

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

 

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

 

在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),每个函数都执行一个特定的任务。我们调用这些函数来执行这些任务,而不需要创建对象或定义类。这种编程范式称为面向过程编程

 

标签:对象,car,brand,面向对象,面向,过程,self,color
From: https://www.cnblogs.com/chaojiyingxiong/p/17809977.html

相关文章

  • PKI双密钥证书的生成过程
    1、用户使用客户端产生签名密钥对;2、用户的签名私钥保存在客户端;3、用户将签名密钥对的公钥传送给CA中心;4、CA中心为用户的公钥签名产生签名证书;5、CA中心将签名证书传回客户端进行保存;6、KMC(密钥管理中心)为用户生成加密密钥对;7、在KMC中备份加密密钥以备以后进行密钥恢复;8......
  • 存储过程和存储函数
    这个作业属于哪个课程https://edu.cnblogs.com/campus/uzz/cs3这个作业要求在哪里https://edu.cnblogs.com/campus/uzz/cs3/homework/13061这个作业的目标<第7次作业-存储过程和存储函数>1.输入以下代码,创建存储过程stu_info,执行时通过输入姓名,可以查询该姓名的......
  • python面向对象-学习笔记(八、综合案例)
    计算器,实现一些基本的操作,加减乘除运算,以及打印结果操作点击查看代码importwin32com.clientclassCaculator:#装饰器私有def__check_num_zsq(func):definner(self,n):ifnotisinstance(n,int):raiseTypeError("......
  • JavaSE(09) - 面向对象进阶
    JavaSE(09)-面向对象进阶p121static关键字static表示静态,是java中的一个修饰符,可以修饰成员方法,成员变量.一,被static修饰的成员变量,叫做静态变量.特点:被改类所有对象共享不属于对象属于类随着类的加载而加载,优先于对象存在调用方式:类名调用(推荐)对......
  • JavaSE(10) - 面向对象进阶
    JavaSE(10)-面向对象进阶P129认识多态(polymorphism)多态就是对象的多种形态多态的前提是:1,有继承/实现关系2,有父类引用指向子类对象3,有方法重写多态的好处:使用父类型作为参数,可以接收所有子类对象,体现多态的扩展性与便利P130多态调用成员的特点调用......
  • 对象内存图的过程
     单一对象1.由于TestStudent中含有main方法,因此TestStudent类先以字节码形式进入方法区,里面包含main方法2.虚拟机调用该类中的main方法,main方法进入栈内存中3.main方法中先创建对象stu,调用了student类,Student类字节码文件进入方法区4.创建了对象stu,在堆内存中开辟对象stu......
  • python面向对象-学习笔记(七、对象的生命周期)
    概念生命周期一个对象,从诞生到消亡的过程一个对象被创建时,会在内存中分配相应的内存空间进行存储当对象不再使用,为了节约内存,就会把这个对象释放掉涉及问题如何监听一个对象的生命过程?python如何掌握一个对象的生命?监听对象的生命周期__new__方法当我们创建......
  • Java基础之面向对象
    面向对象什么是面向对象?面向对象与面向过程的区别是什么?什么是面向对象?面向对象,就是数据和数据的操作放到一个整体----对象,通过对象来实现某些操作面向对象与面向过程的区别是什么?面向过程是一步一步实现方法,从来实现某些操作。它们两者自己的区别可以用一个大象放冰箱的例......
  • MySQL使用函数、存储过程实现:向数据表快速插入大量测试数据
    实现过程创建表CREATETABLE`user`( `id`INT(11)NOTNULLAUTO_INCREMENT, `name`VARCHAR(20)DEFAULTNULL, `age`INT(3)DEFAULTNULL, `pwd`VARCHAR(20)DEFAULTNULL, `address`VARCHAR(30)DEFAULTNULL, PRIMARYKEY(`id`))ENGINE=INNODBAUTO_INCREMENT=......
  • 苏格拉底问答、实践过程截图、遇到问题解决问题截图,代码链接
    #include<signal.h>#include<stdio.h>#include<sys/time.h>intcount=0;structitimervalt;voidtimer_handler(intsig){printf("timer_handler:signal=%dcount=%d\n",sig,++count);if(count>=8){printf("cancel......