Tổng quan về lập tình hướng đối tượng trong C++

Các bạn thân mến! Bài học hôm nay là bài học đầu tiên chúng ta sẽ cùng tim hiểu về lập trình hướng đối tượng trong C++. Các bạn nào mới bắt đầu lập trình hoặc đã tiếp cận đến ngôn ngữ lập trình như Pascal, C thì đã quen với cách lập trình thủ tục.

Lập trình hướng đối tượng là một khái niệm hoàn toàn mới với các bạn mới bắt đầu học lập trình. Tuy nhiên nó không quá khó so với lập trình thủ tục, nó chỉ là một hướng tiếp cận khác trong lập trình mà thôi.

Hôm nay chúng ta sẽ tìm hiểu tổng quan về lập trình hướng đối tượng trong C++ là gì nhé.

1. Lập trình hướng đối tượng trong C++

Lập trình hướng đối tượng (hay nói trong tiếng anh là Object Oriented Programming - OOP) là một mô hình sử dụng lớp (class) và đối tượng (object) trong chương trình hay nói cách khác là mô hình hóa chương trình chúng ta bằng những lớp, đối tượng.

Những khái niệm là chúng ta cần phải biết trong lập trình hướng đối tượng đó là:

  • Lớp (Class)
  • Đối tượng (Object)
  • Thừa kế (Inheritance)
  • Đa hình (Polymorphism)
  • Trừu tượng (Abstraction)
  • Đóng gói (Encapsulation)

Trước tiên chúng ta sẽ cùng tìm hiểu tổng quan về từng khái niệm một liên quan đến lập trình hướng đối tượng trong C++.

Object

Một thực thể có trạng thái và hành vi thì được gọi như là một đối tượng. Ví dụ đối tượng là những gì chúng ta có thể nhìn thấy và sờ được trong thực tế như cái bàn, cây viết, chiếc xe, con mèo, ...

Cụ thể là đối tượng chiếc xe sẽ có các trạng thái có thể như sau:

  • Màu
  • Chiều dài
  • Chiều rộng
  • Chiều cao
  • Trọng lượng
  • Nhà sản xuất

Và có các hành vi có thể như sau:

  •  Chạy
  • Nạp xăng
  • Thắn

Tùy vào ngữ cảnh của chương trình mà chúng ta phân tích trạng thái và hành vi cho phù hợp, chúng ta chỉ lấy những trạng thái và hành vi mà chúng ta cần quan tâm tới trong chương trình của chúng ta, không cần phải lấy hết tất cả trạng thái và hành vi của đối tượng có thể có.

Ví dụ cùng là đối tượng con người trong môi trường trường học sẽ có trạng thái cần quan tâm như là MSSV, tên, lớp, điểm rèn luyện, điểm học tập, ... và có hành vi cần quan tâm như học, tham gia hoạt động ngoại khóa, thi cuộc thi học sinh giỏi, ...

Và cũng là con người đó trong môi trường cuộc thi hoa hậu sẽ có trạng thái cần quan tâm như như tên, tuổi, chiều cao, cân nặng, dân tộc, ... và hành vi cần quan tâm như ứng xử, nói tiếng anh, trình diễn thời trang, ...

Class

Tập hợp các đối tượng có điểm tương đồng thì được gọi đó là lớp (class), hay còn có thể nói lớp là khuôn mẫu để tạo ra đối tượng. Đối tượng là một thể hiện của lớp.

Ví dụ chúng ta có lớp học sinh, từng đối tượng của lớp học sinh là từng học sinh cụ thể như Nguyễn Văn A, Nguyễn Văn B, Nguyễn Văn C, ... Lớp động vật, các đối tượng của lớp động vật đó là con mèo, con chó, con heo, ...

Inheritance

Một đối tượng có tất cả trạng thái và hành vi của đối tượng cha thì được gọi là thừa kế.

Polymorphism

Khi cùng một nhiệm vụ mà thực hiện nhiều cách khác nhau thì được gọi là đa hình.

Ví dụ chúng ta có nhiệm vụ kêu của động vật nhưng con chó thì kêu gâu gâu, con mèo thì kêu meo meo, con heo thì kêu ọc ọc...

Trong C++, sử dụng overloading overriding để thực hiện tính đa hình. Những khái niệm đề overloading overriding chúng ta sẽ cùng tìm hiểu kỹ hơn ở các bài sau nhé. Bài này các bạn chỉ biết vậy thôi, không cần quan tâm nó là gì nhé.

Abstraction

Ẩn đi các chi tiết bên trong và chỉ hiển thị các chức năng bên ngoài thì được gọi là trừu tượng.

Ví dụ cuộc gọi điện thoại, chúng ta không hề biết bên trong nó xữ lý thể nào để chúng ta có thể nói chuyện được với nhau, chúng ta chỉ biết chức năng bên ngoài của nó là có thể nói chuyện được với nhau.

Trong C++ sử dụng lớp trừu tượng và interface để thực hiện tính trừu tượng. Và chúng ta khoan hãy quan tâm lớp trừu tượng và interface là gì nhé.

Encapsulation

Gói dữ liệu và thông tin thành một đơn vị được gọi là đóng gói. 

Ví dụ trong một công ty có các phòng ban như kế toán, lập trình, nhân sự thì những phòng ban chỉ có thể truy cập các phòng ban khác thông qua một cách thức được public sẳn cho các phòng ban khác truy cập.

Trong C++ sử dung access modifiers để thực hiện tính đóng gói. Và chúng ta khoan hãy quan tâm access modifiers là gì nhé. Mình sẽ nói trong các bài tiếp theo.

Ưu điểm

Ưu điểm của lập trình hướng đối tượng so với lập trình hướng thủ tục như sau:

  • OOP làm cho việc phát triển và bảo trì dễ dàng hơn, trong khi ngôn ngữ lập trình hướng thủ tục, không dễ quản lý nếu dự án lớn và code ngày càng nhiều.
  • OOP ẩn dữ liệu đi, trong khi ngôn ngữ lập trình hướng thủ tục, dữ liệu toàn cục có thể được truy cập từ bất cứ đâu.
  • OOP cung cấp khả năng mô phỏng sự kiện trong thế giới thực hiệu quả hơn nhiều, chúng ta có thể giải quyết nhiều vấn đề từ thực tế nếu chúng ta sử dụng ngôn ngữ lập trình hướng đối tượng.

2. Kết luận

Như vậy trong bài học hôm nay cho chúng ta cái nhìn tổng quan về các khái niệm liên quan đến lập trình hướng đối tượng. Có thể đến đây các bạn mới học còn mơ hồ về nó, tuy nhiên các bạn đừng quá lo lắng, chúng ta sẽ tìm hiểu chi tiết từng khái niệm một trong các bài học tiếp theo.

Và chúng ta kết thúc bài học này ở đây nhé. Trong bài tiếp theo chúng ta sẽ cùng tìm hiểu về đối tượng (object) và lớp (Class) trong C++. Các bạn nhớ theo dõi nhé.

Khóa học nên xem

Nguồn: freetuts.net