STARTING
CONTROL STATEMENT
FUNCTION
ARRAY & POINTER
OOP
STL
ITERATORS
OTHER FEATURES
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Lập tình hướng đối tượng trong C++ là gì?

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?

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thứ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. 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.

Bài viết này được đăng tại [free tuts .net]

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 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.

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é.

Cùng chuyên mục:

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý chuỗi (string.h) trong C/C++

Các hàm xử lý chuỗi (string.h) trong C/C++

Thread Pools và Parallel Algorithms trong C++

Thread Pools và Parallel Algorithms trong C++

Tạo và quản lý các Multithreading trong C++

Tạo và quản lý các Multithreading trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Try, Catch, và Throw của Exception Handling trong C++

Try, Catch, và Throw của Exception Handling trong C++

Cách sử dụng Lambda Expressions trong C++

Cách sử dụng Lambda Expressions trong C++

Sử dụng weak_ptr trong C++

Sử dụng weak_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng unique_ptr trong C++

Sử dụng unique_ptr trong C++

Tổng quan về Smart Pointers trong C++

Tổng quan về Smart Pointers trong C++

Sử dụng Iterators trong STL của C++

Sử dụng Iterators trong STL của C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng trong List trong C++

[Iterator] Sử dụng trong List trong C++

[STL] Sử dụng Vector trong C++

[STL] Sử dụng Vector trong C++

Tổng quan về Iterators trong C++

Tổng quan về Iterators trong C++

[STL] Các hàm thường dùng của lớp Vector trong C++

[STL] Các hàm thường dùng của lớp Vector trong C++

[STL] Các hàm thông dụng của Map trong C++

[STL] Các hàm thông dụng của Map trong C++

Top