Table of contents
Open Table of contents
1. OOP là gì?
Lập trình hướng đối tượng giúp chúng ta mô phỏng các thực thể trong thế giới thực vào trong code.
- Lập trình thủ tục (Procedural): Tập trung vào các hàm xử lý dữ liệu.
- OOP: Tập trung vào các đối tượng chứa cả dữ liệu (thuộc tính) và các hàm xử lý dữ liệu đó (phương thức).
Ưu điểm của OOP:
- Cấu trúc chương trình rõ ràng.
- Tuân thủ nguyên tắc DRY (Don’t Repeat Yourself) - Đừng lặp lại chính mình.
- Dễ dàng gỡ lỗi và mở rộng.
2. Lớp (Classes) và Đối tượng (Objects)
Hãy tưởng tượng:
- Lớp (Class): Là bản thiết kế (blueprint) của một chiếc xe hơi.
- Đối tượng (Object): Là những chiếc xe cụ thể được tạo ra từ bản thiết kế đó (như xe BMW, xe Ford).
Tạo một Lớp (Class):
Sử dụng từ khóa class. Các biến bên trong lớp gọi là Attributes (Thuộc tính), còn các hàm gọi là Methods (Phương thức).
class MyClass { // Lớp
public: // Đặc quyền truy cập
int myNum; // Thuộc tính
string myString; // Thuộc tính
};
Tạo Đối tượng (Object):
int main() {
MyClass myObj; // Tạo đối tượng từ class
myObj.myNum = 15; // Truy cập thuộc tính bằng dấu chấm
myObj.myString = "Hello OOP";
cout << myObj.myString;
return 0;
}
3. Phương thức của Lớp (Class Methods)
Phương thức là các hàm thuộc về một lớp. Có hai cách để định nghĩa phương thức:
Định nghĩa bên trong lớp:
class MyClass {
public:
void myMethod() {
cout << "Chào mừng bạn đến với OOP!";
}
};
Định nghĩa bên ngoài lớp:
Sử dụng toán tử phạm vi ::. Cách này giúp mã nguồn gọn gàng hơn khi lớp có quá nhiều phương thức.
class MyClass {
public:
void myMethod(); // Chỉ khai báo
};
void MyClass::myMethod() { // Định nghĩa bên ngoài
cout << "Mã nguồn trông chuyên nghiệp hơn!";
}
4. Hàm khởi tạo (Constructors)
Constructor là một phương thức đặc biệt được tự động gọi khi một đối tượng được tạo ra. Nó có cùng tên với tên lớp và không có kiểu trả về.
class Car {
public:
string brand;
int year;
// Constructor có tham số
Car(string x, int y) {
brand = x;
year = y;
}
};
int main() {
// Đối tượng được tạo và gán giá trị ngay lập tức qua constructor
Car carObj1("BMW", 1999);
Car carObj2("Ford", 1969);
}
5. Đặc quyền truy cập (Access Specifiers)
C++ cung cấp 3 loại specifiers để kiểm soát việc truy cập vào các thành viên của lớp:
public: Có thể truy cập từ bất cứ đâu.private: Chỉ có thể truy cập từ bên trong lớp đó (đây là mặc định).protected: Chỉ truy cập được trong lớp đó và các lớp con (kế thừa).
Lời kết Module 7
Bạn đã nắm được những viên gạch đầu tiên của OOP. Việc hiểu về Class, Object và Constructor là nền tảng để bạn tiếp cận các khái niệm nâng cao hơn.
Trong Module 8, chúng ta sẽ khám phá nốt các trụ cột còn lại của OOP: Encapsulation (Đóng gói), Inheritance (Kế thừa) và Polymorphism (Đa hình).
Hẹn gặp lại các bạn!