Tính đóng gói trong OOP là một khái niệm căn bản, cần thiết, thế nhưng nhiều lập trình viên lại bỏ qua. bài đăng này sẽ trình bày một vài thông tin mà bạn cần biết về Tính đóng gói trong OOP.
Tính đóng gói trong OOP là gì?
Tính đóng gói (Encapsulation) là một trong bốn tính chất căn bản của Lập trình hướng đối tượng (Object-oriented programming – viết tắt là OOP). Các tính chất còn lại bao gồm: Tính đa hình (Polymorphism), Tính kế thừa (Inheritance) và Tính trừu tượng (Abstraction).
Hiểu một cách dễ hiểu, “đóng gói” là việc đưa tất cả thông tin, dữ liệu cần thiết vào bên trong một đối tượng (object). Sau đấy, khi một đối tượng được tạo thành từ lớp (class), thì dữ liệu và phương thức (method) đã được đóng gói trong đối tượng đó. Khi sử dụng, ta chỉ cần gọi tên phương thức chứ không cần truy xuất đến dữ liệu bên trong.
>>> Xem thêm: Lỗi Syntax trong lập trình và những điều bạn cần biết
Mục tiêu của Tính đóng gói trong OOP
Trong tư duy lập trình, việc lấy thông tin từ bên trong đối tượng để phục vụ cho một hành động bên ngoài không được được xem là cách viết mã hay. Do đó, Tính đóng gói được dùng để che giấu dữ liệu bên trong của một đối tượng. Bên cạnh đó, nó chặn quyền truy cập trực tiếp đến các phần tử bên trong của đối tượng.
Lập trình viên có thể tận dụng Tính đóng gói khi mong muốn bảo vệ dữ liệu bên trong của đối tượng. Dữ liệu đấy hoàn toàn không thể bị sửa đổi 1 cách bất ngờ bởi những mã lệnh bên ngoài từ những phần khác của chương trình.
Có thể hiểu “đóng gói” là đưa dữ liệu và phương thức vào trong một lớp.
Vì sao nên tận dụng Tính đóng gói?\
Nhìn chung, Tính đóng gói có một vài điểm mạnh như sau:
- Tính linh hoạt: Mã được đóng gói sẽ linh động, dễ sửa đổi hơn là những đoạn mã độc lập.
- Khả năng tái sử dụng: Mã đã đóng gói có thể sẽ được tái sử dụng trong một phần mềm hoặc nhiều phần mềm. Từ một đối tượng, người dùng có thể chuyển sang dùng một đối tượng khác mà không phải đổi mã. Bởi vì cả hai đối tượng đều có giao diện như nhau.
- Khả năng bảo trì: Mã được đóng gói trong những phần riêng biệt, như là lớp, phương thức, giao diện,… do đó, việc thay đổi, cập nhật một phần của phần mềm không ảnh hưởng đến những phần còn lại. điều này giúp giảm công sức và tiết kiệm thời gian cho các nhà phát triển.
- Khả năng kiểm thử: Đối với một lớp được đóng gói, Tester sẽ diễn viết những bài kiểm thử hơn. Các trở thành viên sẽ tập trung ở một nơi chứ không nằm rải rác. Vì như thế, kiểm thử viên cũng tiết kiệm được thời gian và công sức hơn.
- Che giấu dữ liệu: Khi sử dụng phương thức, người sử dụng chỉ cần biết nó tạo ra kết quả gì. Họ không cần quan tâm đến những chi tiết bên trong của đối tượng để dùng nó.
VD minh hoạ
Khi bị bệnh chúng ta tới bệnh viện để khám. Sau khi khám bác sĩ nói chúng ta bị cảm cúm, và kê cho chúng ta một đơn thuốc, trong đơn thuốc có danh sách các loại thuốc, liều lượng của mỗi loại và thời gian uống thuốc.
Đọc đơn thuốc chúng ta chỉ biết là có các loại thuốc đấy & liều lượng của mỗi loại thuốc như thế nào uống vào thời điểm nào. Nếu uống đúng loại thuốc, đúng liều lượng đúng thời gian thì chúng ta sẽ hết cảm cúm, còn rõ ràng bên trong mỗi loại thuốc đấy chứa những hoạt chất gì, tại sao chúng ta phải uống liều lượng như vậy, vì sao phải uống đúng giờ được chỉ định, chúng ta cũng hoàn toàn không hề biết.
Đứng trên cương vị lập trình viên ta có thể hiểu:
Có một class tên là DieuTriCamCum{}. Trong class này có dữ liệu (Data) là những loại thuốc, các hàm/phương thức (function/method) là liều lượng của mỗi loại thuốc & thời gian uống thuốc.
Tạm kết
Vậy là chúng ta đã hiểu rõ hơn về một tính chất đặc trưng của lập trình hướng đối tượng, cụ thể là tính đóng gói trong oop. Bài đăng của mình xin kết thúc tại đây, mình hy vọng bài này sẽ giúp các bạn nhiều hơn trong lúc tìm hiểu OOP.
Nhật Minh – Tổng hợp và bổ sung
Nguồn: codelearn.io, vn.got-it.ai, marketenterprise.vn
Bình luận về chủ đề post