Font size
WorksheetsLẬP TRÌNH HĐT - BÀI 7
Total questions: 28
Worksheet time: 3570secs
Lớp trừu tượng trong Java là gì?
Lớp chỉ chứa các phương thức tĩnh
Lớp không có phương thức nào
Lớp chỉ chứa biến tĩnh
Lớp không thể tạo lập đối tượng từ nó
Lớp nào dưới đây có thể cài đặt một giao diện?
Chỉ lớp trừu tượng
Lớp cụ thể và lớp trừu tượng
Chỉ lớp cụ thể
Không thể cài đặt giao diện
Tại sao giao diện lại được sử dụng trong Java?
Để đạt được sự linh hoạt trong thiết kế, và sự mở rộng quan hệ kế thừa trong Java
Để thay thế cho các lớp trừu tượng
Để cung cấp các phương thức cụ thể cho các lớp
Để định nghĩa các thuộc tính cho lớp
Các phát biểu sau đây đúng hay sai?
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).
ĐÚNG
SAI
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
ĐÚNG
SAI
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)
ĐÚNG
SAI
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
ĐÚNG
SAI
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?
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.
ĐÚNG
SAI
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.
ĐÚNG
SAI
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.
ĐÚNG
SAI
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.
ĐÚNG
SAI
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:
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)
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.
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)
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.
(b)
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.
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)
Các phát biểu sau đúng hay sai?
Một giao diện (interface) có thể kế thừa từ một hoặc nhiều lớp đối tượng
ĐÚNG
SAI
Để 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
ĐÚNG
SAI
Phương thức trong interface mặc định là public abstract
ĐÚNG
SAI
Trong Java, từ khóa để định nghĩa một giao diện là "interface"
ĐÚNG
SAI
Lớp Robot cần triển khai phương thức nào để đoạn mã sau hợp lệ?
public void moveFast() { System.out.println("Moving fast"); }
public void move() { System.out.println("Moving"); }
Không cần triển khai phương thức nào.
public void move();
Kết quả chạy chương trình sau đây là gì?
"Overridden Method A"
"Default Method A"
Chương trình chạy bị lỗi
Đoạn mã có lỗi cú pháp
Đ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();
}
}
this
super
static
A
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?
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().
ĐÚNG
SAI
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().
ĐÚNG
SAI
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?
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.
ĐÚNG
SAI
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.
ĐÚNG
SAI
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.
ĐÚNG
SAI
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()
ĐÚNG
SAI
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. 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()
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().
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)
Encapsulation
Recursion
Abstraction
Inheritance
Polymorphism
Các phát biểu sau đây đúng hay sai?
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.
ĐÚNG
SAI
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).
ĐÚNG
SAI
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.
ĐÚNG
SAI
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)
ĐÚNG
SAI
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.
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)
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)
Một lớp trừu tượng có thể chứa các phương thức nào?
Chỉ phương thức cụ thể
Cả phương thức trừu tượng và phương thức cụ thể
Không chứa phương thức nào
Chỉ phương thức trừu tượng
Đ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?
Trình biên dịch sẽ báo lỗi.
Lớp đó sẽ trở thành lớp trừu tượng.
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.
Chương trình sẽ chạy nhưng không có chức năng.
Phương thức trong giao diện phải được khai báo như thế nào?
Có thể là phương thức cụ thể hoặc phương thức trừu tượng
Có thể là phương thức tĩnh
Phải là phương thức trừu tượng
Phải là phương thức cụ thể
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?
public abstract void draw() { // nội dung triển khai };
public void draw() { // nội dung triển khai }
void color() { // nội dung triển khai };
public void color() { // nội dung triển khai };
public void draw() { // nội dung triển khai };
public void draw() { // nội dung triển khai };
Đoạn mã sau có hợp lệ không?
Không, vì lớp Mammal cần phải triển khai phương thức feed.
Có, vì lớp Human đã triển khai phương thức feed của lớp Mammal.
Có, vì phương thức feed không cần phải triển khai.
Không, vì lớp Human cần phải là lớp trừu tượng.
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?
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).
ĐÚNG
SAI
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).
ĐÚNG
SAI
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)
ĐÚNG
SAI
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.
ĐÚNG
SAI
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)
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?
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à.
ĐÚNG
SAI
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.
ĐÚNG
SAI
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.
ĐÚNG
SAI
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.
ĐÚNG
SAI
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ế?
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:
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)
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)
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?
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.
ĐÚNG
SAI
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)
ĐÚNG
SAI
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)
ĐÚNG
SAI
