1. Thay vì viết lại toàn bộ mã cho chức năng tìm kiếm trong nhiều chương trình khác nhau, một lập trình viên có thể tạo một mô đun tìm kiếm độc lập và gọi nó bất cứ khi nào cần. Hành động này thể hiện nguyên tắc nào?
A. Tính trừu tượng hóa (Abstraction).
B. Tính đóng gói (Encapsulation).
C. Tính tái sử dụng (Reusability).
D. Tính độc lập (Independence).
2. Yếu tố nào sau đây KHÔNG phải là lợi ích chính của việc thiết kế chương trình theo mô đun?
A. Dễ dàng sửa đổi và bảo trì.
B. Tăng cường khả năng tái sử dụng mã nguồn.
C. Giảm thiểu yêu cầu về kiến thức lập trình của người dùng cuối.
D. Cải thiện khả năng làm việc nhóm trong quá trình phát triển.
3. Trong lập trình hướng đối tượng, một lớp (class) thường được coi là một dạng của mô đun. Nguyên tắc nào của thiết kế mô đun được thể hiện rõ nhất khi một lớp đóng gói dữ liệu và các phương thức xử lý dữ liệu đó?
A. Tính tái sử dụng (Reusability).
B. Tính đóng gói (Encapsulation).
C. Tính độc lập (Independence).
D. Tính trừu tượng hóa (Abstraction).
4. Trong các cách tiếp cận thiết kế chương trình, cách nào KHÔNG phù hợp với nguyên tắc thiết kế theo mô đun?
A. Chia nhỏ chương trình thành các thành phần có chức năng rõ ràng.
B. Tập trung vào việc tạo ra các mô đun có thể tái sử dụng.
C. Thiết kế một chương trình lớn, nguyên khối với ít sự phân chia chức năng.
D. Đảm bảo các mô đun tương tác với nhau qua các giao diện được định nghĩa.
5. Khi phát triển một hệ thống lớn, việc chia nhỏ thành các mô đun giúp:
A. Tăng cường sự phức tạp và khó khăn trong quản lý.
B. Giảm thiểu thời gian phát triển và dễ dàng sửa lỗi hơn.
C. Buộc tất cả các lập trình viên phải có kiến thức sâu về toàn bộ hệ thống.
D. Hạn chế khả năng tái sử dụng các thành phần.
6. Việc một mô đun chỉ thực hiện một nhiệm vụ duy nhất và rõ ràng, không bao gồm các chức năng phụ không liên quan, giúp tăng cường điều gì trong thiết kế phần mềm?
A. Tính ghép nối (Coupling).
B. Tính đóng gói (Encapsulation).
C. Tính kết hợp cao (High Cohesion).
D. Tính trừu tượng hóa (Abstraction).
7. Nếu một mô đun có nhiều chức năng không liên quan mật thiết với nhau, mô đun đó có khả năng vi phạm nguyên tắc nào của thiết kế mô đun?
A. Tính đóng gói (Encapsulation).
B. Tính kết hợp cao (High Cohesion).
C. Tính trừu tượng hóa (Abstraction).
D. Tính giao diện rõ ràng (Clear Interface).
8. Mô đun Xử lý thanh toán cần truy cập thông tin đơn hàng từ mô đun Quản lý đơn hàng. Để giảm thiểu sự phụ thuộc, cách tiếp cận tốt nhất là gì?
A. Mô đun Xử lý thanh toán truy cập trực tiếp vào cơ sở dữ liệu của mô đun Quản lý đơn hàng.
B. Mô đun Quản lý đơn hàng cung cấp một phương thức (ví dụ: `getOrderDetails(orderId)`) để mô đun Xử lý thanh toán gọi.
C. Sao chép toàn bộ dữ liệu đơn hàng sang mô đun Xử lý thanh toán.
D. Mô đun Xử lý thanh toán tự tạo lại logic để lấy thông tin đơn hàng.
9. Khi một mô đun được thiết kế để có tính kết hợp thấp, điều này có thể dẫn đến hậu quả nào?
A. Dễ dàng bảo trì và sửa lỗi.
B. Khó khăn trong việc hiểu và sửa đổi mô đun do các chức năng không liên quan.
C. Tăng khả năng tái sử dụng của mô đun.
D. Giảm sự phụ thuộc vào các mô đun khác.
10. Trong thiết kế chương trình theo mô đun, khi một mô đun nhận đầu vào là dữ liệu và xử lý nó để tạo ra đầu ra, điều này thể hiện nguyên tắc nào của thiết kế mô đun?
A. Tính đóng gói (Encapsulation) và giao diện rõ ràng (Clear Interface).
B. Tính tái sử dụng (Reusability) và tính độc lập (Independence).
C. Tính trừu tượng hóa (Abstraction) và tính tách biệt (Separation of Concerns).
D. Tính đa hình (Polymorphism) và tính kế thừa (Inheritance).
11. Mô đun Xử lý dữ liệu đầu vào và mô đun Lưu trữ dữ liệu trong một ứng dụng nên có mức độ ghép nối như thế nào là tốt nhất?
A. Ghép nối chặt (Tight Coupling), để đảm bảo dữ liệu được lưu trữ ngay lập tức.
B. Ghép nối lỏng (Loose Coupling), thông qua một giao diện trung gian rõ ràng.
C. Không có ghép nối, mỗi mô đun hoạt động độc lập hoàn toàn.
D. Ghép nối chặt chẽ, thay đổi ở mô đun này yêu cầu thay đổi tương ứng ở mô đun kia.
12. Nếu một mô đun quản lý việc hiển thị giao diện người dùng (UI) và một mô đun khác quản lý logic nghiệp vụ (business logic), điều này thể hiện nguyên tắc nào?
A. Tính kết hợp cao (High Cohesion).
B. Tính ghép nối lỏng lẻo (Loose Coupling).
C. Tính tách biệt mối quan tâm (Separation of Concerns).
D. Tính tái sử dụng (Reusability).
13. Nếu bạn đang phát triển một ứng dụng web và tạo ra các mô đun riêng biệt cho phần giao diện người dùng (UI), phần xử lý dữ liệu (data processing), và phần giao tiếp cơ sở dữ liệu (database interaction), bạn đang áp dụng nguyên tắc nào?
A. Tính đóng gói (Encapsulation).
B. Tính trừu tượng hóa (Abstraction).
C. Tính tách biệt mối quan tâm (Separation of Concerns).
D. Tính đa hình (Polymorphism).
14. Khi thiết kế, nếu một mô đun chỉ tập trung vào một nhiệm vụ duy nhất và rõ ràng, điều này thể hiện nguyên tắc nào?
A. Tính đa hình (Polymorphism).
B. Tính kế thừa (Inheritance).
C. Tính tách biệt mối quan tâm (Separation of Concerns).
D. Tính kết hợp cao (High Cohesion).
15. Khi thay đổi cách triển khai bên trong của một mô đun (ví dụ: thay đổi thuật toán sắp xếp), nhưng giao diện của mô đun đó vẫn giữ nguyên, điều này thể hiện nguyên tắc nào?
A. Tính trừu tượng hóa (Abstraction).
B. Tính đóng gói (Encapsulation).
C. Tính độc lập (Independence).
D. Cả A và B đều đúng.
16. Trong một hệ thống quản lý thư viện, mô đun Quản lý mượn trả sách và mô đun Quản lý độc giả nên có mức độ phụ thuộc lẫn nhau như thế nào để tuân thủ nguyên tắc thiết kế mô đun tốt?
A. Phụ thuộc cao (High Coupling), để dễ dàng chia sẻ dữ liệu.
B. Phụ thuộc lỏng lẻo (Loose Coupling), thông qua giao diện được định nghĩa rõ ràng.
C. Không có sự phụ thuộc nào, mỗi mô đun hoạt động hoàn toàn biệt lập.
D. Phụ thuộc mạnh mẽ vào nhau, một thay đổi ở mô đun này yêu cầu thay đổi tức thì ở mô đun kia.
17. Việc tạo ra các mô đun có thể được sử dụng lại trong nhiều chương trình khác nhau là mục tiêu chính của nguyên tắc nào?
A. Tính tách biệt (Separation of Concerns).
B. Tính đóng gói (Encapsulation).
C. Tính tái sử dụng (Reusability).
D. Tính độc lập (Independence).
18. Trong thiết kế mô đun, giao diện của một mô đun có vai trò quan trọng nhất là gì?
A. Che giấu hoàn toàn mọi chi tiết bên trong mô đun.
B. Xác định cách các mô đun khác có thể tương tác với mô đun đó.
C. Đảm bảo mô đun có thể hoạt động độc lập mà không cần bất kỳ mô đun nào khác.
D. Quy định ngôn ngữ lập trình mà mô đun sẽ sử dụng.
19. Khi chúng ta chia một chương trình lớn thành nhiều mô đun nhỏ hơn, mỗi mô đun có thể được phát triển bởi một nhóm hoặc một lập trình viên riêng biệt. Điều này cải thiện khía cạnh nào của quá trình phát triển phần mềm?
A. Tính trừu tượng hóa (Abstraction).
B. Tính đóng gói (Encapsulation).
C. Tính tái sử dụng (Reusability).
D. Khả năng làm việc nhóm (Teamwork and Parallel Development).
20. Khi một mô đun thực hiện một chức năng cụ thể và ít phụ thuộc vào cách thức hoạt động bên trong của các mô đun khác, điều này nhấn mạnh nguyên tắc nào của thiết kế mô đun?
A. Tính kết hợp (Cohesion).
B. Tính ghép nối (Coupling).
C. Tính trừu tượng hóa (Abstraction).
D. Tính độc lập (Independence).
21. Trong thiết kế theo mô đun, mục tiêu chính của việc giảm thiểu sự phụ thuộc lẫn nhau giữa các mô đun là gì?
A. Tăng cường hiệu suất xử lý của toàn bộ chương trình.
B. Giảm thiểu sự phức tạp và tăng khả năng bảo trì, mở rộng.
C. Thuận tiện hơn trong việc lựa chọn ngôn ngữ lập trình.
D. Đảm bảo chương trình chạy trên mọi hệ điều hành.
22. Một mô đun được thiết kế tốt cần có tính kết hợp cao. Điều này có nghĩa là:
A. Các chức năng bên trong mô đun liên quan chặt chẽ và tập trung vào một mục đích chung.
B. Mô đun có thể dễ dàng được thay thế bằng một mô đun khác.
C. Mô đun có ít sự phụ thuộc vào các mô đun bên ngoài.
D. Mô đun có khả năng thực hiện nhiều chức năng khác nhau.
23. Trong lập trình, việc sử dụng các hàm hoặc phương thức là một hình thức của thiết kế theo mô đun. Nếu một hàm thực hiện nhiều công việc khác nhau không liên quan, nó có thể bị coi là vi phạm nguyên tắc nào?
A. Tính đóng gói (Encapsulation).
B. Tính tái sử dụng (Reusability).
C. Tính kết hợp cao (High Cohesion).
D. Tính độc lập (Independence).
24. Khi một mô đun được thiết kế để chỉ thực hiện một vai trò duy nhất trong hệ thống lớn hơn, điều này giúp tăng cường khía cạnh nào của thiết kế mô đun?
A. Tính ghép nối lỏng lẻo (Loose Coupling).
B. Tính kết hợp cao (High Cohesion).
C. Tính trừu tượng hóa (Abstraction).
D. Tính đa hình (Polymorphism).
25. Khi chúng ta tập trung vào việc ẩn đi các chi tiết phức tạp và chỉ hiển thị những thông tin cần thiết cho người dùng của mô đun, chúng ta đang áp dụng nguyên tắc nào?
A. Tính kế thừa (Inheritance).
B. Tính trừu tượng hóa (Abstraction).
C. Tính đa hình (Polymorphism).
D. Tính đóng gói (Encapsulation).