Ví dụ về lập trình hướng đối tượng (OOP) trong C++
Bài viết này cung cấp ví dụ minh họa về lập trình hướng đối tượng (OOP) trong C++, bao gồm các khái niệm như lớp, đối tượng, kế thừa và đa hình.
Trong C++, lập trình hướng đối tượng là một phương pháp lập trình cho phép bạn tổ chức mã theo cách giúp dễ dàng quản lý và mở rộng. Bài viết này sẽ trình bày các khái niệm cơ bản của OOP thông qua các ví dụ thực tiễn.
Mã C++
#include <iostream>
#include <string>
// Lớp cơ sở (Base Class)
class Animal {
public:
// Phương thức hiển thị thông tin động vật
virtual void speak() {
std::cout << "Animal speaks" << std::endl;
}
};
// Lớp kế thừa (Derived Class) từ Animal
class Dog : public Animal {
public:
// Ghi đè phương thức speak
void speak() override {
std::cout << "Dog barks" << std::endl;
}
};
// Lớp kế thừa (Derived Class) từ Animal
class Cat : public Animal {
public:
// Ghi đè phương thức speak
void speak() override {
std::cout << "Cat meows" << std::endl;
}
};
int main() {
Animal* animal1 = new Dog(); // Tạo đối tượng Dog
Animal* animal2 = new Cat(); // Tạo đối tượng Cat
animal1->speak(); // Gọi phương thức speak của Dog
animal2->speak(); // Gọi phương thức speak của Cat
delete animal1; // Giải phóng bộ nhớ
delete animal2; // Giải phóng bộ nhớ
return 0;
}
Giải thích chi tiết từng dòng code
#include <iostream>
: Thư viện cho phép sử dụng các chức năng nhập/xuất.#include <string>
: Thư viện cho phép sử dụng kiểu dữ liệu chuỗi.class Animal
: Khai báo lớp cơ sởAnimal
.virtual void speak()
: Phương thức ảo có thể được ghi đè trong lớp kế thừa.class Dog : public Animal
: Khai báo lớpDog
kế thừa từ lớpAnimal
.void speak() override
: Ghi đè phương thứcspeak
từ lớp cơ sở.Animal* animal1 = new Dog()
: Tạo đối tượngDog
và gán cho con trỏ kiểuAnimal
.animal1->speak()
: Gọi phương thứcspeak
cho đối tượngDog
.delete animal1;
: Giải phóng bộ nhớ cho đối tượngDog
.
Yêu cầu hệ thống:
- Trình biên dịch C++ (như g++ hoặc MSVC)
Cách cài đặt các thư viện để chạy được đoạn mã C++ trên:
Chỉ cần cài đặt trình biên dịch C++.
Lời khuyên:
- Nên sử dụng các phương thức ảo để đạt được tính đa hình trong OOP.
- Hãy chú ý đến việc giải phóng bộ nhớ để tránh rò rỉ bộ nhớ.