📜  面向对象的基本数据模型(1)

📅  最后修改于: 2023-12-03 15:42:26.664000             🧑  作者: Mango

面向对象的基本数据模型

什么是面向对象编程?

面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,通过对象的封装、继承、多态等特性,将程序的复杂性降低,提高代码的可复用性和可维护性。

面向对象的基本数据模型

面向对象的基本数据模型由类与对象两部分组成。类定义了对象的属性和方法,对象则是类的一个实例。以下是一个简单的类定义示例:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def say_hello(self):
        print("Hello, my name is", self.name, "and I'm", self.age, "years old.")

上述代码定义了一个名为Person的类,拥有两个属性:name和age,和一个方法:say_hello,该方法用于输出一句问候语。

通过创建对象,我们可以使用该类:

person = Person("Alice", 20)
person.say_hello() # 输出:Hello, my name is Alice and I'm 20 years old.

以上代码创建了一个名为person的Person对象,name属性为"Alice",age属性为20,调用say_hello方法输出问候语。

封装与信息隐藏

面向对象编程的一个核心思想是封装。封装指的是将数据与操作数据的方法包装在一起,避免外部直接访问和修改数据,以保护数据的完整性和安全性。

在上述Person类中,为了控制对属性的访问和修改,通常会将属性标记为私有(private),只允许通过内部方法访问和修改:

class Person:
    def __init__(self, name, age):
        self.__name = name
        self.__age = age
    
    def say_hello(self):
        print("Hello, my name is", self.__name, "and I'm", self.__age, "years old.")
    
    def get_name(self):
        return self.__name
    
    def set_name(self, name):
        self.__name = name
        
    def get_age(self):
        return self.__age
    
    def set_age(self, age):
        self.__age = age

在上述代码中,我们在属性名前加上了两个下划线,将属性标记为私有。除了定义访问和修改属性值的方法,外部无法直接访问和修改属性。

继承与多态

继承是面向对象编程的另一个核心思想。通过继承,子类可以继承父类的属性和方法,并可以根据需要重写和扩展父类的方法。

以下是一个简单的继承示例:

class Employee(Person):
    def __init__(self, name, age, salary):
        super().__init__(name, age)
        self.__salary = salary
        
    def get_salary(self):
        return self.__salary
    
    def set_salary(self, salary):
        self.__salary = salary
        
    def say_hello(self):
        super().say_hello()
        print("I'm an employee and my salary is", self.__salary)

在上述代码中,我们定义了一个Employee类,它继承了Person类。除了继承了Person类的属性和方法,Employee类还新增了一个salary属性和两个访问和修改salary的方法。

此外,Employee类还重写了Person类的say_hello方法。Employee类的say_hello方法首先调用Person类的say_hello方法输出问候语,然后输出自己的员工信息。

多态指的是同一个类的不同实例,可以有不同的行为。在上述示例中,Employee类重写了Person类的say_hello方法,Person类和Employee类的say_hello方法在输出问候语后,行为不同,体现了多态的特性。

总结

以上是面向对象的基本数据模型的介绍,其中包含了类、对象、封装、继承和多态等基本概念。面向对象编程的思想可以帮助我们更好地组织代码,提高代码的可复用性和可维护性。