Lập tình hướng đối tượng trong C++ là gì? - Học C++ căn bản và nâng cao
Trong bài học này chúng ta sẽ tìm hiểu về lập trình hướng đối tượng trong C++, qua bài này sẽ giúp bạn hiểu khái niệm về đối tượng là gì? Cách liên tưởng đến đối tượng trong thực tế là như thế nào? 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 ...
Trong bài học này chúng ta sẽ tìm hiểu về lập trình hướng đối tượng trong C++, qua bài này sẽ giúp bạn hiểu khái niệm về đối tượng là gì? Cách liên tưởng đến đối tượng trong thực tế là như thế nào?
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. Và để hiểu rõ hơn thì trước tiên hãy cùng mình quay lại với kiến thức cũ nhé.
1. Lập trình hướng đối tượng C++ là gì?
Lập trình hướng đối tượng là thao tác phân tích quy đổi những sự vật, sự việc, vật thể trong bài toán thành những đối tượng trong lập trình, giúp việc quản lý, phát triển, mở rộng chương trình được đơn giản hơn.
Lập trình hướng thủ tục là cách sử dụng hàm để tạo ra một hệ thống code có logic, những hàm có liên quan với nhau sẽ được đặt vào trong một file, và chúng không thể liên kết chặt chẽ với nhau.
Ví dụ: Hai hàm cần sử dụng chung một biến lưu trữ, lúc này bạn phải sử dụng biến đó như một dạng tham chiếu thì trong thân của hai hàm đó mới sử dụng dữ liệu của nhau được.
Tuy nhiên khi áp dụng vào lập trình hướng đối tượng thì ta sử dụng một khái niệm mới, đó là thuộc tính của đối tượng, nó sẽ được lưu trữ và có thể gọi trong bất kì một phương thức (hàm) nào bên trong đối tượng đó.
Trong thực tế, mỗi sự vật, sự việc, đối tượng đều có thể quy ra thành đối tượng trong lập trình. Ví dụ bạn cần viết chương trình quản lý xe đạp thì xe đạp ta có thể xem là một đối tượng, nó có các thuộc tính như: bánh xe, yên xe, tăm xe, ... và có các hành động như chạy, đạp, té ngã ..
2. Các khái niệm trong lập trình hướng đối tượng 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 và overriding để thực hiện tính đa hình. Những khái niệm đề overloading và 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.
3. Ưu điểm của hướng đối tượng so với hướng thủ tục
Ư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.
4. 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é.