wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

LẬP TRÌNH HĐT - BÀI 7

Total questions: 28

Worksheet time: 3570secs

Name
Class
Date
1.

Lớp trừu tượng trong Java là gì?

a)

Lớp chỉ chứa các phương thức tĩnh

b)

Lớp không có phương thức nào

c)

Lớp chỉ chứa biến tĩnh

d)

Lớp không thể tạo lập đối tượng từ nó

2.

Lớp nào dưới đây có thể cài đặt một giao diện?

a)

Chỉ lớp trừu tượng

b)

Lớp cụ thể và lớp trừu tượng

c)

Chỉ lớp cụ thể

d)

Không thể cài đặt giao diện

3.

Tại sao giao diện lại được sử dụng trong Java?

a)

Để đạt được sự linh hoạt trong thiết kế, và sự mở rộng quan hệ kế thừa trong Java

b)

Để thay thế cho các lớp trừu tượng

c)

Để cung cấp các phương thức cụ thể cho các lớp

d)

Để định nghĩa các thuộc tính cho lớp

4-7.

Các phát biểu sau đây đúng hay sai?

4.

Một giao diện (interface) có thể kế thừa từ nhiều giao diện khác, đây chính là sự mở rộng quan hệ kế thừa trong Java (quan hệ kế thừa đa).

a)

ĐÚNG

b)

SAI

5.

Trong Java, giao diện (interface) có thể chứa các phương thức và hằng số có tính chất private

a)

ĐÚNG

b)

SAI

6.

Trong Java, giao diện (interface) có thành phần là các phương thức trừu tượng (public abstract) và thuộc tính là các hằng số (thuộc tính có tính chất public static final)

a)

ĐÚNG

b)

SAI

7.

Trong Java, interface là một hình thức của abstraction, giúp tách biệt chi tiết triển khai khỏi định nghĩa hành vi

a)

ĐÚNG

b)

SAI

8-11.

Xét chương trình Java ÁP DỤNG nguyên lý TRỪU TƯỢNG (Abstraction), như sau:

Trong những phát biểu sau về chương trình này, phát biểu nào đúng, phát biểu nào sai?

8.

Chương trình khó bảo trì, nâng cấp vì phải dùng thêm nguyên lý kế thừa.

a)

ĐÚNG

b)

SAI

9.

Lớp trừu tượng Animal chứa phương thức makeSound(). Lớp Dog và Cat kế thừa từ Animal và bắt buộc phải cài đặt makeSound(). Điều này giúp đảm bảo tất cả động vật đều có phương thức này.

a)

ĐÚNG

b)

SAI

10.

Có thể sử dụng lớp Animal làm khuôn mẫu chung để tạo ra nhiều loại động vật biến thể khác nhau.

a)

ĐÚNG

b)

SAI

11.

Nếu thêm lớp Bird, chỉ cần kế thừa từ Animal mà không sợ quên phương thức makeSound(), chương trình dễ mở rộng bổ sung thêm các loài động vật khác. Khi thay đổi trong lớp cha Animal, thay đổi này sẽ tự động áp dụng cho tất cả lớp con, do đó giảm chi phí sửa đổi.

a)

ĐÚNG

b)

SAI

12.

Xét bài toán quản lý phương tiện giao thông, các phương tiện cần quản lý gồm: ô tô, xe máy, xe tải. Mỗi phương tiện có những đặc điểm chung như: (1) có thể đi chuyển (move()); (2) có biển số (licensePlate); (3) có trọng lượng (weight). Tuy nhiên, từng loại phương tiện lại có cách di chuyển riêng. Cho hai giải pháp thiết kế hướng đối tượng như sau, hãy kéo thả các nguyên lý được áp dụng bởi giải pháp tương ứng:

12.

Giải pháp 1: Tạo một lớp Vehicle là lớp cha chứa các thuộc tính chung như licensePlate và weight, và phương thức chung move(). Mỗi loại phương tiện như Car, Motorbike, Truck kế thừa từ Vehicle có thể ghi đè phương thức move().

​ (a)  

Giải pháp 2: Tạo lớp Vehicle làm lớp trừu tượng chứa các thuộc tính licensePlate và weight, và chứa phương thức trừu tượng move(). Các lớp con của Vehicle bao gồm Car, Motorbike, Truck bắt buộc phải ghi đè phương thức này.

​ (b)  

Choose from the below words
Không áp dụng trừu tượng, có áp dụng kế thừa
Áp dụng cả kế thừa và trừu tượng (thôngqua lớp TT)
Không áp dụng kế thừa và có áp dụng trừu tượng
13.

