Tính đóng gói (Encapsulation) trong lập trình hướng đối tượng

Chúng tôi rất vui mừng chia sẻ kiến thức sâu sắc về từ khóa Encapsulation la gi và hy vọng rằng nó sẽ hữu ích cho bạn đọc. Bài viết tập trung trình bày ý nghĩa, vai trò và ứng dụng của từ khóa này trong việc tối ưu hóa nội dung trang web và chiến dịch tiếp thị trực tuyến. Chúng tôi cung cấp các phương pháp tìm kiếm, phân tích và lựa chọn từ khóa phù hợp, cùng với các chiến lược và công cụ hữu ích. Hy vọng rằng thông tin mà chúng tôi chia sẻ sẽ giúp bạn xây dựng chiến lược thành công và thu hút lưu lượng người dùng. Xin chân thành cảm ơn sự quan tâm và hãy tiếp tục theo dõi blog của chúng tôi để cập nhật những kiến thức mới nhất.

Một trong số 4 tính chất đặc trưng chung của nhiều tiếng nói lập trình hướng đối tượng người sử dụng (OOP) như C++, C#, Java, Objective-C… đó là tính đóng gói (Encapsulation). Đây là khái niệm rất cơ bản lúc các bạn học về lập trình hướng đối tượng người sử dụng nhưng tôi thì hầu như chẳng mấy khi quan tâm khái niệm xác thực nó là gì. Bởi vì các bạn biết đấy, với những thứ mà tất cả chúng ta gặp hoặc xúc tiếp liên tục trong thời kì dài, khi tất cả chúng ta đã quá hiểu chúng rồi thì tất cả chúng ta nhiều khi lại không có ý tưởng rõ ràng về việc khái niệm chúng. Ví dụ, tôi vững chắc rằng tôi biết rất rõ ràng những thứ như con chó, con gà, xe máy,… là gì nhưng để mang ra một khái niệm chuẩn xác thì chắc là tôi cũng cần được thời kì đấy.

Bạn Đang Xem: Tính đóng gói (Encapsulation) trong lập trình hướng đối tượng

Gần đây có một số bạn hỏi tôi về các tính chất của lập trình OOP trong đó có tính đóng gói (Encapsulation), tôi nhận thức được việc trả lời các bạn (nhất là các bạn mới học) một cách đúng thực chất ngay từ trên đầu là rất quan trọng. Do đó, để sở hữu thể trả lời các bạn một cách chuẩn xác nhất thì tôi đã phải search lại một vòng Google xem khái niệm mà tôi đưa ra có đúng không nhỉ. Và kết quả làm tôi giật thột một tí, tôi đã tham khảo khá nhiều link, và phần lớn kết quả đều phải sở hữu một chiếc gì đó sai sai. Hồ hết các kết quả (cả tiếng Anh, lẫn tiếng Việt) đều phải sở hữu một vấn đề, đó là mặc dù đang nói về tính đóng gói nhưng lại ít nhiều hoặc thậm chí là mang nguyên khái niệm về che dấu tài liệu (Data Hiding) vào để giảng giải mặc dù đó là một khái niệm hoàn toàn khác. Trong cả giảng giải ở link wiki này tôi thấy cũng không đúng lắm. Chính vì việc giảng giải sai, không rõ ràng hoặc rất dễ gây nhầm lẫn đó nên hôm nay tôi viết nội dung bài viết này để mang ra cách giảng giải mà tôi cho là dễ hiểu và hợp lý nhất, rất may là cũng có người đồng ý kiến với tôi, tôi sẽ trích một số link tôi đã tham khảo mà tôi thấy họ giảng giải về Encapsulation khá hợp lý ở cuối nội dung bài viết này.

Vậy rốt cục Tính đóng gói – Encapsulation là gì ? Tôi xin đúc rút lại như sau:

Tính đóng gói (Encapsulation) chỉ đơn giản là việc phối hợp một bộ các tài liệu (data) liên quan đến nhau cùng với một bộ các hàm/phương thức (functions/methods) hoạt động trên các tài liệu đó, “gói” tất cả vào trong một chiếc gọi là class. Các thực thể của nhiều class thì được gọi là các đối tượng người sử dụng (objects) trong lúc class giống như một công thức được sử dụng để tạo ra các đối tượng người sử dụng đó.

Xem Thêm : Eau De Parfum Hay Eau De Toilette Là Gì ?

Các bạn xem thêm về khái niệm class và object tại đây:

  • Khái niệm Class
  • Khái niệm Object

Một ví dụ đơn giản về tính chất đóng gói như sau. Trước tiên các bạn hãy xem qua đoạn code viết bằng C++ sau →

Tính đóng gói thể hiện ở đoạn code trên là việc tôi phối hợp các tài liệu về hình chữ nhật gồm có chiều rộng, chiều dài cùng với những hàm xử lý (đọc/ghi/tính toán) với những tài liệu này vào một trong những class mang tên là Rectangle. Chỉ đơn giản vậy thôi.

Hiện giờ tôi sẽ nói một tí về Che dấu tài liệu – Data Hiding mà hay bị đánh đồng lộn lạo với Encapsulation.

Xem Thêm : JSP là gì? – học JSP cần chuẩn bị những gì?

Che dấu tài liệu (Data Hiding) là việc một số tài liệu (data)hàm/phương thức (functions/methods) được class che giấu đi (ở dạng private) để đảm nói rằng các tài liệu này sẽ được truy cập và sử dụng đúng mục tiêu, đúng cách thông qua các hàm/phương thức (functions/methods) ở dạng public mà class cung cấp. Bạn không thể truy cập tới các private data hoặc gọi đến private methods của class từ phía ngoài class đó.

Che dấu tài liệu – Data Hiding chỉ là một phương pháp kỹ thuật mà bạn vận dụng để xây hình thành class mà thôi, nó không phải là tính chất đặc trưng của lập trình hướng đối tượng người sử dụng, việc bạn có vận dụng phương pháp này hay là không là hoàn toàn không bắt buộc. Tuy nhiên trong các mạng lưới hệ thống thật, để nâng cao tính security, giảm phụ thuộc giữa các class, tránh lỗi do đọc ghi tài liệu sai cách, … thì việc vận dụng phương pháp che dấu tài liệu gần như thể đương nhiên.

Nhìn lại đoạn code sample phía bên trên các chúng ta có thể thấy là các data như mWidth, mHeight được để ở dạng private. Bạn chỉ có thể truy cập chúng thông qua các phương thức public như: setValues(), getArea() → đó đây chính là Data Hiding.

Tham khảo

  • [1] : https://stackoverflow.com/questions/12013448/encapsulation-vs-data-hiding-java
  • [2] : https://techdifferences.com/difference-between-data-hiding-and-encapsulation.html

Xem thêm

  • Tính thừa hưởng – Inheritance và đa hình – Polymorphism
  • Tính trừu tượng – Abstraction

— Phạm Minh Tuấn (Shun) —

You May Also Like

About the Author: v1000