Bài 5.1. Tổng quan về Python hướng đối tượng
Nội dung bài học
- Các khái niệm
- Cú pháp tạo lớp
- Ví dụ minh họa
Các khái niệm
- Class: lớp, là kiểu dữ liệu do người dùng tự định nghĩa ra. Đó là bản mẫu thiết kế, khuôn đúc để tạo ra sản phẩm là các đối tượng. Trong một lớp có thể chứa thành phần dữ liệu mô tả thông tin và phần phương thức thể hiện hành động của đối tượng.
- Class variable: biến dùng chung cho tất cả các đối tượng của lớp chứa nó. Nó được định nghĩa bên trong lớp và bên ngoài tất cả các phương thức của lớp.
- Instance variable: biến được định nghĩa bên trong 1 phương thức và chỉ thuộc về đối tượng duy nhất đang chứa nó.
- Method: hàm định nghĩa trong 1 lớp gọi là phương thức.
- Instance: một đối tượng riêng lẻ được sinh ra từ một lớp cụ thể. Ví dụ, đối tượng iPhone 15 Promax là một ví dụ cụ thể thuộc lớp iPhone.
- Object: là đối tượng, sản phẩm tạo ra từ một lớp. Mỗi đối tượng có các đặc điểm và hành vi được định nghĩa trong lớp sinh ra nó.
- OOP: object-oriented programming hay lập trình hướng đối tượng, là mô hình lập trình. Trong đó các thuộc tính và hành vi được đóng gói trong đối tượng riêng lẻ.
- Ví dụ đối tượng sinh viên có đặc điểm(thuộc tính): tên, tuổi, màu da, mái tóc, chiều cao cân nặng… và các hành vi: đi lại, nói chuyện, học bài, làm bài tập…
- Inheritance: sự kế thừa, nói đến việc thừa hưởng các đặc điểm và hành vi của các lớp đã có từ trước đó. Khi thực hiện kế thừa, ta chỉ việc bổ sung thêm các thành phần riêng để tạo ra một lớp mới mà không phải code lại từ đầu.
- Function/method overloading: ghi đè hàm/phương thức của lớp cha. Tức là lớp con định nghĩa lại hành động đã có từ trước của lớp cha trong bản thân nó để phù hợp với ngữ cảnh sử dụng. Việc ghi đè này tạo ra tính đa hình, một tính chất của hướng đối tượng.
- Operator overloading: nạp chồng toán tử. Gán nhiều hơn 1 chức năng cho một toán tử cụ thể nào đó.
Cú pháp tạo lớp
- Cú pháp tạo lớp:
class ClassName:
[docstring]
methods
variables
- Trong đó:
- ClassName: tên của lớp, quy ước tên của lớp là danh từ, cụm danh từ thể hiện mục đích sử dụng của lớp. Tên lớp viết liền, viết hoa chữ cái đầu từ.
- Phần [docstring] để mô tả thông tin mục đích sử dụng của lớp.
- Phần methods là các phương thức thể hiện các hành động của lớp. Bên trong các phương thức này thường chứa thao tác liên quan các thuộc tính của lớp. Phương thức có thể là phương thức khởi tạo, phương thức trừu tượng, hoặc các phương thức thông thường khác.
- Phần variables là các biến dùng chung cho mọi đối tượng của lớp.
Cú pháp tạo đối tượng
- Cú pháp: object_name = ClassName(Params):
- Object_name: tên của đối tượng.
- ClassName: tên của lớp muốn tạo đối tượng.
- Params: danh sách đối số cần truyền vào để tạo đối tượng của lớp.
- Sau đó ta sử dụng cú pháp object_name.attribute để truy cập đến thuộc tính, phương thức của nó.
- Phần attribute là tên chung nói về các thành phần dữ liệu và phương thức của lớp.
Ví dụ minh họa
class Student:
"""Lớp mô tả thông tin và hành động của sinh viên"""
def __init__(self, student_id, name, major):
self.student_id = student_id
self.name = name
self.major = major
def do_exam(self, subject):
print(f'Student {self.name} is doing {subject} exam.')
def work(self):
print(f'Student {self.name} is working.')
def do_homework(self, subject):
print(f'Student {self.name} is doing {subject} homework.')
huong = Student("SV001", "Huong", "CNTT")
lan = Student("SV005", "Lan", "QTKD")
huong.do_exam('Python')
lan.do_homework('Math')
huong.work()
print(f'{huong.name}\'s student id: {huong.student_id}')
print(f'{huong.name}\'s student major: {huong.major}')
Student Huong is doing Python exam.
Student Lan is doing Math homework.
Student Huong is working.
Huong's student id: SV001
Huong's student major: CNTT