Xét bài toán quản lý nhân viên trong một công ty, phân loại nhân viên cần quản lý gồm: Nhân viên văn phòng, Kỹ sư, và Người quản lý. Mỗi nhân viên có những đặc điểm chung như: mã nhân viên (employeeID), tên (name), mức lương (salary). Tuy nhiên, từng loại nhân viên có cách tính lương riêng.
Cho hai giải pháp thiết kế hướng đối tượng như sau, hãy kéo thả các nguyên lý được áp dụng bởi giải pháp tương ứng.

13.

Tạo một giao diện Payable để định nghĩa hành vi tính lương. Tạo một lớp trừu tượng Employee, 1) triển khai giao diện này và bổ sung các thuộc tính chung. Các lớp OfficeStaff, Engineer, Manager bắt buộc phải ghi đè phương thức calculateSalary().

​ (a)  

  1. Tạo ba lớp OfficeStaff, Engineer, Manager. Mỗi lớp đều có các thuộc tính employeeID, name, salary và phương thức calculateSalary() riêng biệt.

  2. ​ (b)  

Choose from the below words
Nguyên lý kế thừa và nguyên lý trừu tượng
Không áp dụng nguyên lý kế thừa và không áp dụng n
Có áp dụng nguyên lý kế thừa, không áp dụng trừu.t
14.

Xét bài toán quản lý nhân viên trong một công ty, phân loại nhân viên cần quản lý gồm: Nhân viên văn phòng, Kỹ sư, và Người quản lý. Mỗi nhân viên có những đặc điểm chung như: mã nhân viên (employeeID), tên (name), mức lương (salary). Để đảm bảo tính bảo mật, thông tin mức lương (salary) không được truy cập trực tiếp từ bên ngoài.
Cho hai giải pháp thiết kế hướng đối tượng tương tự sau, giải pháp nào thỏa mãn bài toán trên? hãy kéo thả nhận xét phù hợp với từng giải pháp.


14.

Tạo một lớp Employee làm lớp cha chứa các thuộc tính công khai (public): employeeID, name, salary. Các lớp OfficeStaff, Engineer, Manager kế thừa từ Employee

​ (a)  

Tạo một lớp Employee làm lớp cha chứa các thuộc tính riêng tư (private): employeeID, name, salary. Các lớp OfficeStaff, Engineer, Manager kế thừa từ Employee có thể ghi đè phương thức getSalary()

​ (b)  

Choose from the below words
Không thỏa mãn
Thỏa mãn
15-18.

Các phát biểu sau đúng hay sai?

15.

Một giao diện (interface) có thể kế thừa từ một hoặc nhiều lớp đối tượng

a)

ĐÚNG

b)

SAI

16.

Để triển khai (implements) một giao diện trong Java, lớp triển khai phải triển khai tất cả các phương thức của giao diện

a)

ĐÚNG

b)

SAI

17.

Phương thức trong interface mặc định là public abstract

a)

ĐÚNG

b)

SAI

18.

Trong Java, từ khóa để định nghĩa một giao diện là "interface"

a)

ĐÚNG

b)

SAI

19.

Lớp Robot cần triển khai phương thức nào để đoạn mã sau hợp lệ?

a)

public void moveFast() { System.out.println("Moving fast"); }

b)

public void move() { System.out.println("Moving"); }

c)

Không cần triển khai phương thức nào.

d)

public void move();

20.

Kết quả chạy chương trình sau đây là gì?

a)

"Overridden Method A"

b)

"Default Method A"

c)

Chương trình chạy bị lỗi

d)

Đoạn mã có lỗi cú pháp

21.

Điền vào chỗ trống thông tin phù hợp để chương trình sau không có lỗi:

interface A {

    static void methodA() {

        System.out.println("Static Method A");

    }

}

class B implements A {

    void test() {

        ____.methodA();

    }

}

a)

this

b)

super

c)

static

d)

A

22-23.

Cho biểu đồ thiết kế của gói quản lý đặt phòng khách sạn như sau:

Trong đó: ký hiệu "+": public; "#": protected; "-": private; "tên in nghiêng": trừu tượng.
Hãy cho biết trong các phát biểu sau, phát biểu nào mô tả đúng biểu đồ thiết kế này?

22.

Lớp Room là lớp cha chứa các thuộc tính public gồm: roomNumber, price và phương thức riêng tư (private): calculateDiscountedPrice(). Các lớp StandardRoom, VIPRoom, SuiteRoom kế thừa từ Room, có thể ghi đè phương thức calculateDiscountedPrice().

