



Preview text:
lOMoAR cPSD| 58833082 Kiểm tra cuối kỳ
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG - ĐỀ 4
Thời gian: 90 phút, KHÔNG được dùng tài liệu
Câu 1. Trắc nghiệm (3 điểm)
1. Trình biên dịch, chuyển mã nguồn Java thành bytecode là? a. Java b. javac c. javadoc d. jdb
2. Với phương thức trừu tượng được định nghĩa trong lớp cha dưới đây, trong lớp con
không trừu tượng của nó phải định nghĩa phương thức nào dưới đây?
public abstract int example ( int[] arr );
a. public double example ( int[] arr ) { . . . }
b. public int example ( long[] arr ) { . . . }
c. public int example ( int[] arr ) { . . . }
d. public abstract example ( int[] arr ) { . . . }
3. Đối với phương thức sau đây, cách nạp chồng nào là hợp lệ?
public long example (int a, long b) { return a + b; }
a. private int example (int a, int b, int c) { return a + b; }
b. public int example (int a, long b) { return a + b; }
c. private long example2 (int a, long b) { return a + b; }
d. public long example (long a, int b) { return a + b; }
4. Mức độ truy cập (Access modifier) nào có phạm vi truy cập cao thứ 2 trong 4 access modifier dưới đây? a. default b. private c. public 1 lOMoAR cPSD| 58833082 d. protected
5. Một lớp luôn có thể tạo ra lớp con kế thừa (extends) từ nó?
a. Luôn có lớp con kế thừa nếu lớp đó không phải lớp trừu tượng
b. Luôn có lớp con kế thừa
c. Lớp luôn có lớp con kế thừa từ nó ngoại trừ lớp đó là “final”
d. Các lớp khai báo là public luôn có lớp con kế thừa từ nó
6. Lớp A kế thừa từ lớp trừu tượng B, các nhận định nào sau đây là đúng?
a. Lớp A phải định nghĩa những phương thức trừu tượng (abstract) của B.
b. Mọi phương thức của lớp A được kế thừa từ B phải được định nghĩa.
c. Lớp A chỉ cần định nghĩa những phương thức tùy chọn của B.
d. Lớp A chỉ định nghĩa những phương thức không phải là “private” của B
7. Chương trình sau sẽ cho cho ra kết quả là gì? a. Fido b. null c. Lỗi biên dịch d. Lỗi runtime
8. Cho lớp tổng quát Pair, và hai lớp Person và Student, trong đó lớp Student là lớp con
của lớp Person. Chọn các phát biểu đúng:
a. Pair và Pair không có quan hệ kế thừa
b. Pair là lớp cha của Pair
c. Có thể khai báo Pair<? extends Person> p = new Pair() d. Tất cả đều sai
9. Điều gì sẽ xảy ra khi biên dịch và chạy đoạn code sau? 2 lOMoAR cPSD| 58833082
class Base {} class Sub extends Base {} class
Sub2 extends Base {} public class CEx{ public
static void main(String argv[]){ Base b=new Base(); Sub s=(Sub) b; } } a. Runtime Exception b. Compile Exception
c. Biên dịch và chạy bình thường d. -
10. Chọn các đáp án đúng
a. Các lời gọi phương thức trong Java (ngoại trừ phương thức final/private) đều là liên kết động
b. Phương thức thực thể có thể truy xuất các thuộc tính lớp
c. Phương thức khởi tạo không thể được khai báo với từ khoá private
d. Một lớp là trừu tượng bắt buộc phải chứa phương thức trừu tượng Câu 2. (2 điểm)
a. Trong một chương trình Java, chuyện gì xảy ra nếu nhiều hơn một khối catch có thể bắt
đối tượng ngoại lệ bị ném? Cho ví dụ minh hoạ. (1 điểm)
b. Phát biểu: “Đối tượng của tất cả các lớp đều có thể được chuỗi hoá (serializable) và ghi ra
file” là đúng hay sai? Hãy giải thích. (1 điểm) Câu 3. (3 điểm)
Bạn được giao nhiệm vụ xây dựng một hệ thống quản lý bài viết cho một trang blog. Hệ thống có
các người dùng khác nhau. Mỗi người dùng sẽ có ID, tên, và email. Mọi người dùng đều có thể
xem và tạo ra các bài viết. Các bài viết có thể hoặc là một bài báo hoặc là một bình luận cho một
bài báo nhất định. Các bài báo các thuộc tính như tiêu đề, nội dung, ngày đăng và tác giả. Một
bình luận dưới mỗi bài viết, có các thuộc tính như nội dung, ngày bình luận và người bình luận.
Tác giả của một bài viết có thể sửa và xóa các bài viết của họ. Các bài báo sẽ được tổ chức vào
các danh mục. Một danh mục có tên danh mục, mô tả và các bài báo thuộc về danh mục.
a. Hãy vẽ biểu đồ thiết kế lớp sử dụng lớp trừu tượng và/hoặc giao diện (interface) một cách thích hợp (2 điểm)
b. Hãy thay đổi thiết kế sao cho một bình luận cũng có thể có các bình luận trả lời bình luận
đó, đồng thời người dùng có thể báo cáo (report) một bài viết (0.5 điểm). Hãy cài đặt
phương thức báo cáo sao cho chỉ có tác giả của một bài viết mới có thể báo cáo các bình
luận về bài viết đó (0.5) 3 lOMoAR cPSD| 58833082 Câu 4. (2 điểm)
a. Mô tả và cho ví dụ về mẫu thiết kế Factory Method (1 điểm)
b. Viết một phương thức tổng quát findMax với tham số là một mảng gồm các phần tử thuộc
kiểu tổng quát, phương thức này tìm kiếm và trả về phần tử lớn nhất. (1 điểm) 4