The design of classes in a way that hides the details of implementation from the user is known as:
Trả lời:
Đáp án đúng: D
Câu hỏi này kiểm tra kiến thức về các khái niệm cơ bản trong lập trình hướng đối tượng (OOP), đặc biệt là liên quan đến việc ẩn thông tin và quản lý dữ liệu.
* **Encapsulation (Đóng gói):** Là việc gói dữ liệu (thuộc tính) và phương thức (hành vi) hoạt động trên dữ liệu đó vào trong một đơn vị duy nhất, thường là một lớp. Mục đích là để bảo vệ dữ liệu khỏi sự truy cập trực tiếp từ bên ngoài và kiểm soát cách dữ liệu được sử dụng.
* **Information Hiding (Ẩn thông tin):** Là nguyên tắc che giấu các chi tiết triển khai bên trong của một lớp và chỉ cung cấp giao diện cần thiết cho người dùng. Điều này giúp giảm sự phụ thuộc giữa các phần của chương trình và làm cho mã dễ bảo trì và thay đổi hơn. Ẩn thông tin thường được thực hiện thông qua việc sử dụng các từ khóa như `private`, `protected` để giới hạn phạm vi truy cập.
* **Data Abstraction (Trừu tượng hóa dữ liệu):** Là quá trình đơn giản hóa các đối tượng phức tạp bằng cách chỉ hiển thị các đặc điểm và hành vi cần thiết cho người dùng, đồng thời ẩn đi các chi tiết không cần thiết. Abstraction tập trung vào "cái gì" chứ không phải "như thế nào".
Trong ngữ cảnh của câu hỏi, việc thiết kế các lớp theo cách ẩn các chi tiết triển khai khỏi người dùng liên quan đến cả đóng gói (encapsulation), ẩn thông tin (information hiding) và trừu tượng hóa dữ liệu (data abstraction). Do đó, đáp án chính xác nhất là "All of the above".