a)

ĐÚNG

b)

SAI

23.

Lớp Room là lớp trừu tượng chứa roomNumber (public), price (protected) và phương thức calculateDiscountedPrice() là phương thức công khai, trừu tượng. Các lớp con của Room, gồm StandardRoom, VIPRoom, SuiteRoom phải ghi đè phương thức calculateDiscountedPrice().

a)

ĐÚNG

b)

SAI

24-27.

Xét chương trình Java ÁP DỤNG nguyên lý ĐA HÌNH (Polymorphism) như sau:

Trong những phát biểu sau về chương trình này, phát biểu nào đúng, phát biểu nào sai?

24.

Lớp Animal được sử dụng làm kiểu dữ liệu chung, giúp có thể lưu trữ nhiều loại động vật trong một danh sách và gọi makeSound() một cách linh hoạt.

a)

ĐÚNG

b)

SAI

25.

Có thể thêm nhiều loại động vật khác nhau, chúng đều thuộc kiểu Animal, và quản lý chung trong mảng animals, mà không tạo riêng lẻ từng con vật với kiểu dữ liệu khác nhau.

a)

ĐÚNG

b)

SAI

26.

Chương trình có tính tái sử dụng mã thấp, dài dòng vì phải tạo biến riêng cho từng loại mới có thể làm việc với từng loại động vật.

a)

ĐÚNG

b)

SAI

27.

Lớp cha Animal với phương thức makeSound() được tạo để chuẩn hóa hành vi của mọi động vật (các loại đều có tập hành vi chung). Lớp Dog và Cat kế thừa Animal và ghi đè (override) phương thức makeSound()

a)

ĐÚNG

b)

SAI

28.

Xét giải pháp thiết kế cho bài toán quản lý nhân sự gồm các lớp như sau:

  1. 1. Lớp nhân viên (Employee) là lớp trừu tượng gồm:

Các thuộc tính: số hiệu nhân viên (employeeID), tên nhân viên (name) và thuộc tính riêng tư lương (salary)

Phương thức getSalary(), setSalary(salary), phương thức tính lương là phương thức trừu tượng: calculateSalary()

  1. 2. Các lớp: Nhân viên văn phòng (OfficeStaff), kỹ sư (Engineer), người quản lý (Manager) kế thừa lớp nhân viên và ghi đè phương thức calculateSalary().

  2. 3. Lớp quản lý nhân viên (EmployeeManage) chứa danh sách nhân viên, các nhân viên trong danh có thể là nhân viên văn phòng, kỹ sư, người quản lý.

Hỏi giải pháp này đã áp dụng các nguyên lý hướng đối tượng nào? (chọn nhiều đáp án đúng)

a)

Encapsulation

b)

Recursion

c)

Abstraction

d)

Inheritance

e)

Polymorphism

29-32.

Các phát biểu sau đây đúng hay sai?

29.

Trừu tượng hóa là quá trình quan tâm đến các chi tiết bao gồm cả bên trong, lẫn bên ngoài, bao gồm cả các chi tiết quan trọng và không quan trọng của thực thể, không được bỏ qua bất cứ chi tiết nào nhằm phân định chính xác đối tượng, tránh nhầm lẫn với đối tượng khác.

a)

ĐÚNG

b)

SAI

30.

Trừu tượng hóa (Abstraction) là quá trình loại bỏ các chi tiết không quan trọng của các đối tượng/thực thể cụ thể, chỉ giữ lại những đặc điểm, hành vi chung, quan trọng của chúng để hình thành nên các khái niệm (ví dụ: lớp đối tượng, lớp trừu tượng, giao diện, phương thức trừu tượng).

a)

ĐÚNG

b)

SAI

31.

Nguyên lý trừu tượng hóa (Abstraction Principle) là một quy tắc thiết kế trong lập trình hướng đối tượng, nhấn mạnh rằng một chương trình nên sử dụng các lớp, hàm hoặc module có mức độ trừu tượng phù hợp, thay vì đi sâu vào chi tiết triển khai.

a)

ĐÚNG

b)

SAI

32.

Trong Java, nguyên lý Abstraction có thể được triển khai thông qua: (1) Lớp trừu tượng (Abstract Class); và (2) Giao diện (Interface)

a)

ĐÚNG

b)

SAI

33.

