Object Oriented Programming (OOP) là một phương pháp lập trình trong đó chương trình được tổ chức dưới dạng các đối tượng, mỗi đối tượng có thuộc tính và phương thức riêng. OOP giúp cho việc lập trình trở nên dễ hiểu, dễ bảo trì và có tính tái sử dụng cao.
1. Class đơn.
Một ví dụ chi tiết về OOP trong Python có thể là việc tạo ra một lớp Employee
để quản lý thông tin nhân viên trong một công ty. Lớp Employee
sẽ có các thuộc tính như name
, age
, position
, salary
và các phương thức để cập nhật thông tin nhân viên như change_position()
hay raise_salary()
.
Dưới đây là ví dụ code mẫu để tạo lớp Employee
:
class Employee:
def __init__(self, name, age, position, salary):
self.name = name
self.age = age
self.position = position
self.salary = salary
def change_position(self, new_position):
self.position = new_position
def raise_salary(self, amount):
self.salary += amount
Sau khi tạo lớp Employee
, ta có thể tạo các đối tượng Employee
mới với các thuộc tính tương ứng:
employee1 = Employee("John Doe", 30, "Developer", 50000)
employee2 = Employee("Jane Smith", 25, "Designer", 45000)
Sau đó, ta có thể sử dụng các phương thức của lớp Employee
để thao tác với các đối tượng này, ví dụ như:
employee1.change_position("Senior Developer")
employee2.raise_salary(5000)
2. Class lồng nhau.
Trong OOP, các class có thể được lồng vào nhau (nested class). Khi đó, class bên ngoài gọi là lớp cha (outer class), và class bên trong gọi là lớp con (inner class). Lớp con được định nghĩa và sử dụng bên trong lớp cha và không thể truy cập từ bên ngoài lớp cha.
class Employee:
def __init__(self, name, age):
self.name = name
self.age = age
self.job = self.Job()
class Job:
def __init__(self):
self.title = 'Software Developer'
self.salary = 50000
def display_info(self):
print('Name:', self.name)
print('Age:', self.age)
print('Job title:', self.job.title)
print('Salary:', self.job.salary)
emp = Employee('John', 30)
emp.display_info()
Trong ví dụ này, Job
là một lớp con được định nghĩa bên trong lớp cha Employee
. Lớp con này được sử dụng để lưu trữ thông tin về công việc của nhân viên, bao gồm chức danh và mức lương. Lớp cha Employee
sử dụng lớp con này để hiển thị thông tin đầy đủ về nhân viên, bao gồm cả thông tin về công việc.
3. __init__()
là gì?
__init__()
là một method đặc biệt trong Python, được gọi là constructor. Nó được gọi mỗi khi một đối tượng mới được tạo ra từ một class. Method __init__()
này được sử dụng để khởi tạo giá trị cho các thuộc tính của một đối tượng.
Sau khi đối tượng được khởi tạo, các thuộc tính này có thể được truy cập bằng cách sử dụng biến đối tượng và tên thuộc tính, giống như các thuộc tính bình thường.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
print(f"Hello, my name is {self.name} and I am {self.age} years old.")
person1 = Person("Alice", 25)
person1.introduce() # output: "Hello, my name is Alice and I am 25 years old."
Trong ví dụ này, khi một đối tượng person1
được tạo ra từ class Person
, method __init__()
được gọi và thiết lập giá trị cho thuộc tính name
và age
của đối tượng. Sau đó, method introduce()
được gọi để giới thiệu đối tượng person1
với tên và tuổi đã thiết lập.