面向过程编程和面向对象编程

编程的俩个大思想:

  • 面向过程编程

  • 面向对象编程

面向过程编程(Procedural Programming)

一种编程范式,它的主要思想是将程序分解为一个个独立的过程(或函数),这些过程按照一定的顺序执行,以完成特定的任务。面向过程编程强调的是算法和过程的线性流程,程序的控制逻辑通过一系列的函数调用来实现。

以下是面向过程编程的关键特点:
  1. 基于过程:程序的主要构建单元是过程(或函数)。这些过程是顺序执行的,每个过程负责执行特定的任务。程序的控制流按照过程的调用顺序执行。

  2. 数据和函数分离:在面向过程编程中,数据和函数通常是分离的。数据通常存储在全局变量中,而函数用于对数据执行操作。

  3. 可重用性:通过将一组操作封装到函数中,可以实现代码的重用。这使得开发者能够多次使用相同的函数,以执行相似的任务。

  4. 适用于简单任务:面向过程编程通常适用于较为简单的任务或脚本,其中不需要复杂的数据结构和抽象概念。

  5. 可读性和可维护性:随着程序的增长,面向过程编程可能导致代码变得难以理解和维护,因为程序控制逻辑分散在多个函数之间。

  6. 示例:以下是一个面向过程编程的示例,计算并打印学生的平均分数:

    class Dog:
        def __init__(self, name, breed):
            self.name = name
            self.breed = breed
    
        def bark(self):
            return "Woof!"
    
    my_dog = Dog("Buddy", "Golden Retriever")
    

在面向过程编程中,数据和函数之间的关系比较直接,程序较为简单,适用于一些小型项目或需要执行特定操作的情况。然而,随着项目的复杂度增加,面向过程编程的局限性可能会变得更加明显。这时,面向对象编程等其他范式可能更适合用于组织和管理代码。

面向对象编程(Object-Oriented Programming,OOP)

他将数据(对象)和操作数据的方法(函数)组织在一起。以模拟现实世界中的实体和其交互。在 Python 中,一切都是对象,包括基本数据类型和函数。OOP是一种以对象为中心的编程方法,具有以下的核心概念:

1. 对象(object)

对象是程序中的基本单元,代表了某个实体或概念,具有属性和方法。例如,一辆汽车可以表示为一个对象,具有属性(颜色,型号)和方法(启动,停止)。

2. 类(class)

 类是一种用于创建对象的模板或蓝图。它定义了对象的属性和方法。JVM类似于工厂,通过类(模板)创建对象(类的实例)。 类是从多个相同类型的对象中抽取出来的共性,只保留程序所关注的部分。对象是类的实例。例如,汽车类可以定义为汽车对象的通用属性和方法。

        2.2 类的组成部分

                1. 属性/成员变量/全局变量/实例变量。
                    定义位置:类以内,方法以外。
                    演示的代码如下:

// 类:对象的模板(设计图),JVM需要通过类创建相同的对象
// 在类中定义对象所具备的属性(特征),方法(行为)
// Student类的模板
class Student{//学生类
	//属性
	String stuId;//学生的学号
	String name;//学生的姓名
	int age;  	//学生的年龄
	boolean sex;//学生的性别
	double score;//学生的成绩
}

在 Python 中,类是定义对象的模板,而对象是类的实例。你可以创建一个类,定义属性(变量)和方法(函数),然后使用该类创建对象。例如:

class Dog:
    def __init__(self, name, breed):
        self.name = name
        self.breed = breed

    def bark(self):
        return "Woof!"

my_dog = Dog("Buddy", "Golden Retriever")
3. 属性

类中的属性是对象的数据成员,它们代表对象的状态。属性在类中使用 self 关键字来定义。你可以访问属性以读取或修改对象的状态。

4. 方法

方法是类中的函数,用于定义对象的行为。方法在类中定义,可以使用 self 关键字来访问对象的属性和其他方法。方法允许对象执行操作,例如修改属性或执行特定的计算。

5. 封装(encapsulation)

封装是一种讲数据(属性)和操作数据的方法(方法)封装在类中的机制。它通过将数据私有化,只允许通过公共的方法来访问和修改数据,从而保存数据的完整性和安全性。

6. 继承(inheritace)

继承是一种机制,允许一个类继承另一个类的属性和方法。子类可以继承父类的特性,同时可以根据需要添加或修改属性和方法。这提高了代码的重用性。

7. 多态(polymorphism)

多态是一种概念,允许不同类的对象对相同的方法做出不同的响应,这意味着一个方法可以以多种方式呈现,具体取决于对象的类型。多态通过接口和抽象类实现。

8. 类和对象之间的关系

类是对象的模板,而对象是类的实例。一个类可以创建多个对象,每个对象都具有相同的属性和方法,但它们的属性值可能不同。

9. 构造函数

构造函数是类中的一个特殊方法,用于初始化对象的属性。在 Python 中,构造函数的名称是 __init__,它会在创建对象时自动调用。构造函数通常接受参数,用于初始化对象的属性。

10. 类成员

除了实例成员(对象的属性和方法),Python 还支持类成员。类成员属于类本身,而不是对象。你可以使用 @classmethod 装饰器定义类方法,或者使用 @staticmethod 装饰器定义静态方法。

OOP 的主要优点包括:

  • 模块化:OOP 可以将代码分成小的模块,每个模块对应一个类。这提高了代码的可维护性和重用性。

  • 抽象性:OOP 允许开发人员从实际问题中抽象出类和对象,以更好地理解和解决问题。

  • 拓展性:通过继承和多态,可以轻松添加新功能或扩展现有功能。

  • 数据封装:OOP 可以隐藏数据的具体实现细节,只提供公共接口,从而提高了安全性。

  • 更易于理解:OOP 模型通常与现实世界中的对象和概念相对应,使代码更容易理解。

OOP在许多编程语言中得到广泛应用,包括Python、Java、C++、C#等。开发者可以使用OOP来构建各种应用程序,包括桌面应用、Web应用、移动应用以及游戏等。这种编程范式的目标是提供更清晰、可维护和可扩展的代码结构,以应对现实世界中复杂的问题。

需要注意,面向对象编程并不是万能的,他有自己的局限性。例如,在处理大规模数据时候,面向对象的开销可能比较大,需要考虑其他的编程规范,如函数式编程。此外,使用面向对象编程需要遵循一些设计原则,如单一职责原则,开闭原则,里氏替换原则,才能写出高质量代码。

面向对象编程是一种非常有价值的编程思想和范式。他将真实世界中的事物抽象成对象,并通过对象之间的交互来完成软件系统的功能。面向对象编程可以提高程序的可维护性,可扩展性和可读性。

你可能感兴趣的:(1024程序员节,python)