Xét bài toán quản lý nhân viên trong một công ty, phân loại nhân viên cần quản lý gồm: Nhân viên văn phòng, Kỹ sư, và Người quản lý. Mỗi nhân viên có những đặc điểm chung như: mã nhân viên (employeeID), tên (name), mức lương (salary). Tuy nhiên, từng loại nhân viên có cách tính lương riêng.
Cho hai giải pháp thiết kế hướng đối tượng tương tự sau, hãy kéo thả các nguyên lý được áp dụng bởi giải pháp tương ứng.

33.

Tạo lớp Employee làm lớp trừu tượng chứa các thuộc tính chung và phương thức trừu tượng calculateSalary(). Các lớp con OfficeStaff, Engineer, Manager bắt buộc phải ghi đè phương thức này.

​ (a)  

  1. Tạo một lớp Employee làm lớp cha chứa các thuộc tính chung và phương thức tính lương calculateSalary(). Các lớp OfficeStaff, Engineer, Manager kế thừa từ Employee có thể ghi đè phương thức calculateSalary().

​ (b)  

Choose from the below words
Kế thừa và trừu tượng
Kế thừa
Trừu tượng
34.

Một lớp trừu tượng có thể chứa các phương thức nào?

a)

Chỉ phương thức cụ thể

b)

Cả phương thức trừu tượng và phương thức cụ thể

c)

Không chứa phương thức nào

d)

Chỉ phương thức trừu tượng

35.

Điều gì xảy ra khi một lớp cụ thể không triển khai tất cả các phương thức trừu tượng của giao diện mà nó kế thừa?

a)

Trình biên dịch sẽ báo lỗi.

b)

Lớp đó sẽ trở thành lớp trừu tượng.

c)

Các phương thức trừu tượng sẽ được tự động triển khai với phần thân rỗng.

d)

Chương trình sẽ chạy nhưng không có chức năng.

36.

Phương thức trong giao diện phải được khai báo như thế nào?

a)

 Có thể là phương thức cụ thể hoặc phương thức trừu tượng

b)

Có thể là phương thức tĩnh

c)

 Phải là phương thức trừu tượng

d)

Phải là phương thức cụ thể

37.

Cho chương trình Java như sau:

Những phương thức nào cần phải được triển khai trong lớp Circle?

a)

public abstract void draw() { // nội dung triển khai };

b)

public void draw() { // nội dung triển khai }
void color() { // nội dung triển khai };

c)

public void color() { // nội dung triển khai };
public void draw() { // nội dung triển khai };

d)

public void draw() { // nội dung triển khai };

38.

Đoạn mã sau có hợp lệ không?

a)

Không, vì lớp Mammal cần phải triển khai phương thức feed.

b)

Có, vì lớp Human đã triển khai phương thức feed của lớp Mammal.

c)

 Có, vì phương thức feed không cần phải triển khai.

d)

Không, vì lớp Human cần phải là lớp trừu tượng.

39-42.

Xét chương trình Java KHÔNG áp dụng nguyên lý TRỪU TƯỢNG (Abstraction) như sau:

Trong những phát biểu sau về chương trình này, phát biểu nào đúng, phát biểu nào sai?

39.

Mỗi lớp tự định nghĩa phương thức makeSound(), không có quy tắc chung nào để đảm bảo tất cả động vật Ađều có phương thức này. Do đó chương trình không áp dụng nguyên lý trừu tượng (Abstraction).

a)

ĐÚNG

b)

SAI

40.

Trong chương trình, lớp Dog và Cat là hai lớp độc lập, không có điểm chung. Nhưng trong thực tế, chúng có điểm chung. Chương trình không khai thác được những điểm chung này để tái sử dụng lại mã (không áp dụng nguyên lý kế thừa).

a)

ĐÚNG

b)

SAI

41.

Chương trình này áp dụng cả 3 nguyên lý của lập trình hướng đối tượng bao gồm: Bao bọc (Encapsulation), kế thừa (Inheritance), và trừu tượng (Abstraction)

a)

ĐÚNG

b)

SAI

42.
  1. Nếu thêm lớp Bird, lập trình viên có thể quên thêm makeSound(), làm cho hệ thống thiếu đồng nhất. Không thể sử dụng chung một kiểu dữ liệu để lưu trữ tất cả động vật, do đó chương trình thiếu tính linh hoạt.

a)

ĐÚNG

b)

SAI

43.

Cho biểu đồ thiết kế của gói quản lý đặt phòng khách sạn như sau:
Trong đó: ký hiệu "+": public; "#": protected; "-": private
Đâu là mã nguồn của lớp Room, và lớp StandardRoom khớp với bản thiết kế (chọn 2 đáp án)

a)

b)

c)

d)

44-47.

Xét chương trình Java KHÔNG nguyên lý ĐA HÌNH (Polymorphism) như sau:

