[OOP] Giới thiệu lập trình hướng đối tượng

Các khái niệm cơ bản về OOP

Lập trình hướng đối tượng (Object-oriented programming – OOP) là 1 mẫu hình lập trình mà trong đó đối tượng chứa dữ liệu trên các trường thường được gọi là thuộc tính và mã nguồn được tổ chức thành các phương thức.

Lớp (class)

Là khuôn mẫu để tạo ra các đối tượng. Trong lớp thường dùng biến để mổ tả các thuộc tính và hàm để mô tả các phương thức.

Lớp trừu tượng (abstract class)

Là lớp mà nó không thể thực thể hóa thành 1 đối tượng thực dụng được (nghĩa là ta không thể tạo đối tượng của abstract class).
Lớp này được thiết kế nhằm tạo ra 1 lớp có các đặc tính tổng quát nhưng không tiến hành viết mã để hiện thực hóa.

Đối tượng (object)

Là 1 thực thể cụ thể của lớp mà trong đó đối tượng có thể là sự kết hợp của biến, hàm và cấu trúc dữ liệu.

Phương thức (method)

Thường được dùng để mô tả các hành vi của đối tượng.

Các phương thức đặc biệt

  • Hàm tạo (constructor) : Dùng để tạo đối tượng, khởi tạo các giá trị ban đầu cho các thuộc tính của đối tượng đó.
  • Hàm hủy (destructor) : dùng để làm sạch bộ nhớ đã dùng để lưu đối tượng và hủy bỏ tên của một đối tượng sau khi đã dùng xong, trong đó có thể bao gồm cả việc xóa các con trỏ nội tại và trả về các phần bộ nhớ mà đối tượng đã dùng

Thuộc tính (attribute)

Thuộc tính của một lớp bao gồm các biến, các hằng, hay tham số nội tại của lớp đó
Mỗi thuộc tính của một lớp còn được gọi là thành viên dữ liệu của lớp đó.

Các tính chất của OOP

Tính trừu tượng (abstraction) :

Thể hiện qua một đối tượng ban đầu có thể có 1 số đặc điểm chung cho nhiều đối tượng khác như là sự mở rộng của nó nhưng đối tượng ban đầu không có biện pháp thi hành.

Tính trừu tượng thường được xác định trong khái niệm gọi là  lớp trừu tượng hay lớp có sở trừu tượng.

Ví dụ:

//Lop truu tuong
class Shape
{

   //Hàm thuần ảo tính diện tích đặc điểm chung của các hình không có biện pháp thi hành
   virtual int GetArea() = 0;

};

//Lớp hình chữ nhật
class Rectangle : public Shape
{

private:

   int width;

   int height;

public:
 
   int GetArea()
   {
 
      return width * height;
 
   }

};

Tính đóng gói (encapsulation) và che giấu thông tin (information hiding):

Tính chất này không cho phép người sử dụng các đối tượng thay đổi trạng thái nội tại của một đối tượng. Chỉ có các phương thức nội tại của đối tượng cho phép thay đổi trạng thái của nó.

Tính chất này thường được thể hiện qua các phạm vi truy cập public, protected, private.

Tính đa hình (polymorphism)

Thể hiện thông qua việc gửi các thông điệp (message). Việc gửi các thông điệp này có thể so sánh như việc gọi các hàm bên trong của một đối tượng. Các phương thức dùng trả lời cho một thông điệp sẽ tùy theo đối tượng mà thông điệp đó được gửi tới sẽ có phản ứng khác nhau

Ví dụ:

Khi định nghĩa hai đối tượng "hinh_vuong" và "hinh_tron" thì có một phương thức chung là "chu_vi". Khi gọi phương thức này thì nếu đối tượng là "hinh_vuong" nó sẽ tính theo công thức khác với khi đối tượng là "hinh_tron".

Tính kế thừa (inheritance):

Đặc tính này cho phép một đối tượng có thể có sẵn các đặc tính mà đối tượng khác đã có thông qua kế thừa. Điều này cho phép các đối tượng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại.

Was this article helpful?

Leave A Comment?