OOP (Object-Oriented Programming)** là mô hình lập trình dựa trên khái niệm "object" (đối tượng) – chứa dữ liệu (fields/attributes) và code (procedures/methods). Ví dụ: Person là object có thuộc tính height, gender, age và phương thức move, talk.
Khái niệm cốt lõi
Object (Đối tượng)
Đơn vị cơ bản của OOP. Gói gọn dữ liệu và hàm thao tác dữ liệu thành một đơn vị.
Class (Lớp)
Khi định nghĩa class, bạn định nghĩa blueprint (bản thiết kế) cho object. Class không định nghĩa dữ liệu cụ thể, mà định nghĩa: object của class sẽ gồm gì, có thể thực hiện phép toán gì.
4 trụ cột của OOP
| Khái niệm | Giải thích | Ví dụ |
|---|---|---|
| Abstraction (Trừu tượng) | Chỉ cung cấp thông tin thiết yếu, ẩn chi tiết triển khai. | Web server: user chỉ gọi API, không biết internal processing. |
| Encapsulation (Đóng gói) | Gom dữ liệu (variables) và phương thức (methods) thành đơn vị duy nhất. Hạn chế truy cập thành phần nội bộ. | Class với private data + public getter/setter. |
| Inheritance (Kế thừa) | Tạo class mới từ class có sẵn. Class con kế thừa thuộc tính/phương thức class cha, có thể mở rộng. | Class Vehicle (color, price) → Car (+numWindows), Bike (+hasBasket). |
| Polymorphism (Đa hình) | Nhiều hình thái. Gọi hàm member → thực thi hàm khác nhau tùy kiểu object thực tế (thường qua virtual function). | Animal* a = new Dog(); a->makeSound(); → "Woof". a = new Cat(); a->makeSound(); → "Meow". |
OOP trong C++
- Class/Struct định nghĩa type.
public/protected/privatekiểm soát truy cập (encapsulation).virtualfunction +override(C++11) cho polymorphism.abstract class(có pure virtual function) cho interface.- Multiple inheritance hỗ trợ (cẩn thận diamond problem → virtual inheritance).