Trắc nghiệm Công nghệ Phần mềm Bài: THIẾT KẾ HƯỚNG ĐỐI TƯỢNG là một trong những đề thi thuộc Chương 8: PHA THIẾT KẾ trong học phần Công nghệ Phần mềm chuyên ngành Công Nghệ Thông Tin cấp độ Đại học. Đây là phần kiến thức cốt lõi, là cầu nối quan trọng giữa các yêu cầu “cái gì” từ pha đặc tả và giai đoạn “cách thức” cài đặt phần mềm, định hình cấu trúc và hành vi của phần mềm dựa trên các nguyên lý hướng đối tượng.
Trong bài học này, người học cần nắm vững các nội dung cốt lõi như: mục đích của thiết kế hướng đối tượng, sự khác biệt với thiết kế hướng hành động, cách áp dụng các nguyên tắc OOP (đóng gói, kế thừa, đa hình, trừu tượng) vào thiết kế, các mẫu thiết kế (design patterns), các mô hình kiến trúc phần mềm phổ biến (phân lớp, client-server, microservices) trong bối cảnh hướng đối tượng, và vai trò của tài liệu thiết kế. Việc hiểu rõ thiết kế hướng đối tượng sẽ giúp sinh viên tạo ra các hệ thống phần mềm có cấu trúc rõ ràng, dễ bảo trì, mở rộng và tái sử dụng, là yếu tố then chốt cho sự thành công lâu dài của sản phẩm.
Hãy cùng Dethitracnghiem.vn tìm hiểu về đề thi này và tham gia làm kiểm tra ngay lập tức!
Trắc nghiệm Công nghệ Phần mềm Bài: THIẾT KẾ HƯỚNG ĐỐI TƯỢNG
Câu 1.Mục đích chính của Thiết kế Hướng Đối tượng (Object-Oriented Design – OOD) là gì?
A. Tập trung vào việc lập trình các hàm và thủ tục.
B. Chỉ quan tâm đến giao diện người dùng.
C. Loại bỏ hoàn toàn sự cần thiết của tài liệu.
D. Định nghĩa các lớp, đối tượng, mối quan hệ và kiến trúc hệ thống để đáp ứng yêu cầu.
Câu 2.Nguyên tắc nào của OOD giúp che giấu các chi tiết cài đặt bên trong của một lớp và chỉ hiển thị các giao diện cần thiết cho người dùng bên ngoài?
A. Tính kế thừa (Inheritance).
B. Tính đa hình (Polymorphism).
C. Tính trừu tượng (Abstraction).
D. Tính đóng gói (Encapsulation).
Câu 3.Khi một lớp con kế thừa các thuộc tính và phương thức từ một lớp cha, đây là ví dụ của nguyên tắc OOD nào?
A. Tính đóng gói.
B. Tính đa hình.
C. Tính trừu tượng.
D. Tính kế thừa (Inheritance).
Câu 4.Nguyên tắc OOD nào cho phép một đối tượng có thể mang nhiều hình thái khác nhau hoặc phản ứng theo cách khác nhau tùy thuộc vào ngữ cảnh (ví dụ: ghi đè phương thức)?
A. Tính đóng gói.
B. Tính kế thừa.
C. Tính trừu tượng.
D. Tính đa hình (Polymorphism).
Câu 5.Trong OOD, Biểu đồ lớp (Class Diagram) được sử dụng để mô tả điều gì?
A. Luồng điều khiển của chương trình.
B. Trình tự thời gian của các sự kiện.
C. Các chức năng của hệ thống từ góc nhìn người dùng.
D. Cấu trúc tĩnh của hệ thống, bao gồm các lớp, thuộc tính, phương thức và mối quan hệ.
Câu 6.Nguyên tắc thiết kế “Tính liên kết cao” (High Cohesion) trong OOD có ý nghĩa gì đối với một lớp?
A. Các lớp trong hệ thống phụ thuộc chặt chẽ vào nhau.
B. Các lớp nên được đặt trong cùng một gói.
C. Một lớp nên có nhiều giao diện với các lớp khác.
D. Các thuộc tính và phương thức bên trong một lớp có mối quan hệ logic chặt chẽ và phục vụ một mục đích chung duy nhất.
Câu 7.Nguyên tắc thiết kế “Tính phụ thuộc thấp” (Low Coupling) trong OOD có ý nghĩa gì?
A. Các lớp nên có ít lỗi.
B. Các lớp nên được thiết kế độc lập.
C. Các lớp nên có khả năng tái sử dụng cao.
D. Các lớp trong hệ thống ít phụ thuộc vào nhau, giảm thiểu ảnh hưởng khi có thay đổi ở một lớp.
Câu 8.Mô hình kiến trúc nào thường được sử dụng trong các hệ thống hướng đối tượng để phân tách các mối quan tâm (concerns) thành các tầng riêng biệt?
A. Mô hình Client-Server.
B. Mô hình Peer-to-Peer.
C. Mô hình Microservices.
D. Mô hình phân lớp (Layered Architecture).
Câu 9.Việc sử dụng các “Design Pattern” (Mẫu thiết kế) trong OOD mang lại lợi ích gì?
A. Tăng độ phức tạp của mã nguồn.
B. Giới hạn sự sáng tạo của lập trình viên.
C. Chỉ áp dụng cho các dự án nhỏ.
D. Cung cấp các giải pháp đã được kiểm chứng, tái sử dụng được cho các vấn đề thiết kế phổ biến.
Câu 10.Đâu là một nhược điểm tiềm tàng của Thiết kế Hướng Đối tượng?
A. Khó khăn trong việc tìm lỗi.
B. Chi phí bảo trì thấp.
C. Khó khăn trong việc phát triển.
D. Có thể dẫn đến sự phức tạp quá mức nếu không quản lý tốt các mối quan hệ kế thừa và phụ thuộc.
Câu 11.Trong OOD, Biểu đồ trình tự (Sequence Diagram) được sử dụng để mô tả điều gì?
A. Cấu trúc tĩnh của các lớp.
B. Các trạng thái của một đối tượng.
C. Luồng điều khiển của một quy trình.
D. Trình tự thời gian của các thông điệp (cuộc gọi phương thức) giữa các đối tượng để thực hiện một trường hợp sử dụng.
Câu 12.Khái niệm “Trừu tượng hóa” (Abstraction) trong OOD có ý nghĩa gì trong thiết kế?
A. Hiển thị tất cả các chi tiết phức tạp cho người dùng.
B. Làm cho mã nguồn dài hơn.
C. Luôn luôn giấu mọi thông tin.
D. Tập trung vào các đặc điểm và hành vi thiết yếu của một đối tượng hoặc hệ thống, bỏ qua các chi tiết không cần thiết.
Câu 13.Để đảm bảo phần mềm có “khả năng tái sử dụng” (reusability) cao, điều gì cần được chú trọng trong OOD?
A. Viết code càng dài càng tốt.
B. Chỉ sử dụng ngôn ngữ lập trình phổ biến.
C. Không bao giờ chia sẻ module.
D. Thiết kế các lớp và thành phần độc lập, đóng gói tốt và có giao diện rõ ràng.
Câu 14.Mô hình kiến trúc nào trong OOD cho phép phát triển, triển khai và mở rộng các dịch vụ nhỏ, độc lập một cách riêng rẽ?
A. Kiến trúc tập trung (Monolithic).
B. Kiến trúc phân lớp (Layered).
C. Kiến trúc Client-Server.
D. Kiến trúc Microservices.
Câu 15.Phát biểu nào sau đây **đúng** về OOD?
A. Nó là phương pháp duy nhất để phát triển phần mềm chất lượng cao.
B. Nó chỉ phù hợp cho các dự án nhỏ.
C. Nó thay thế hoàn toàn giai đoạn phân tích.
D. Nó cung cấp một cách tiếp cận tự nhiên hơn để mô hình hóa các hệ thống phức tạp dựa trên thế giới thực.
Câu 16.Khi một nhà thiết kế OOP quyết định sử dụng một Factory Pattern, họ đang giải quyết vấn đề gì?
A. Tăng cường khả năng kế thừa.
B. Giảm số lượng lớp.
C. Cải thiện tính đóng gói.
D. Cách thức tạo đối tượng mà không cần phải gọi hàm tạo trực tiếp.
Câu 17.Mối quan hệ “has-a” (có một) giữa hai lớp trong OOD được thể hiện bằng mối quan hệ nào trong Biểu đồ lớp?
A. Kế thừa (Inheritance).
B. Đa hình (Polymorphism).
C. Liên kết (Association).
D. Kết tập (Aggregation) hoặc Thành phần (Composition).
Câu 18.Khái niệm “Refactoring” (Tái cấu trúc mã) trong OOD có ý nghĩa gì?
A. Thêm tính năng mới vào hệ thống.
B. Sửa lỗi chức năng.
C. Thay đổi giao diện người dùng.
D. Cải thiện cấu trúc bên trong của mã nguồn mà không làm thay đổi hành vi bên ngoài của nó.
Câu 19.Tại sao OOD lại giúp cải thiện khả năng bảo trì (Maintainability) của phần mềm?
A. Vì nó làm cho mã nguồn ngắn hơn.
B. Vì nó loại bỏ lỗi.
C. Vì nó không cần tài liệu.
D. Vì tính mô-đun, đóng gói và phụ thuộc thấp giúp việc thay đổi một phần ít ảnh hưởng đến các phần khác.
Câu 20.Biểu đồ nào trong UML thường được sử dụng ở giai đoạn thiết kế để mô tả cách các thành phần phần mềm được tổ chức và kết nối với nhau, ví dụ: các file, thư mục, thư viện?
A. Biểu đồ lớp.
B. Biểu đồ trình tự.
C. Biểu đồ triển khai (Deployment Diagram).
D. Biểu đồ thành phần (Component Diagram).
Câu 21.Quyết định về “tên” (naming) các lớp, thuộc tính và phương thức trong OOD có tầm quan trọng gì?
A. Chỉ để làm cho code ngắn gọn.
B. Không quan trọng miễn là code chạy.
C. Chỉ để thể hiện sự sáng tạo.
D. Ảnh hưởng đến khả năng đọc, hiểu và bảo trì mã nguồn.
Câu 22.Lợi ích của việc thiết kế một giao diện lập trình ứng dụng (API) rõ ràng và ổn định trong OOD là gì?
A. Làm cho API khó sử dụng.
B. Giới hạn khả năng tích hợp.
C. Yêu cầu nhiều mã hơn để triển khai.
D. Cho phép các module hoặc hệ thống khác dễ dàng tương tác và tích hợp với nhau mà không cần biết chi tiết cài đặt bên trong.
Câu 23.Khái niệm “Design Debt” (Nợ thiết kế) là gì và có ảnh hưởng như thế nào?
A. Chi phí mua công cụ thiết kế.
B. Khoản vay để đầu tư vào công nghệ mới.
C. Tiền lương trả cho nhà thiết kế.
D. Chi phí phát sinh trong tương lai do các quyết định thiết kế không tối ưu hoặc “đi tắt”, làm tăng chi phí bảo trì.
Câu 24.Khi một hệ thống phần mềm cần chạy trên nhiều môi trường khác nhau (ví dụ: web, di động, desktop), OOD có thể hỗ trợ điều này thông qua việc thiết kế gì?
A. Các lớp độc lập hoàn toàn.
B. Một kiến trúc tập trung.
C. Một giao diện người dùng duy nhất.
D. Một kiến trúc phân lớp rõ ràng, tách biệt logic nghiệp vụ khỏi giao diện và tầng dữ liệu.
Câu 25.Mục tiêu của việc “kiểm thử thiết kế” (Design Review) trong pha thiết kế hướng đối tượng là gì?
A. Để tìm lỗi cú pháp trong mã nguồn.
B. Để kiểm tra hiệu suất của hệ thống.
C. Để xác nhận các yêu cầu chức năng.
D. Để phát hiện sớm các vấn đề, mâu thuẫn hoặc thiếu sót trong thiết kế kiến trúc và chi tiết.