[HICC.VN]

Trừu tượng hóa dữ liệu (Data abstraction) liên quan tới việc chỉ mang đến thông tin cần thiết cực kì tới cạnh ngoài và ẩn cụ thể cơ sở của chúng, ví dụ: nhằm biểu diễn thông tin cần thiết cực kì trong chương trình mà không hiển thị cụ thể về chúng.

chúng ta đang xem: Trừu tượng hóa là gì

Trừu tượng hóa dữ liệu (Data abstraction) là một nhân viên kỹ thuật lập trình mà dựa trên sự phân biệt của Interface và Implementation (trình vận hành).

Xem xét ví dụ về một chiếc TV, chúng ta cũng có thể bật/tắt, thay đổi kênh, chỉnh âm lượng, và thêm những thiết mắc phải ngoại vi như loa, VCR và DVD. Nhưng chúng ta không biết những cụ thể nội vi của nó, đó là, chúng ta không biết cách nó nhận tín hiệu qua không khí hoặc qua dây cáp, cách phiên dịch chúng và cuối cùng là hiển thị chúng trên màn hình.

Vì thế, cũng có thể nói rằng một chiếc TV phân biệt rõ ràng trình vận hành nội vi của nó với giao diện ngoại vi và chúng ta cũng có thể thao tác với interface với những nút nguồn, điều khiển âm lượng mà không cần phải có bất kỳ hiểu biết về những gì diễn ra cạnh trong nó.

ngày nay, về mặt ngôn ngữ lập trình C++, thì những lớp C++ mang đến Trừu tượng hóa dữ liệu (Data abstraction) ở mức thật tuyệt vời. Chúng mang đến đủ những phương thức public tới cạnh ngoài nhằm thao tác với tính năng của đối tượng và nhằm thao tác dữ liệu đối tượng, ví dụ: trạng thái mà không cần thực sự biết về cách lớp đó đã được vận hành nội tại.

Ví dụ, chương trình của chúng ta cũng có thể tạo một lời gọi tới hàm sort() mà không cần biết về hàm đó thực sự sử dụng thuật toán gì nhằm sắp xếp những giá trị đã cho. Thực ra, trình vận hành cơ sở (underlying implementation) của tính năng sắp xếp cũng có thể thay đổi tùy vào thư viện, và miễn là Interface vẫn như cũ thì lời gọi hàm của chúng ta vẫn tiếp tục làm việc.

Trong C++, chúng ta sử dụng những Lớp nhằm định nghĩa kiểu dữ liệu trừu tượng (abstract data types (ADT)) của riêng chúng ta.

Xem thêm: Google Drive Là Gì – Sá»­ Dụng Google Drive

chúng ta cũng có thể sử dụng đối tượng cout của lớp ostream cho luồng dữ liệu tới đầu ra chuẩn như sau:

#include using namespace std; int main( )

Tại đây, chúng ta không cần hiểu cách cout hiển thị văn bản trên màn hình. chúng ta chỉ cần biết Public Interface và Underlying Implementation của cout là sẵn sàng nhằm thay đổi.

Nhãn truy cập (Access Label) trong C++

Trong C++, chúng ta sử dụng Access Label nhằm định nghĩa Abstract Interface (Giao diện trừu tượng) cho lớp. Một lớp cũng có thể chứa 0 hoặc nhiều Access Label.

những thành viên được định nghĩa với một nhãn public là cũng có thể truy cập cho tất cả những phần của chương trình. Trừu tượng hóa dữ liệu của một kiểu được định nghĩa bởi những thành viên public của nó. những thành viên được định nghĩa với một nhãn private là không thể truy cập cho code mà sử dụng lớp đó. Khu vực private ẩn trình vận hành này với code mà sử dụng kiểu đó.

Không có hạn chế về tần suất mà một nhãn truy cập (Access Label) cũng có thể xuất hiện. Mỗi Access Label xác định độ truy cập (Access Level) của sự định nghĩa thành viên tiếp theo. Độ truy cập đã xác định còn tồn tại hiệu quả tới lúc gặp Access Label nối tiếp hoặc gặp dấu ngoặc móc đóng của thân lớp.

thuận tiện của Trừu tượng hóa dữ liệu trong C++

Trừu tượng hóa dữ liệu trong C++ mang lại hai lợi thế quan trọng:

Phần nội vi nhiều lần cạnh trong lớp được bảo vệ tránh khỏi những lỗi do người người sử dụng vô ý, mà cũng có thể gây không đạt chất lượng trạng thái của dữ liệu. vận hành lớp cũng có thể tiến hành qua thời gian nhằm đáp ứng yêu cầu thay đổi hoặc bug những báo cáo mà không yêu cầu thay đổi trong code của người người sử dụng.

Bằng việc định nghĩa những thành viên dữ liệu chỉ trong khu vực private của lớp, tác giả của lớp cũng có thể tự do tạo những thay đổi trong dữ liệu. Nếu trình vận hành thay đổi, thì chỉ mã hóa lớp là cần kiểm tra nhằm biết khía cạnh nào đem lại thay đổi. Nếu dữ liệu là public, thì lúc đó bất kỳ hàm nào mà truy cập một cách trực tiếp tới những thành viên dữ liệu của phép biểu diễn cũ cũng có thể mắc phải phá vỡ.

Ví dụ về Trừu tượng hóa dữ liệu trong C++

Trong bất kỳ chương trình C++ nào, vị trí chúng ta vận hành một lớp với những thành viên là public và private, thì đó là một ví dụ của trừu tượng hóa dữ liệu. chúng ta xem xét ví dụ sau:

#include using namespace std; class A // du lieu ma la nhin thay voi ben ngoai void congThem(int motso) // du lieu ma la nhin thay voi ben ngoai int tinhTong() ; private: // du lieu ma la bi an voi ben ngoai int tong; }; int main( )

Biên dịch và vận hành chương trình C++ trên sẽ cho kết quả sau:

Tong gia tri la: 75

Lớp trên cộng hai số và trả về tổng của chúng. những thành viên public là congThemtinhTong là những Interface (mà là nhìn thấy) tới cạnh ngoài và một người sử dụng cần biết chúng nhằm sử dụng lớp đó. Thành viên private là tong là chiếc gì đó mà người sử dụng không cần biết đến, nhưng là cần thiết cực kì cho lớp đó làm việc một cách chính xác.

Chiến lược thiết kế trong C++

Trừu tượng hóa dữ liệu phân biệt code thành Interface và Implementation. Vì thế, trong lúc thiết kế thành phần của chúng ta, chúng ta phải giữ Interface độc lập với Implementation, nhằm mà nếu chúng ta thay đổi underlying implementation thì Interface sẽ vẫn còn đó tồn tại như cũ.

Xem thêm: settled là gì

Trong trường hợp này, bất kỳ chương trình nào đang sử dụng những Interface này, chúng sẽ không mắc phải liên quan và sẽ rất cần một sự tái biên dịch với Implementation mới nhất này.

luôn luôn mục: Hỏi Đáp

Nguồn : Tổng hợp

[bvlq_danh_muc]

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

This site uses cookies to offer you a better browsing experience. By browsing this website, you agree to our use of cookies.