Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng - Đề 09 bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.
Câu 1: Trong lập trình hướng đối tượng, khái niệm nào sau đây thể hiện khả năng một đối tượng thuộc lớp con có thể hành xử khác so với đối tượng thuộc lớp cha khi được gọi cùng một phương thức?
- A. Tính đóng gói (Encapsulation)
- B. Tính trừu tượng (Abstraction)
- C. Tính đa hình (Polymorphism)
- D. Tính kế thừa (Inheritance)
Câu 2: Một lớp "Động vật" có phương thức "Kêu". Lớp "Chó" và "Mèo" kế thừa từ "Động vật" và ghi đè phương thức "Kêu" để tạo ra tiếng kêu đặc trưng của mỗi loài. Đây là một ví dụ minh họa rõ nhất cho tính chất nào của lập trình hướng đối tượng?
- 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
Câu 3: Tính đóng gói trong lập trình hướng đối tượng mang lại lợi ích chính nào sau đây?
- A. Bảo vệ dữ liệu của đối tượng khỏi bị truy cập và sửa đổi trực tiếp từ bên ngoài.
- B. Cho phép tạo ra các lớp mới dựa trên các lớp đã tồn tại.
- C. Giảm sự phức tạp của chương trình bằng cách ẩn đi các chi tiết không cần thiết.
- D. Cho phép đối tượng thuộc các lớp khác nhau phản ứng khác nhau với cùng một thông điệp.
Câu 4: Từ khóa nào thường được sử dụng trong các ngôn ngữ lập trình hướng đối tượng (như Java, C++, C#) để thể hiện tính kế thừa giữa các lớp?
- A. implements
- B. extends
- C. new
- D. class
Câu 5: Trong lập trình hướng đối tượng, "tính trừu tượng" (Abstraction) giúp giải quyết vấn đề phức tạp bằng cách nào?
- A. Tăng cường tính bảo mật của dữ liệu.
- B. Cho phép tái sử dụng mã nguồn.
- C. Ẩn đi các chi tiết cài đặt phức tạp và chỉ hiển thị giao diện cần thiết.
- D. Tạo ra nhiều hình thức khác nhau cho cùng một hành động.
Câu 6: "Lớp" trong lập trình hướng đối tượng được xem như là:
- A. Một đối tượng cụ thể.
- B. Một hành động mà đối tượng có thể thực hiện.
- C. Một giá trị dữ liệu mà đối tượng lưu trữ.
- D. Khuôn mẫu hoặc bản thiết kế để tạo ra các đối tượng.
Câu 7: "Đối tượng" trong lập trình hướng đối tượng là gì?
- A. Một thể hiện cụ thể của một lớp.
- B. Một bản thiết kế cho các lớp.
- C. Một tập hợp các lớp có liên quan.
- D. Một phương pháp lập trình tuyến tính.
Câu 8: Phương thức khởi tạo (constructor) trong lớp có vai trò chính là gì?
- A. Hủy bỏ đối tượng khi nó không còn được sử dụng.
- B. Thực hiện các phép toán số học.
- C. Khởi tạo trạng thái ban đầu cho đối tượng khi nó được tạo ra.
- D. Định nghĩa hành vi của đối tượng.
Câu 9: Phương thức hủy (destructor) trong lớp (trong các ngôn ngữ hỗ trợ) có vai trò chính là gì?
- A. Giải phóng tài nguyên mà đối tượng đã chiếm giữ khi đối tượng bị hủy.
- B. Khởi tạo trạng thái ban đầu cho đối tượng.
- C. Thực hiện các thao tác nhập/xuất dữ liệu.
- D. Định nghĩa các thuộc tính của đối tượng.
Câu 10: "Tính kế thừa" (Inheritance) trong lập trình hướng đối tượng giúp:
- A. Bảo vệ dữ liệu khỏi truy cập trái phép.
- B. Tái sử dụng mã nguồn và xây dựng mối quan hệ "IS-A" giữa các lớp.
- C. Ẩn đi các chi tiết cài đặt.
- D. Cho phép đối tượng phản ứng khác nhau với cùng một thông điệp.
Câu 11: Trong mối quan hệ kế thừa, lớp con (derived class) còn được gọi là:
- A. Lớp cơ sở (base class)
- B. Lớp cha (parent class)
- C. Lớp dẫn xuất (derived class)
- D. Lớp trừu tượng (abstract class)
Câu 12: Trong mối quan hệ kế thừa, lớp cha (base class) còn được gọi là:
- A. Lớp cơ sở (base class)
- B. Lớp dẫn xuất (derived class)
- C. Lớp con (child class)
- D. Lớp giao diện (interface class)
Câu 13: Phạm vi truy cập "private" của một thành viên trong lớp có nghĩa là:
- A. Thành viên có thể được truy cập từ bất kỳ đâu.
- B. Thành viên chỉ có thể được truy cập từ bên trong lớp đó.
- C. Thành viên có thể được truy cập từ lớp con nhưng không từ bên ngoài lớp.
- D. Thành viên có thể được truy cập từ cùng package (trong Java).
Câu 14: Phạm vi truy cập "public" của một thành viên trong lớp có nghĩa là:
- A. Thành viên có thể được truy cập từ bất kỳ đâu.
- B. Thành viên chỉ có thể được truy cập từ bên trong lớp đó.
- C. Thành viên chỉ có thể được truy cập từ lớp con.
- D. Thành viên không thể được truy cập.
Câu 15: Phạm vi truy cập "protected" của một thành viên trong lớp có nghĩa là:
- A. Thành viên có thể được truy cập từ bất kỳ đâu.
- B. Thành viên chỉ có thể được truy cập từ bên trong lớp đó.
- C. Thành viên có thể được truy cập từ bên trong lớp đó và các lớp con của nó.
- D. Thành viên không thể được truy cập trực tiếp.
Câu 16: Trong lập trình hướng đối tượng, thuật ngữ nào mô tả việc che giấu thông tin chi tiết và chỉ hiển thị những chức năng cần thiết ra bên ngoài?
- A. Đóng gói (Encapsulation)
- B. Kế thừa (Inheritance)
- C. Đa hình (Polymorphism)
- D. Trừu tượng (Abstraction)
Câu 17: Phương pháp lập trình nào tập trung vào việc chia chương trình thành các đối tượng tương tác với nhau?
- A. Lập trình tuyến tính
- B. Lập trình hướng đối tượng
- C. Lập trình cấu trúc
- D. Lập trình hàm
Câu 18: Ưu điểm chính của lập trình hướng đối tượng so với lập trình cấu trúc là gì?
- A. Chương trình chạy nhanh hơn.
- B. Mã nguồn ngắn gọn hơn.
- C. Tăng tính tái sử dụng, bảo trì và mở rộng của mã nguồn.
- D. Dễ học hơn cho người mới bắt đầu.
Câu 19: Trong lập trình hướng đối tượng, "thông điệp" (message) thường được hiểu là:
- A. Một biến toàn cục.
- B. Một đoạn mã chương trình độc lập.
- C. Một cấu trúc dữ liệu phức tạp.
- D. Yêu cầu một đối tượng thực hiện một hành động (gọi phương thức).
Câu 20: Mục đích của việc sử dụng "interface" (giao diện) trong lập trình hướng đối tượng là gì?
- A. Tạo ra các đối tượng cụ thể.
- B. Định nghĩa một tập hợp các phương thức mà các lớp thực hiện interface phải cung cấp.
- C. Che giấu dữ liệu bên trong đối tượng.
- D. Tái sử dụng mã nguồn giữa các lớp không liên quan.
Câu 21: "Tính đa hình" (Polymorphism) có thể được hiện thực hóa thông qua cơ chế nào trong lập trình hướng đối tượng?
- A. Kế thừa (Inheritance) và ghi đè phương thức (Method Overriding).
- B. Đóng gói (Encapsulation) và ẩn thông tin (Information Hiding).
- C. Trừu tượng hóa (Abstraction) và lớp trừu tượng (Abstract Class).
- D. Thành phần private và protected.
Câu 22: Trong UML (Unified Modeling Language), biểu đồ lớp (class diagram) được sử dụng để mô tả:
- A. Luồng điều khiển của chương trình.
- B. Tương tác giữa các đối tượng theo thời gian.
- C. Cấu trúc tĩnh của các lớp, thuộc tính và phương thức trong hệ thống.
- D. Giao diện người dùng của ứng dụng.
Câu 23: "Tính liên kết lỏng lẻo" (Loose Coupling) trong thiết kế hướng đối tượng là gì?
- A. Các lớp phụ thuộc chặt chẽ vào nhau.
- B. Các lớp ít phụ thuộc vào nhau, thay đổi ở một lớp ít ảnh hưởng đến các lớp khác.
- C. Các đối tượng giao tiếp trực tiếp với nhau.
- D. Mã nguồn được viết liền mạch, không chia thành các lớp.
Câu 24: "Tính kết dính cao" (High Cohesion) trong thiết kế hướng đối tượng là gì?
- A. Một lớp thực hiện nhiều chức năng khác nhau.
- B. Các phương thức trong một lớp không liên quan đến nhau.
- C. Các lớp khác nhau thực hiện cùng một chức năng.
- D. Các thành phần bên trong một lớp có liên quan chặt chẽ và cùng hướng đến một mục tiêu chung.
Câu 25: Trong lập trình hướng đối tượng, nguyên tắc "SOLID" là tập hợp các nguyên tắc thiết kế nhằm mục đích:
- A. Thiết kế phần mềm hướng đối tượng dễ bảo trì, mở rộng và linh hoạt.
- B. Tăng tốc độ thực thi chương trình.
- C. Giảm thiểu việc sử dụng bộ nhớ.
- D. Làm cho mã nguồn ngắn gọn và dễ đọc hơn.
Câu 26: Nguyên tắc "DRY" (Don"t Repeat Yourself) trong lập trình hướng đối tượng khuyến khích điều gì?
- A. Viết mã chi tiết và rõ ràng.
- B. Kiểm thử mã thường xuyên.
- C. Tránh lặp lại mã nguồn, tối ưu hóa khả năng tái sử dụng mã.
- D. Giữ cho giao diện người dùng đơn giản và dễ sử dụng.
Câu 27: Trong lập trình hướng đối tượng, "composition" (tổng hợp) là một loại quan hệ giữa các lớp, thể hiện mối quan hệ:
- A. "IS-A" (là một)
- B. "HAS-A" (có một) mạnh mẽ, trong đó phần chứa kiểm soát vòng đời của phần được chứa.
- C. "USES-A" (sử dụng một)
- D. "KNOWS-A" (biết một)
Câu 28: Trong lập trình hướng đối tượng, "aggregation" (kết hợp) là một loại quan hệ giữa các lớp, thể hiện mối quan hệ:
- A. "IS-A" (là một)
- B. "HAS-A" (có một) mạnh mẽ.
- C. "USES-A" (sử dụng một)
- D. "HAS-A" (có một) lỏng lẻo hơn, phần chứa không kiểm soát vòng đời của phần được chứa.
Câu 29: Khi nào nên sử dụng "kế thừa" (inheritance) và khi nào nên sử dụng "composition" (tổng hợp) trong thiết kế hướng đối tượng?
- A. Luôn ưu tiên kế thừa vì nó giúp tái sử dụng mã tốt hơn.
- B. Luôn ưu tiên composition vì nó đơn giản hơn kế thừa.
- C. Sử dụng kế thừa khi có quan hệ "IS-A", và composition khi có quan hệ "HAS-A". Composition thường linh hoạt hơn trong nhiều trường hợp.
- D. Kế thừa và composition có thể thay thế cho nhau trong mọi tình huống.
Câu 30: Trong lập trình hướng đối tượng, "design pattern" (mẫu thiết kế) là gì?
- A. Một lỗi thường gặp trong thiết kế hướng đối tượng.
- B. Một giải pháp đã được kiểm chứng cho các vấn đề thiết kế phần mềm thường gặp, đặc biệt trong OOP.
- C. Một công cụ để kiểm thử mã nguồn hướng đối tượng.
- D. Một phong cách lập trình mới thay thế lập trình hướng đối tượng.