Trong những phát biểu sau về chương trình này, phát biểu nào đúng, phát biểu nào sai?

44.

Không thể sử dụng chung một kiểu dữ liệu để quản lý Dog và Cat. Nếu có nhiều loại động vật khác, phải tạo thêm từng biến đối tượng cụ thể (ví dụ: Bird, Fish...), làm cho chương trình trở nên rườm rà.

a)

ĐÚNG

b)

SAI

45.

Chương trình dễ mở rộng và bảo trì, vì nếu cần thêm một loại động vật mới, ta chỉ cần sửa đổi main() để tạo thêm đối tượng mới, dễ có vừa quản lý hay trăm loại động vật khác nhau.

a)

ĐÚNG

b)

SAI

46.

Trong main(), phải tạo từng đối tượng và gọi phương thức makeSound() một cách thủ công, dẫn đến chương trình không linh hoạt.

a)

ĐÚNG

b)

SAI

47.

Lớp Dog và Cat là hai lớp riêng biệt, không có quan hệ chung. Mỗi lớp có phương thức makeSound() riêng, và không thể gọi thông qua một kiểu dữ liệu chung.

a)

ĐÚNG

b)

SAI

48.

Giả sử chúng ta cần thiết kế một hệ thống đặt phòng khách sạn với các loại phòng như Phòng tiêu chuẩn, Phòng VIP và Phòng Suite. Mỗi phòng có: Số phòng (roomNumber), Giá phòng (price), Phương thức tính giá sau khuyến mãi (calculateDiscountedPrice()). Để đảm bảo tính bảo mật, thông tin giá phòng (price) cần được bảo vệ khỏi truy cập trực tiếp.

Cho biểu đồ thiết kế của hệ thống này như sau:

Đâu là mã nguồn khớp với giải pháp thiết kế?

a)

b)

49.

Cho bài toán quản lý phòng khách sạn với các loại phòng gồm: Phòng tiêu chuẩn, Phòng VIP và Phòng Suite. Mỗi phòng có: Số phòng (roomNumber), Giá phòng (price), Phương thức tính giá sau khuyến mãi (calculateDiscountedPrice()). Để đảm bảo tính bảo mật, thông tin giá phòng (price) cần được bảo vệ khỏi truy cập trực tiếp.
Cho hai giải pháp thiết kế của bài toán như sau, kéo thả nguyên lý được áp dụng bởi giải pháp tương ứng:

49.

Tạo ba lớp StandardRoom, VIPRoom, SuiteRoom, mỗi lớp có các thuộc tính riêng tư (private): roomNumber, price, phương thức calculateDiscountedPrice(), và phương thức getter, setter tương ứng với từng thuộc tính

​ (a)  

  1. Tạo một lớp Room làm lớp cha chứa các thuộc tính riêng tư: roomNumber, price; phương thức calculateDiscountedPrice() và các phương thức getter, setter. Các lớp StandardRoom, VIPRoom, SuiteRoom kế thừa từ Room, có thể ghi đè phương thức calculateDiscountedPrice().​

​ (b)  

Choose from the below words
Che dấu thông
Kế thừa, Che dấu thông tin
Áp dụng đầy đủ bốn nguyên lý hướng đối
50-52.

Cho biểu đồ thiết kế của gói quản lý đặt phòng khách sạn như sau:

Trong đó: ký hiệu "+": public; "#": protected; "-": private; "tên in nghiêng": trừu tượng.
Hãy cho biết trong các diễn giải sau về biểu đồ thiết kế này, phát biểu nào đúng, phát biểu nào sai?

50.

Biểu đồ thiết kế bao gồm 5 lớp: Room, StandardRoom, VIPRoom, SuiteRoom, và Discountable. Mỗi lớp có thuộc tính roomNumber, price, và phương thức calculateDiscountedPrice() riêng. Các lớp có quan hệ liên kết đặc biệt với nhau phụ thuộc vào cấu trúc bên trong lớp.

a)

ĐÚNG

b)

SAI

51.

Giải pháp thiết kế này chỉ áp dụng các nguyên lý OOP gồm: Bao bọc (Encapsulation), Kế thừa (Inheritance), không áp dụng nguyên lý Trừu tượng (Abstraction)

a)

ĐÚNG

b)

SAI

52.

Giải pháp thiết kế này áp dụng đầy đủ các nguyên lý OOP gồm: Bao bọc (Encapsulation), Kế thừa (Inheritance), Trừu tượng (Abstraction)

a)

ĐÚNG

b)

SAI