You are on page 1of 57

Lập trình hướng đối tượng là:

c. Lập trình hướng đối tượng là phương pháp mới của lập trình máy tính, chia chương
trình thành các phương thức; quan tâm đến chức năng của hệ thống.
b. Lập trình hướng đối tượng là phương pháp lập trình cơ bản gần với mã máy.
a. Lập trình hướng đối tượng là phương pháp đặt trọng tâm vào các đối tượng, nó
không cho phép dữ liệu chuyển động một cách tự do trong hệ thống; dữ liệu được gắn
với các phương thức thành phần.
d. Lập trình hướng đối tượng là phương pháp đặt trọng tâm vào các chức năng, cấu
trúc chương trình được xây dựng theo cách tiếp cận hướng chức năng.

Đặc điểm cơ bản của lập trình hướng đối tượng thể hiện ở:
a. Tính đóng gói, tính kế thừa, tính đa hình, tính trừu tượng.
d. Tính đóng gói, tính trừu tượng.
c. Tính chia nhỏ, tính kế thừa.
b. Tính đóng gói, tính kế thừa, tính đa hình, tính đặc biệt hóa.

Thuật ngữ OOP là viết tắt của:


c. Open Object Programming
d. Object Oriented Proccessing.
b. Object Open Programming.
a. Object Oriented Programming.

Tính đóng gói là:


b. Cơ chế chia chương trình thành các phương thức và thủ tục thực hiện các chức năng
riêng rẽ.
c. Cơ chế không cho phép các thành phần khác truy cập đến bên trong nó.
d. Cơ chế cho thấy một phương thức có thể có nhiều thể hiện khác nhau ở từng thời
điểm.
1
a. Cơ chế ràng buộc dữ liệu và thao tác trên dữ liệu đó thành một thể thống nhất, tránh
được các tác động bất ngờ từ bên ngoài. Thể thống nhất này gọi là đối tượng.
Tính kế thừa là:
d. Tất cả các đáp án đều đúng.
c. Khả năng sử dụng lại các kiểu dữ liệu đã xây dựng.
b. Khả năng sử dụng lại các phương thức đã xây dựng.
a. Khả năng xây dựng các lớp mới từ các lớp cũ, lớp mới được gọi là lớp dẫn xuất, lớp
cũ được gọi là lớp cơ sở.

Tính đóng gói là:


b. Inheritance
d. Abstraction
c. Polymorphism
a. Encapsulation

Tính trừu tượng là:


a. Encapsulation
b. Inheritance
c. Polymorphism
d. Abstraction

Tính kế thừa là:


d. Abstraction
a. Encapsulation
c. Polymorphism
b. Inheritance

2
Tính đa hình là:
d. Abstraction
a. Encapsulation
b. Inheritance
c. Polymorphism

Trong kế thừa, lớp mới có thuật ngữ tiếng Anh là:


c. Inheritance class
b. Base class
d. Object class
a. Derived class

Trong kế thừa, lớp cha có thuật ngữ tiếng Anh là:


a. Derived class
c. Inheritance class
d. Object class
b. Base class

Tính đa hình là:


c. Khả năng một phương thức, thủ tục có thể được kế thừa lại.
b. Khả năng một thông điệp có thể được truyền lại cho lớp con của nó.
d. Khả năng một phương thức, thủ tục được sử dụng lại.
a. Khả năng một thông điệp có thể thay đổi cách thể hiện của nó theo lớp cụ thể của
đối tượng được nhận thông điệp.

3
Lớp đối tượng là:
b. Một thể hiện cụ thể cho các đối tượng.
a. Một thiết kế hay mẫu cho các đối tượng cùng kiểu.
c. Tập các phần tử cùng loại.
d. Tập các giá trị cùng loại.

Sau khi khai báo và xây dựng thành công lớp Sinh viên, lớp Sinh viên còn được gọi là:
c. Kiểu dữ liệu cơ bản.
d. Lớp đối tượng cơ sở.
a. Đối tượng.
b. Kiểu dữ liệu trừu tượng.

Trong các phương án sau, phương án nào mô tả đối tượng:


d. Máy tính.
c. Xe đạp.
b. Quả cam.
a. Tất cả các đáp án đều đúng.

Muốn lập trình hướng đối tượng, chúng ta cần phải phân tích chương trình, bài toán
thành _______.
b. các module
a. các phương thức, thủ tục
d. các thông điệp
c. các đối tượng, từ đó xây dựng các lớp đối tượng tương ứng

Trong các phương án sau, phương án mô tả tính đa hình là:

4
d. Lớp Điểm, Hình tròn cùng có phương thức khởi tạo, phương thức hủy.
b. Lớp Hình tròn kế thừa lớp Điểm.
c. Lớp Hình vuông kế thừa lớp Hình chữ nhật.
a. Các lớp Điểm, Hình tròn, Hình vuông, Hình chữ nhật,… đều có phương thức Vẽ.

Phương pháp lập trình tuần tự là:


a. Phương pháp lập trình với cách liệt kê các lệnh kế tiếp.
c. Phương pháp lập trình được cấu trúc nghiêm ngặt với cấu trúc dạng module.
b. Phương pháp lập trình với việc cấu trúc hóa dữ liệu và cấu trúc hóa chương trình để
tránh các lệnh nhảy.
d. Phương pháp xây dựng chương trình ứng dụng theo quan điểm dựa trên các cấu
trúc dữ liệu trừu tượng, các thể hiện cụ thể của cấu trúc và quan hệ giữa chúng.

Phương pháp lập trình cấu trúc là:


c. Phương pháp lập trình được cấu trúc nghiêm ngặt với cấu trúc dạng module.
d. Phương pháp xây dựng chương trình ứng dụng theo quan điểm dựa trên các cấu
trúc dữ liệu trừu tượng, các thể hiện cụ thể của cấu trúc và quan hệ giữa chúng..
b. Phương pháp lập trình với việc cấu trúc hóa dữ liệu và cấu trúc hóa chương trình để
tránh các lệnh nhảy.
a. Phương pháp lập trình với cách liệt kê các lệnh kế tiếp.

Khi khai báo và xây dựng thành công lớp đối tượng, để truy cập vào thành phần của
lớp, chúng ta ________
b. chỉ có thể truy cập thông qua tên đối tượng của lớp.
b. không thể truy cập được.
c. chỉ có thể truy cập thông qua tên lớp.
a. truy cập thông qua tên lớp hay tên đối tượng của lớp.

5
Phương pháp lập trình module là:
d. Phương pháp xây dựng chương trình ứng dụng theo quan điểm dựa trên các cấu
trúc dữ liệu trừu tượng, các thể hiện cụ thể của cấu trúc và quan hệ giữa chúng..
b. Phương pháp lập trình với việc cấu trúc hóa dữ liệu và cấu trúc hóa chương trình để
tránh các lệnh nhảy.
c. Phương pháp lập trình được cấu trúc nghiêm ngặt với cấu trúc dạng module.
a. Phương pháp lập trình với cách liệt kê các lệnh kế tiếp.

Khi khai báo và xây dựng một lớp, chúng ta cần phải xác định rõ _______.
d. vô số thành phần
c. khái niệm và đối tượng của lớp
a. thuộc tính (dữ liệu) và phương thức (hành vi) của lớp
b. dữ liệu và đối tượng của lớp

Chọn câu phát biểu đúng:


a. Tại chương trình chính chỉ có thể truy cập đến thành phần public của lớp.
d. Tại chương trình chính không thể truy cập đến thành phần nào của lớp.
b. Tại chương trình chính chỉ có thể truy cập đến thành phần private của lớp.
c. Tại chương trình chính có thể truy cập đến bất kì thành phần nào của lớp.

Cho đoạn chương trình sau:


class A
{
private int x;
public int y;
}
class Program
{
static public void Main()
{
A obj1 = new A();
6
obj1.x = 10;
obj1.y = 8;
}
}

Đoạn chương trình bị lỗi tại:


c. Lỗi tại dòng lệnh A obj1 = new A();
b. Lỗi tại dòng lệnh obj1.y = 8;
d. Lỗi tại dòng lệnh private int x;
a. Lỗi tại dòng lệnh obj1.x = 10;

Cho đoạn chương trình sau:


class A
{
private int x;
public int y;
}
class Program
{
static public void Main()
{
A obj1 = new A();
obj1.x = 10;
obj1.y = 8;
}
}

Đoạn chương trình bị lỗi tại dòng lệnh obj1.x = 10;


Nguyên nhân của lỗi này là:
c. Không xác định được giá trị x.
a. Không thể truy cập vào thành phần private của lớp.
b. Chưa khai báo x.
d. Phải gọi thông qua tên lớp, không được gọi thông qua tên đối tượng.

Khi khai báo lớp trong ngôn ngữ lập trình hướng đối tượng C# phải sử dụng từ khóa:
b. enum
c. struct

7
d. class
a. object

Thành phần private của lớp là thành phần:


a. Không cho phép truy xuất từ bên ngoài của lớp, chỉ có các phương thức bên trong
lớp mới có thể truy xuất được.
d. Cho phép truy xuất từ bên ngoài lớp và cho phép kế thừa.
c. Cho phép truy xuất từ bên ngoài lớp.
b. Không cho phép truy xuất từ bên ngoài của lớp nhưng cho phép lớp kế thừa truy
xuất tới.

Thành phần protected của lớp là thành phần:


d. Cho phép truy xuất từ bên ngoài lớp và cho phép kế thừa.
c. Cho phép truy xuất từ bên ngoài lớp.
b. Không cho phép truy xuất từ bên ngoài của lớp nhưng cho phép lớp kế thừa truy
xuất tới.
a. Không cho phép truy xuất từ bên ngoài của lớp, chỉ có các phương thức bên trong
lớp mới có thể truy xuất được.

Thành phần public của lớp là thành phần:


b. Không cho phép truy xuất từ bên ngoài của lớp nhưng cho phép lớp kế thừa truy
xuất tới.
d. Cho phép truy xuất từ bên trong và ngoài lớp và cho phép kế thừa.
a. Không cho phép truy xuất từ bên ngoài của lớp, chỉ có các phương thức bên trong
lớp mới có thể truy xuất được.
c. Cho phép truy xuất từ bên ngoài lớp.

Phương thức thành viên (phương thức) của lớp:


8
d. Tất cả những phương thức được khai báo và xây dựng bên trong lớp mô tả các dữ
liệu của đối tượng.
b. Tất cả các phương thức được sử dụng trong lớp.
c. Tất cả những phương thức trong chương trình có sử dụng lớp.
a. Tất cả các phương thức được khai báo bên trong lớp, xây dựng bên trong hay bên
ngoài lớp thể hiện các hành vi của đối tượng.

Trong một chương trình có thể xây dựng tối đa bao nhiêu lớp?
d. 3 lớp.
b. 1 lớp duy nhất.
a. Không hạn chế, tùy thuộc vào bộ nhớ.
c. 10 lớp.

Phương thức thành viên của lớp khác phương thức thông thường là:
b. Phương thức thành viên của lớp và phương thức thông thường không có gì khác
nhau.
d. Phương thức thành viên của lớp thì phải khai báo bên trong lớp với từ khóa method
và xây dựng bên ngoài lớp.
c. Phương thức thành viên của lớp thì phải được khai báo và xây dựng bên trong lớp
còn phương thức thông thường thì không.
a. Phương thức thành viên của lớp phải được khai báo bên trong lớp và được gọi thông
qua tên đối tượng hay tên lớp còn phương thức thông thường thì không.

Thuộc tính của lớp là _______.


b. liên quan tới những thứ mà đối tượng có thể làm
c. những chức năng của đối tượng
d. Tất cả các đáp án đều sai.
a. dữ liệu trình bày các đặc điểm của một đối tượng
9
Phương thức của lớp là ________.
a. dữ liệu trình bày các đặc điểm của một đối tượng
d. Tất cả các đáp án đều đúng.
b. liên quan tới những thứ mà đối tượng có thể làm. Một phương thức đáp ứng một
chức năng tác động lên dữ liệu của đối tượng
c. những gì thể hiện của đối tượng đối với bên ngoài

Người ta cần quản lý thông tin sinh viên trên máy tính, hãy cho biết các thuộc tính của
lớp Sinh viên là:
c. Họ và tên, ngày sinh, giới tính, địa chỉ, số CCCD, quê quán, lớp học, khóa học, khoa
quản lý.
a. Họ và tên, ngày sinh, giới tính, địa chỉ, số CCCD, quê quán.
b. Họ và tên, ngày sinh, giới tính, địa chỉ, số CCCD, quê quán, nhóm máu, màu mắt, màu
da, cân nặng.
d. Tất cả các đáp án đều sai.

Cho lớp Điểm trong hệ tọa độ xOy. Các phương thức có thể có của lớp Điểm là:
a. Dịch chuyển, Thiết lập tọa độ.
c. Tung độ, Hoành độ, Cao độ.
d. Tung độ, Cao độ.
b. Tung độ, Hoành độ.

Lập trình hướng đối tượng:


e. Dữ liệu hay các phương thức mới có thể được thêm vào khi cần.
c. Các chương trình được chia thành các đối tượng.
d. Dữ liệu được che giấu và không thể được truy xuất từ các phương thức bên ngoài.

10
b. Tập trung vào dữ liệu hơn là thủ tục.
a. Tất cả các đáp án đều đúng.

Lời gọi phương thức thành viên của lớp là ________.


b. Tên_lớp.Tên_phương thức_thành_viên
d. Đáp án a và b đều đúng.
c. Tên_lớp:Tên_phương thức_thành_viên
a. Tên_đối_tượng.Tên_phương thức_thành_viên

Trong C#, khi khai báo thành phần thuộc tính và phương thức của lớp, nếu không khai
báo từ khóa private, public hay protected thì mặc định sẽ là:
a. private
c. protected
d. Chương trình sẽ lỗi và yêu cầu phải khai báo một trong 3 từ khóa.
b. public

Đoạn chương trình sau:


class A
{
private int x;
public void nhap();
}
class Program
{
static public void Main()
{
A obj1 = new A();
obj1.nhap();
}
}

b. Chương trình không có lỗi.


a. Chương trình báo lỗi do không định nghĩa nội dung của phương thức nhap().
c. Không đươc phép truy cập đến phương thức nhap().

11
d. Chương trình báo lỗi do không khai báo biến x.

Trong lập trình hướng đối tượng, khả năng các phương thức có thể trùng tên nhau
được gọi là:
c. Nạp chồng phương thức nhưng chỉ những phương thức thành viên của lớp mới được
phép nạp chồng.
b. Nạp chồng phương thức.
d. Nạp chồng phương thức nhưng chỉ các phương thức thông thường mới được phép
nạp chồng.
a. Không được phép xây dựng các phương thức trùng tên nhau trong cùng một chương
trình.

Phân tích mối quan hệ giữa lớp Điểm và lớp Hình tròn, chúng ta có thể xác định:
c. Không có quan hệ gì.
d. Lớp Hình tròn dẫn xuất ra lớp Điểm.
b. Lớp Điểm kế thừa lớp Hình tròn.
a. Lớp Hình tròn kế thừa lớp Điểm.

Phương thức khởi tạo (constructor) trong ngôn ngữ C#:


d. Xây dựng bên trong lớp.
b. Có đối số hoặc không có đối số.
c. Tự động được gọi tới khi khai báo đối tượng của lớp.
a. Có tên trùng với tên lớp.
e. Tất cả các đáp án đều đúng.

Cho đoạn chương trình sau:


class A
{

12
private int x, y;
public A(int x = 0, int y = 0)
{ }
public void xuat()
{ }
~A()
{ }
}

A(int x = 0, int y = 0) được gọi là:


c. Phương thức ảo.
a. Phương thức khởi tạo.
d. Phương thức thông thường.
b. Phương thức hủy.

Phương thức hủy trong ngôn ngữ C# có cú pháp:


a. ~Tên_lớp{ //nội dung}
d. Done {//nội dung}
b. Destructor Tên_phương thức {//nội dung}
c. Tên_lớp{//nội dung}

Cho đoạn chương trình


class A
{
private int x, y;
}

Thực hiện nhiệm vụ:


a. Khai báo A là một lớp với hai thành phần thuộc tính là x, y kiểu số nguyên.
d. Khai báo lớp A với hai thành phần thuộc tính x, y kiểu số nguyên cho phép truy cập
từ bên ngoài lớp.
c. Đoạn chương trình trên bị lỗi.
b. Khai báo A là một đối tượng với hai thành phần thuộc tính x, y kiểu số nguyên.

13
Cho khai báo sau:
class Diem
{
private int x, y;
public void Nhap()
{ }
public void Xuat()
{ }
}

x, y được gọi là:


a. Thuộc tính của lớp Diem
b. Phương thức của lớp Diem
d. Thành viên tĩnh của lớp Diem
c. Các phương thức thành viên của lớp Diem

Cho khai báo sau:


class Diem
{
private int x, y;
public void Nhap()
{ }
public void Xuat()
{ }
}

Nhap, Xuat được gọi là:


c. Các phương thức ảo của lớp Diem
b. Thuộc tính của lớp Diem
d. Tất cả các đáp án đều đúng
a. Các phương thức của lớp Diem

Cho đoạn chương trình sau:


class Diem
{
float x, y;
}

14
class Doanthang
{
Diem A, B;
}

Lớp Doanthang được gọi là:


b. Lớp cha của lớp Diem
a. Lớp chứa của lớp Diem
d. Lớp thành phần của lớp Diem
c. Lớp con của lớp Diem

Lớp chứa là:


d. Tất cả các đáp án đều sai.
a. Lớp có thành phần thuộc tính là đối tượng của lớp khác.
b. Lớp kế thừa lớp khác.
c. Lớp dẫn xuất ra lớp khác.

Phương thức khởi tạo là __________


c. phương thức dùng để khởi tạo bộ nhớ cho đối tượng của lớp.
d. phương thức dùng để hủy bộ nhớ cho đối tượng.
b. phương thức nằm bên ngoài lớp, dùng để khởi tạo bộ nhớ cho đối tượng.
a. phương thức thành viên của lớp, dùng để khởi tạo bộ nhớ và giá trị ban đầu cho các
thuộc tính trong lớp.

Phương thức hủy là _________


d. Tất cả các đáp án đều đúng.
a. phương thức dùng để giải phóng bộ nhớ cho các thành phần thuộc tính bên trong
lớp.
c. phương thức dùng để giải phóng toàn bộ các biến của chương trình.

15
b. phương thức dùng để khởi tạo giá trị ban đầu cho các thành phần thuộc tính bên
trong lớp.

Phương thức khởi tạo sao chép là phương thức _______


a. Tất cả các đáp án đều đúng.
d. sẽ được chương trình tự sinh ra nếu không được xây dựng sẵn.
c. dùng để tạo một đối tượng mới theo đối tượng đã có.
b. thành viên của lớp.

Cho đoạn chương trình sau:


class Sinh_vien
{
private int mssv;
private string hoten;
private char ngaysinh;
private int gioitinh;
}

Để khai báo một mảng gồm 10 sinh viên chúng ta có thể sử dụng câu lệnh khai báo:
b. Sinh_vien() ds = new Sinh_vien(10);
a. Sinh_vien[] ds = new Sinh_vien[10];
d. Sinh_vien[10] ds;
c. Không thể khai báo mảng các đối tượng.

Lời gọi phương thức khởi tạo:


a. Tên_đối_tượng.Tên_phương_thức
d. Tất cả các đáp án đều sai.
b. Không cần phải gọi phương thức khởi tạo vì ngay khi khai báo đối tượng, chương
trình sẽ tự gọi phương thức khởi tạo
c. Tên_lớp.Tên_phương thức_khởi_tạo

16
Một người cần xây dựng lớp Thời gian (Timer) trong máy tính để hiển thị thông tin như
sau: giờ:phút:giây. Vậy các thuộc tính cần xây dựng cho lớp Timer là:
a. Giờ, Phút, Giây.
b. Giờ
d. Giây
c. Phút

Trong kế thừa, có thể:


b. Kế thừa tất cả các phương thức thuộc tính khai báo trong phần protected, public, và
bao gồm phương thức khởi tạo, phương thức hủy.
a. Kế thừa tất cả các phương thức thuộc tính khai báo trong phần protected, public và
không kế thừa phương thức khởi tạo, phương thức hủy.
d. Kế thừa tất cả các phương thức thuộc tính khai báo trong phần protected, public,
private và không kế thừa phương thức khởi tạo, phương thức hủy.
c. Kế thừa tất cả các phương thức thuộc tính khai báo trong phần protected, public,
private và bao gồm phương thức khởi tạo, phương thức hủy.

Các phương thức khởi tạo có thể có là:


c. Phương thức khởi tạo mặc định; Phương thức khởi tạo có đối số.
d. Phương thức khởi tạo mặc định; Phương thức khởi tạo sao chép.
b. Phương thức khởi tạo mặc định; Phương thức khởi tạo có đối số; Phương thức khởi
tạo sao chép.
a. Phương thức khởi tạo mặc định; Phương thức khởi tạo có đối số; Phương thức khởi
tạo sao chép; Phương thức khởi tạo bộ nhớ.

Cho khai báo sau:


int trituyetdoi(int a); //tính trị tuyệt đối số kiểu int
long trituyetdoi(long a); //tính trị tuyệt đối số kiểu long

17
double trituyetdoi(double a); //tính trị tuyệt đối số kiểu double

Khai báo trên thể hiện:


d. Tính chất trừu tượng.
b. Tính chất nạp chồng của dữ liệu.
a. Tính chất nạp chồng phương thức.
c. Tính chất đa hình.

Lời gọi phương thức ảo là:


a. Gọi như phương thức thông thường.
b. Gọi kèm từ khóa virtual.
d. Phải gọi thông qua con trỏ đối tượng.
c. Không thể gọi phương thức ảo.

Hãy chọn phát biểu sai:


d. Phương thức hủy và phương thức khởi tạo đều không có tính chất kế thừa.
c. Có hai loại phương thức khởi tạo, có đối số và mặc định.
b. Có duy nhất một loại phương thức hủy.
a. Có hai loại phương thức hủy, có đối số và không đối số.

Trong khai báo sau đây:


class Diem //(1)
{ //(2)
private int x, y; //(3)
public void Diem(int x, int y) { } //(4)
public void ~Diem() { } //(5)
} //(6)

Lỗi phát sinh tại:


d. Dòng 3 và 5
c. Dòng 3 và 4

18
b. Dòng 3 và 5
a. Dòng 4 và 5

Trong khai báo sau:


class Diem
{ //(1)
private int x, y; //(2)
} //(3)
class Hinhtron : Diem //(4)
{
private double r; //(5)
}

Câu lệnh khai báo tại dòng số 4 cho biết:


c. Lớp Hinhtron là lớp thành phần của lớp Diem.
d. Lớp Hinhtron là lớp chứa của lớp Diem.
a. Lớp Hinhtron kế thừa lớp Diem.
b. Lớp Diem kế thừa lớp Hinhtron.

Cho đoạn chương trình sau:


class A
{
private int x, y;
}

Nếu lớp B kế thừa lớp A thì lớp B có thể truy cập vào các thành phần x, y của lớp A.
a. Sai
b. Đúng

Cho đoạn chương trình sau:


class A
{
private int x, y;
void Nhap() { }
19
}

Cho lớp B kế thừa lớp A, để lớp B có thể truy cập đến phương thức Nhap chúng ta phải:
a. Khai báo phương thức Nhap của lớp A là public hoặc protected.
b. Không cần phải thay đổi gì.
d. Tất cả các đáp án đều sai.
c. Không thể truy cập được dù có thay đổi gì.

Khi nạp chồng các phương thức thì điều kiện khác nhau giữa các phương thức sẽ là:
a. Tên phương thức phải khác nhau.
b. Kiểu dữ liệu trả về của phương thức.
e. Các đáp án b, c và d đều đúng.
c. Kiểu dữ liệu của tham số truyền vào của phương thức.
d. Số lượng tham số truyền vào các phương thức.

Trong một lớp có thể có:


a. Nhiều phương thức khởi tạo, các phương thức khởi tạo khác nhau về đối số.
b. Một phương thức khởi tạo.
c. Hai phương thức khởi tạo.
d. Tất cả các đáp án đều sai.

Trong một lớp có thể có ________


a. duy nhất một phương thức hủy.
c. ba phương thức hủy.
b. hai phương thức hủy.
d. vô số phương thức hủy tùy theo bộ nhớ.

20
Trong khái niệm kế thừa, số lượng cấp mà một lớp có thể kế thừa tối đa là:
a. Vô số cấp, tùy theo bộ nhớ.
c. Hai cấp.
b. Một cấp.
d. Ba cấp.

Cho lớp A và lớp B, lớp A kế thừa lớp B và trong hai lớp đều có phương thức Xuat().
Nếu khai báo đối tượng obj thuộc lớp A khi gọi đến phương thức obj.Xuat() là gọi đến
phương thức của lớp nào?
c. Lỗi do không thể xác định được.
a. Lớp A.
d. Gọi đến cả hai phương thức.
b. Lớp B.

Trong kế thừa đa cấp:


b. Không cho phép trùng tên phương thức và thuộc tính.
d. Cho phép trùng tên thuộc tính, không cho phép trùng tên phương thức.
c. Cho phép trùng tên phương thức, không cho phép trùng tên thuộc tính.
a. Cho phép trùng tên cả phương thức lẫn thuộc tính.

Cho đoạn chương trình sau:


class A
{
public void Xuat() { }
}
class B : A
{
public void Xuat() { }
}
class Program
{

static public void Main()

21
{
B O = new B();
}
}

Nếu gọi O.Xuat(); thì sẽ:


a. Gọi đến phương thức Xuat() thuộc lớp B.
c. Gọi đến phương thức Xuat() thuộc lớp A.
b. Lỗi.
d. Gọi đến cả hai phương thức.

22
Lớp cơ sở trừu tượng:
a. là lớp làm cơ sở cho các lớp khác và không được dẫn xuất từ bất kì lớp nào.
d. là lớp được xây dựng đầu tiên trong chương trình.
c. là lớp không làm cơ sở cho bất kỳ lớp nào mà chỉ kế thừa các lớp khác.
b. là lớp cơ sở cho lớp khác.

Thành viên tĩnh (static) của lớp _________


c. được cấp phát bộ nhớ ngay cả khi lớp chưa có đối tượng cụ thể nào.
d. Tất cả các đáp án đều đúng.
b. là thành viên dùng chung cho tất cả các đối tượng của lớp, không của riêng đối tượng
nào.
a. là thành viên của lớp được khai báo với từ khóa static ở trước.

Khai báo các phương thức trong lớp cơ sở trừu tượng phải _______
d. Tất cả các phương án đều đúng.
a. là phương thức trừu tượng thuần túy.
b. được khai báo với cú pháp:
public abstract <void|kiểu_dữ _liệu> tên_phương_thức(tham số);

c. không được định nghĩa nội dung.

Khai báo phương thức ảo:


a. Giống khai báo phương thức thường theo sau là từ khóa virtual.
d. Giống khai báo phương thức thường nhưng không cần phải xây dựng nội dung.
c. Giống khai báo phương thức thường nhưng phải được xây dựng bên trong lớp.
b. Giống khai báo phương thức thường nhưng đứng đầu là từ khóa virtual.

23
Cho biết cách khai báo phương thức ảo trong C# nào sau đây là đúng:
c. <void|kiểu_dữ_liệu> virual Tên_phương_thức ([các tham số]);
a. <void|kiểu_dữ_liệu> Tên_phương_thức ([các tham số]) virual;
d. <void|kiểu_dữ_liệu> Tên_phương_thức (virual [các tham số]);
b. virual <void|kiểu_dữ_liệu> Tên_phương_thức ([các tham số]);

Cho đoạn chương trình sau:


class A
{
private int x, y;
public virtual void Xuat() { }
}

Hãy nhận định phát biểu đúng:


d. Xuat() là một phương thức hủy.
c. Xuat() là một phương thức khởi tạo.
b. Lỗi tại dòng virtual void Xuat() {}
a. Xuat() là một phương thức ảo.

Số lượng phương thức ảo mà một lớp có thể có tối đa:


d. Không xác định được.
a. Vô số phương thức ảo.
c. Hai phương thức ảo.
b. Một phương thức ảo.

Cho đoạn chương trình sau:


using System;
class A
{
int x, y;
public void Nhap() { }
public void Xuat() { }
}

24
class B : A
{
private float z;
}
class Program
{
static public void Main()
{
A A1 = new A();
B B1 = new B();
A1 = B1;
B1 = A1;
}
}

Hãy cho biết đoạn chương trình trên lỗi tại đâu?
c. Tại dòng lệnh class B : A
d. Không lỗi tại dòng nào cả.
a. Tại câu lệnh B1 = A1;
b. Tại câu lệnh A1 = B1;

Cho biết ví dụ nào sau đây thể hiện tính kế thừa?


d. Điểm và Hình tròn.
c. Hình bình hành và Hình chữ nhật.
e. Giáo viên và Giáo viên giỏi.
b. Xe đạp và Xe đạp đua.
a. Tất cả các đáp án đều đúng.

Cú pháp khai báo kế thừa trong C# sử dụng:


a. extends
c. :
b. inheritance
d. Tất cả các đáp án đều sai.

25
Cho đoạn chương trình sau:
class Trai_cay
{
private string mauvo;
string mauhat;
string hinhdang;
public void Hienthi() { }
}

Cần xây dựng lớp Trai_dua_hau, hãy xác định mối quan hệ giữa lớp Trai_cay và lớp
Trai_dua_hau là:
b. Trai_dua_hau là lớp cha của lớp Trai_cay
d. Trai_dua_hau là lớp chứa của lớp Trai_cay
c. Trai_cay và Trai_dua_hau là lớp không có quan hệ với nhau.
a. Trai_cay là lớp cha của lớp Trai_dua_hau.

Cho đoạn chương trình sau:


abstract class Trai_cay
{
private string mauvo;
string mauhat;
string hinhdang;
public abstract void Hienthi();
}

Lớp Trai_cay với khai báo như trên được gọi là lớp:
a. Lớp cơ sở trừu tượng.
c. Lớp chứa.
d. Lớp dẫn xuất ảo.
b. Lớp cơ sở ảo.

Cho lớp Tam giác tạo bởi ba điểm A, B, C. Quan hệ giữa lớp Tam giác và lớp Điểm là:
b. Tam giác là lớp con của lớp Điểm.
c. Tam giác là lớp cha của lớp Điểm.
d. Tam giác là lớp thành phần của lớp Điểm.

26
a. Tam giác là lớp chứa của lớp Điểm.

Cho lớp Đường thẳng tạo bởi 2 điểm A, B. Quan hệ giữa lớp Đường thẳng và lớp Điểm
là:
a. Đường thẳng là lớp chứa của lớp Điểm.
d. Đường thẳng là lớp thành phần của lớp Điểm.
c. Đường thẳng là lớp cha của lớp Điểm.
b. Đường thẳng là lớp con của lớp Điểm.

Cần xây dựng lớp Đường thẳng y = ax + b. Thuộc tính của lớp Đường thẳng này được
xác định là:
a. Các hệ số a, b.
c. Các hệ số a, b, x, y.
b. Các hệ số x, y.
d. Các hệ số a, x, b.

Xây dựng lớp Hình chữ nhật tạo bởi hai cạnh a, b. Để khai báo phương thức khởi tạo
với tham số mặc định ta khai báo:
a. Hinhchunhat(float a = 1, float b = 1);
c. Hinhchunhat();
d. Hinhchunhat(const Hinhchunhat &H);
b. Hinhchunhat(float a, float b);

Một người nông dân thuộc quốc tịch Mỹ cả đời làm ra được khối tài sản tương ứng 10
triệu đô la. Để sinh tồn và làm việc ông tiêu tốn một khoản tiền tương ứng là 3 triệu
đô; số tiền cũng như đất đai ông để lại cho con cháu là 5 triệu đô; 2 triệu đô còn lại là
số mà ông đã và dự định làm từ thiện chi phí không mục đích với bạn bè. Như vậy ta
có thể coi:

27
a. Thông tin 3 triệu đô thuộc phạm vi private.
d. Tất cả các đáp án đều đúng.
c. Thông tin 2 triệu đô thuộc phạm vi public.
b. Thông tin 5 triệu đô thuộc phạm vi protected.

Để quản lý các phương tiện giao thông đường bộ người ta xây dựng hệ thống các lớp
đối tượng gồm: lớp xe đạp, lớp xe máy, lớp ô tô con, lớp xe tải. Sau quá trình phân tích
nhận thấy rằng các lớp đối tượng trên cùng có các đặc điểm như sau: Tải_trọng,
loại_động_cơ, Biển_số và đều di chuyển từ điểm a đến điểm b. Người ta xây dựng lớp
PT_Giao_Thông làm:

b. Lớp cơ sở cho các lớp đối tượng trên.


a. Lớp dẫn xuất cho các lớp đối tượng trên.
d. Lớp thành phần của các lớp đối tượng trên.
c. Lớp chứa của các lớp đối tượng trên.

Để quản lý các phương tiện giao thông đường bộ người ta xây dựng hệ thống các lớp
đối tượng gồm: lớp xe đạp, lớp xe máy, lớp ô tô con, lớp xe tải. Sau quá trình phân tích
nhận thấy rằng các lớp đối tượng trên cùng có các đặc điểm như sau: Tải_trọng,
loại_động_cơ, Biển_số và đều di chuyển từ điểm a đến điểm b. Người ta xây dựng lớp
PT_Giao_Thông làm lớp cơ sở cho các lớp đối tượng trên và lớp này gồm các thuộc tính
là:

28
d. Tải_trọng, Loại_động_cơ, Loại_phương_tiện, Biển_số, Di_chuyển.
e. Tải_trọng, Loại_động_cơ, Biển_số.
b. Tải_trọng, Loại_động_cơ, Loại_phương_tiện, Biển_số.
a. Tải_trọng, Loại_động_cơ, Biển_số, Di_chuyển.
c. Tải_trọng, Loại_động_cơ, Di_chuyển.

Để quản lý các phương tiện giao thông đường bộ người ta xây dựng hệ thống các lớp
đối tượng gồm: lớp xe đạp, lớp xe máy, lớp ô tô con, lớp xe tải. Sau quá trình phân tích
nhận thấy rằng các lớp đối tượng trên cùng có các đặc điểm như sau: Tải_trọng,
loại_động_cơ, Biển_số và đều di chuyển từ điểm a đến điểm b. Người ta xây dựng lớp
PT_Giao_Thông làm lớp cơ sở cho các lớp đối tượng trên và lớp này gồm các phương
thức là:

c. Loại_phương_tiện, Di_chuyển.
e. Tải_trọng, Loại_động_cơ, Biển_số.
a. Di_chuyển.

29
d. Tải_trọng, Loại_động_cơ, Loại_phương_tiện, Biển_số, Di_chuyển.
b. Tải_trọng, Loại_động_cơ, Loại_phương_tiện, Biển_số.

Người ta cần quản lý thông tin của công dân để triệu gọi nhập ngũ khi đến thời điểm,
biết rằng điều kiện nhập ngũ là nam giới từ 18 tuổi trở lên không đang theo học tại bất
kỳ trường đại học, cao đẳng nào. Phân tích bài toán cho thấy, cần phải xây dựng:
b. Lớp Công dân và lớp Công dân nam nhập ngũ.
a. Lớp Công dân và lớp Công dân nhập ngũ.
c. Lớp Công dân.

Khi đưa các lớp thực tế vào quản lý trong máy tính ta nhận thấy mỗi đối tượng thực tế
có vô số thuộc tính nhưng với mỗi bài toán cụ thể ta chỉ xác định các lớp chỉ gồm một
số thuộc tính nhất định. Cách thức đó gọi là:
c. Tính đa hình.
d. Tính kế thừa.
b. Sự trừu tượng hóa chức năng.
a. Sự trừu tượng hóa dữ liệu.

Vào mỗi kỳ thi người ta cần lập ra danh thí sinh dự thi dựa theo danh sách sinh viên đủ
điều kiện dự thi của mỗi môn học, để thuận tiện xử lý người ta xây dựng lớp Thí sinh
dựa trên lớp Sinh viên với điều kiện là đủ điều kiện dự thi các môn học. Mối quan hệ
giữa lớp Sinh viên và lớp Thí sinh là:
b. Lớp Sinh viên là trường hợp đặc biệt hóa của lớp Thí sinh.
d. Tất cả các phương án đều sai.
a. Lớp Thí sinh là trường hợp đặc biệt hóa của lớp Sinh viên.
c. Lớp Thí sinh là trường hợp tổng quá của lớp Sinh viên.

Xây dựng lớp Điểm trong hệ tọa độ Oxyz các thuộc tính của lớp là:

30
d. Tất cả các đáp án đều sai.
a. Tung độ, Hoành độ, Cao độ.
c. Dịch chuyển.
b. Tung độ, Hoành độ, Cao độ, Dịch chuyển.

Vào mỗi kỳ thi người ta cần lập ra danh sách thí sinh dự thi dựa theo danh sách sinh
viên đủ điều kiện dự thi của mỗi môn học; Để thuận tiện xử lý, người ta xây dựng lớp
Thí sinh dựa trên lớp Sinh viên với điều kiện là đủ điều kiện dự thi các môn học. Người
ta phân tích thấy lớp Thí sinh là trường hợp đặc biệt của lớp Sinh viên vì vậy người ta
xây dựng:
a. Lớp Thí sinh kế thừa lớp Sinh viên.
b. Lớp Sinh viên kế thừa lớp Thí sinh.
c. Lớp Thí sinh là lớp chứa của lớp Sinh viên.
d. Lớp Sinh viên là lớp chứa của lớp Thí sinh.

31
Để xây dựng phương thức khởi tạo sao chép của lớp Diem trong C#, khai báo theo cú
pháp nào sau đây:
a. public Diem(Diem D)
c. public Diem(float x, float y)
d. public Diem(Diem D1, Diem D2)
b. private Diem(Diem D)

Để tính khoảng cách hai điểm trong lớp Điểm chúng ta xây dựng phương thức tính
khoảng cách hai điểm theo cú pháp sau: public float KC2D(Diem D). Lời gọi đến phương
thức để tính khoảng cách hai điểm là:
c. float kc = KC2D(D1, D2);
a. float kc = D1.KC2D(D2);
d. Tất cả các đáp án đều đúng.
b. KC2D(D1,D2);

Trong kế thừa, lớp dẫn xuất có thể kế thừa các phương thức và thuộc tính của lớp cơ
sở nhưng không:
c. Kế thừa toán tử.
a. Kế thừa phương thức khởi tạo, toán tử gán, phương thức hủy.
d. Tất cả các đáp án đều đúng.
b. Kế thừa phương thức hủy, toán tử gán.

Tính chất kế thừa chỉ ra rằng khi lớp A kế thừa lớp B thì:
c. Lớp A sẽ có toàn bộ những thành phần thuộc private, protected và public của lớp B.
a. Lớp A sẽ có toàn bộ những thành phần thuộc protected và public của lớp B.
b. Lớp B sẽ có toàn bộ những thành phần thuộc protected và public của lớp A.
d. Lớp A sẽ có toàn bộ những thành phần thuộc private và public của lớp B.

32
33
Trong lớp Phân số khai báo: Phanso(int ts = 0, int ms = 1) có ý nghĩa là:
d. Khai báo trên không thể tồn tại trong lớp Phanso.
c. Phương thức gán của lớp Phanso.
a. Phương thức khởi tạo có tham số mặc định của lớp Phanso.
b. Phương thức khởi tạo sao chép của lớp Phanso.

Hãy cho biết trong các ví dụ sau ví dụ nào thể hiện sự kế thừa:
d. Lớp Điểm và lớp Điểm màu.
a. Lớp Người và lớp Giáo Viên.
c. Lớp Xe và lớp Xe ô tô.
e. Tất cả các đáp án đều đúng.
b. Lớp Điểm và Hình tròn.

Khi xây dựng lớp, công việc cần làm là:


d. Tất cả các phương án đều đúng.
a. Xác định thành phần thuộc tính và phương thức của lớp đó.
b. Xác định thành phần private, public, protected.
c. Xác định kiểu dữ liệu của thuộc tính, kiểu trả về của phương thức.

Trường Đại học Bách khoa cần in giấy báo nhập học vào mỗi kỳ tuyển sinh, Trường đại
học Kinh tế quốc dân cũng in giấy báo nhập học, Trường đại học Kiến trúc cũng in giấy
báo nhập học, tuy nhiên 3 giấy báo nhập học này lại có thể có cấu trúc, nội dung, hình
thức khác nhau. Ví dụ này chứng tỏ tính ______.
b. Ảo của phương thức
c. Trừu tượng
a. Đa hình
d. Đóng gói
34
Một lớp có thể ________.
a. là lớp cơ sở của vô số lớp
b. là lớp thành phần của vô số lớp
c. là lớp dẫn xuất của vô số lớp
d. Tất cả các đáp án đều đúng.

Nạp chồng phương thức là _______


a. khả năng các phương thức có thể trùng tên nhưng khác nhau về: kiểu dữ liệu trả về
hoặc kiểu dữ liệu của tham số hoặc số lượng tham số truyền vào.
d. Tất cả các đáp án đều đúng.
b. khả năng các phương thức có thể trùng tên, trùng cả về: kiểu dữ liệu trả về, kiểu dữ
liệu của tham số, số lượng tham số truyền vào.
c. khả năng các phương thức có thể trùng tên nhưng khác nhau về: kiểu dữ liệu trả về
hoặc kiểu dữ liệu của tham số hoặc số lượng tham số truyền vào. Chỉ có thể nạp chồng
phương thức thành viên của lớp.

Xây dựng lớp Hinh_hoc là lớp cơ sở cho các lớp Hinh_vuong, Hinh_tron, Hinh_cn,
Hinh_tamgiac. Nhận thấy các lớp này đều có phương phương thức tính diện tích
D_Tich(). Tuy nhiên, cách tính diện tích của các phương thức D_Tich() ứng với các đối
tượng của các lớp dẫn xuất là khác nhau. Điều này thể hiện tính _______.
a. Đa hình
c. Trừu tượng
d. Đóng gói
b. Ảo của phương thức

Các lớp có thể kế thừa từ lớp Động vật là:


c. Lớp Cây cối

35
a. Lớp Con chó
d. Cả hai đáp án a và b đều đúng
b. Lớp Con mèo
Các lớp có thể kế thừa từ lớp Điện thoại:
b. Lớp Điện thoại LG
a. Lớp Iphone
d. Lớp Điện thoại cố định
e. Tất cả các đáp án đều đúng
c. Lớp Điện thoại di động

Bắt buộc phải xây dựng phương thức khởi tạo của lớp khi _______.
b. cần khởi gán giá trị ban đầu cho thành phần phương thức của lớp.
d. Không bắt buộc phải xây dựng phương thức khởi tạo.
a. cần khởi gán giá trị ban đầu cho thành phần thuộc tính của lớp.
c. cần truyền tham số cho phương thức thành viên của lớp.

Cho đoạn chương trình sau:


class Phanso
{
private int ts, ms;
public Phanso(int ts1, int ms1)
{
ts = ts1;
ms = ms1;
}
}
class Program
{
static void Main(string[] args)
{
Phanso P1 = new Phanso();
Phanso P2 = new Phanso(3, 4);
}
}

Câu lệnh khai báo và khởi tạo đối tượng Phanso P1 bị báo lỗi vì:
36
b. Chương trình trên không có lỗi do C# sẽ tự phát sinh phương thức khởi tạo không
đối số.
d. Tất cả các đáp án đều sai.
c. Không xác định được gọi tới phương thức khởi tạo nào.
a. Gọi tới phương thức khởi tạo mặc định mà chương trình lại không xây dựng.
Mối quan hệ giữa lớp Người và lớp Sinh viên là:
a. Lớp Người là lớp cơ sở cho lớp Sinh Viên.
d. Lớp Nguời là lớp thành phần của lớp Sinh Viên.
b. Lớp Người là lớp dẫn xuất của lớp Sinh Viên.
c. Lớp Người là lớp chứa của lớp Sinh Viên.

Mối quan hệ giữa lớp Môn Học và lớp Sinh viên là:
b. Lớp Môn Học là lớp dẫn xuất của lớp Sinh Viên.
d. Lớp Môn Học là lớp thành phần của lớp Sinh Viên.
c. Lớp Môn Học là lớp chứa của lớp Sinh Viên.
a. Lớp Môn Học là lớp cơ sở cho lớp Sinh Viên.

Khi xây dựng lớp đối tượng, các thuộc tính dữ liệu thông thường được khai báo:
c. private và protected
d. protected
a. private
b. public

Cho đoạn chương trình:


class Diem
{
float x, y;
public Diem() //phuong thuc khoi tao khong doi so

37
{
x = 0;
y = 0;
}
public Diem(float x, float y)//phuong thuc khoi tao co doi so
{
this.x = x;
this.y = y;
}
}
class HT : Diem
{
private float r;
public HT()
{
r = 1;
}
public HT(float x1, float y1, float r1)
{
r = r1;
}
}

Đoạn chương trình trên khi khai báo hình tròn (HT H1;) thì hình tròn H1 này chưa xác
định được tâm vì theo tính chất kế thừa không kế thừa phương thức khởi tạo ta phải
tự gọi phương thức khởi tạo của lớp cơ sở ở lớp dẫn xuất. Để xác định tâm cho hình
tròn H1 là (0,0) ta cần sửa lại:
a.
public HT() : base()
{
r = 1;
}

b.
public HT()
{
x = 0;
y = 0;
r = 1;
}
d. Tất cả các đáp án đều đúng.
c.
public HT()
{
Diem();
r = 1;
}

Để đưa đối tượng trong thực tế vào máy tính ta cần chú trọng đến tính _____
a. Trừu tượng dữ liệu và trừu tượng chức năng.
38
d. Đóng gói.
b. Đa hình.
c. Kế thừa.

Khi khai báo và xây dựng lớp, các thuộc tính của lớp thường được khai báo private,
điều này thể hiện đặc tính:
b. Trừu tượng.
d. Nạp chồng phương thức.
a. Đóng gói.
c. Đa hình.

Khi khai báo và xây dựng lớp, các phương thức thường được khai báo public để:
c. Thể hiện tính đa hình.
b. Thể hiện tính đóng gói.
a. Tương tác với các lớp hay môi trường bên ngoài.
d. Tương tác với các thuộc tính bên trong lớp.

Khi khai báo và xây dựng lớp, các thành phần được khai báo protected nhằm mục đích:
a. Cho phép kế thừa nhưng không cho phép tương tác trực tiếp từ bên ngoài lớp.
b. Cho phép kế thừa và cho phép tương tác trực tiếp từ bên ngoài lớp.
c. Chỉ cho phép kế thừa, ngay bên trong lớp đó cũng không truy cập được.

Cho đoạn chương trình sau, chọn nhận định đúng cho đoạn chương trình đã cho:
class Sample
{
private int i;
public float j;

private void DisplayData()


{
39
Console.WriteLine($"{i} {j}");
}
public void ShowData()
{
Console.WriteLine($"{i} {j}");
}
}

b. DisplayData() không thể truy cập vào j


d. Đoạn chương trình không lỗi
a. DisplayData() không thể được khai báo với từ khóa private
c. ShowData() không thể truy cập vào i

Khi khai báo các thành phần thuộc tính của lớp trong C#, đầu mỗi câu lệnh khai báo ta
thường khai báo:
d. Từ khóa region
a. Từ khóa private, public hay protected
c. Từ khóa properties
b. kiểu dữ liệu của thuộc tính

Cấu trúc thông thường của lớp trong C# là:


c. Khai báo các thuộc tính và các phương thức thiết lập, lấy giá trị của thuộc tính; Khai
báo và xây dựng các phương thức của lớp.
b. Khai báo các trường dữ liệu cần dùng; Khai báo các thuộc tính; Khai báo và xây dựng
các phương thức của lớp.
a. Khai báo các trường dữ liệu cần dùng; Khai báo các thuộc tính và các phương thức
thiết lập, lấy giá trị của thuộc tính; Khai báo và xây dựng các phương thức của lớp.
d. Khai báo các trường dữ liệu cần dùng; Khai báo các thuộc tính Khai báo các phương
thức của lớp.

Thông thường khi xây dựng lớp trong C#, với mỗi khai báo thuộc tính của lớp ta đều
xây dựng thêm hai phương thức set và get dùng để:

40
a. Thiết lập và lấy giá trị của thuộc tính đó.
d. Đây là cấu trúc yêu cầu của C# khi khai báo thuộc tính của lớp
c. Tất cả các đáp án đều đúng.
b. Tăng tính bảo mật dữ liệu của thuộc tính.

Cần in danh sách thí sinh dự thi theo phòng gồm các thông tin: SBD, Họ và tên, Ngày
sinh, Giới tính, Phòng thi, Giờ thi. Người ta xây dựng hai lớp đối tượng là lớp đối tượng
Thí sinh, lớp đối tượng Danh sách thí sinh theo phòng. Thuộc tính của lớp Danh sách
thí sinh có thể là:
a. Số lượng thí sinh, mảng các thí sinh.
d. Bao gồm tất cả các đáp án.
c. Mảng SBD, mảng Họ và tên, mảng Ngày sinh, mảng Giới tính, mảng Phòng thi, mảng
Giờ thi.
b. SBD, Họ và tên, Ngày sinh, Giới tính, Phòng thi, Giờ thi

Cần in danh sách thí sinh dự thi theo phòng gồm các thông tin: SBD, Họ và tên, Ngày
sinh, Giới tính, Phòng thi, Giờ thi. Người ta xây dựng hai lớp đối tượng là lớp đối tượng
Thí sinh, lớp đối tượng Danh sách thí sinh theo phòng. Thuộc tính của lớp Thí sinh là:
c. Mảng SBD, mảng Họ và tên, mảng Ngày sinh, mảng Giới tính, mảng Phòng thi, mảng
Giờ thi.
d. Bao gồm tất cả các đáp án.
a. Số lượng thí sinh, mảng các thí sinh.
b. SBD, Họ và tên, Ngày sinh, Giới tính, Phòng thi, Giờ thi.

Cần in danh sách thí sinh dự thi gồm các thông tin: SBD, Họ và tên, Ngày sinh, Giới tính,
Phòng thi, Giờ thi. Người ta xây dựng hai lớp đối tượng là lớp đối tượng Thí sinh, lớp
đối tượng Danh sách thí sinh theo phòng. Phương thức cần thiết theo yêu cầu của bài
toán cần phải xây dựng cho lớp Thí sinh là:
d. Tất cả các đáp án đều sai.

41
b. Phương thức hiển thị thông tin từng thí sinh.
c. Phương thức hiển thị, phương thức khởi tạo, phương thức nhập.
a. Phương thức nhập và hiển thị thông tin từng thí sinh.

Cần in danh sách thí sinh dự thi gồm các thông tin: SBD, Họ và tên, Ngày sinh, Giới tính,
Phòng thi, Giờ thi. Người ta xây dựng hai lớp đối tượng là lớp đối tượng Thí sinh, lớp
đối tượng Danh sách thí sinh theo phòng. Phương thức cần thiết theo yêu cầu của bài
toán cần phải xây dựng cho lớp Danh sách thí sinh là:
a. Phương thức nhập và hiển thị danh sách thí sinh
c. Phương thức hiển thị, phương thức khởi tạo, phương thức nhập
b. Phương thức hiển thị danh sách thí sinh
d. Tất cả các đáp án đều đúng.

Đoạn lệnh sau thể hiện tính chất nạp chồng phương thức.
void MyMethod(int p1) { }
void MyMethod(int p1, int p2) { }
void MyMethod(int p1, string p2) { }

b. Sai
a. Đúng

Cho đoạn chương trình khai báo như sau, việc sử dụng từ khóa static đứng trước khai
báo tongsohd, tongtienban có ý nghĩa:
class HDBH
{
private string tenHang;
private float giaTien;
static int tongsohd;
static float tongtienban;
}

c. Khai báo các thuộc tính ảo, dùng chung bộ nhớ với các đối tượng khác nhau.
b. Khai báo các thuộc tính tĩnh, dùng riêng bộ nhớ với các đối tượng khác nhau.
a. Khai báo các thuộc tính tĩnh, dùng chung bộ nhớ với các đối tượng khác nhau.

42
d. Khai báo các thuộc tính ảo, dùng riêng bộ nhớ với các đối tượng tham gia kế thừa.

Một bạn xây dựng lớp Số nguyên như sau, tại dòng số 4 bạn khai báo:
1 class SoNguyen
2 {
3 private int giatri;
4 public SoNguyen() { }
5 public SoNguyen(int n) { }
6 public SoNguyen(SoNguyen n) { }
7 public static SoNguyen operator +(SoNguyen a, SoNguyen b) { }
8 public static SoNguyen operator -(SoNguyen a, SoNguyen b) { }
9 public static SoNguyen operator *(SoNguyen a, SoNguyen b) { }
10 public static SoNguyen operator /(SoNguyen a, SoNguyen b) { }
11 }

d. Khai báo phương thức hiển thị giá trị của lớp Số nguyên.
a. Khai báo phương thức khởi tạo không tham số của lớp Số nguyên.
b. Khai báo thuộc tính của lớp Số nguyên.
c. Khai báo phương thức nhập giá trị của lớp Số nguyên.

Một bạn xây dựng lớp số nguyên như sau, tại dòng số 6 bạn khai báo:
1 class SoNguyen
2 {
3 private int giatri;
4 public SoNguyen() { }
5 public SoNguyen(int n) { }
6 public SoNguyen(SoNguyen n) { }
7 public static SoNguyen operator +(SoNguyen a, SoNguyen b) { }
8 public static SoNguyen operator -(SoNguyen a, SoNguyen b) { }
9 public static SoNguyen operator *(SoNguyen a, SoNguyen b) { }
10 public static SoNguyen operator /(SoNguyen a, SoNguyen b) { }
11 }

a. Khai báo phương thức khởi tạo sao chép của lớp Số nguyên.
d. Khai báo phương thức khởi tạo không tham số của lớp Số nguyên.
b. Khai báo thuộc tính của lớp Số nguyên.
c. Khai báo phương thức nhập giá trị của lớp Số nguyên.

43
Một bạn xây dựng lớp số nguyên như sau, cho biết việc thực hiện nạp chồng toán tử *
tại dòng số?
1 class SoNguyen
2 {
3 private int giatri;
4 public SoNguyen() { }
5 public SoNguyen(int n) { }
6 public SoNguyen(SoNguyen n) { }
7 public static SoNguyen operator +(SoNguyen a, SoNguyen b) { }
8 public static SoNguyen operator -(SoNguyen a, SoNguyen b) { }
9 public static SoNguyen operator *(SoNguyen a, SoNguyen b) { }
10 public static SoNguyen operator /(SoNguyen a, SoNguyen b) { }
11 }

c. 6
a. 9
b. 5
d. 10

Một bạn xây dựng lớp đường thẳng AX+BY+C=0 như sau, và bạn đó có xây dựng
phương thức khởi tạo cho lớp tại dòng số 4. Hãy xác định loại phương thức khởi tạo
mà bạn đó đã xây dựng:
1 class DuongThang
2 {
3 private float A, B, C;
4 public DuongThang(float A = 0, float B = 0, float C = 0) { }
5 public float hsgoc() { }
6 public float Kc2dth(DuongThang d) { }
7 public float Kc1d(float x, float y) { }
8 }

b. Phương thức khởi tạo sao chép.


d. Tất cả các đáp án đều sai.
c. Phương thức khởi tạo có tham số mặc định.
a. Phương thức khởi tạo không tham số.

Một bạn xây dựng lại lớp đường thẳng AX+BY+C=0 như trên, và bạn đó có xây dựng
phương thức khởi tạo cho lớp tại dòng số 4. Ta nhận thấy các tham số truyền vào có
tên trùng với tên thuộc tính của lớp (A,B,C). Để phân biệt chúng ta sử dụng:

44
1 class DuongThang
2 {
3 private float A, B, C;
4 public DuongThang(float A = 0, float B = 0, float C = 0) { }
5 public float hsgoc() { }
6 public float Kc2dth(DuongThang d) { }
7 public float Kc1d(float x, float y) { }
8 }

b. Không thể phân biệt được phải khai báo lại tên tham số truyền vào.
d. Tất cả các đáp án đều sai.
a. Con trỏ this.
c. Cứ viết như bình thường (A = A) chương trình tự xác định được.

Một bạn xây dựng lớp Ciclre (hình tròn) kế thừa lớp Point (điểm) như sau. Có ý kiến
cho rằng chương trình sẽ bị lỗi tại dòng số 4 vì chưa xây dựng lớp Point. Theo bạn nhận
xét này:
1 using System;
2 using PointClass;
3
4 class Circle : Point
5 {
6 private float r;
7 public Circle(float x = 0, float y = 0, float r = 1) { }
8 public float getR() { }
9 public void setR() { }
10 public float CV() { }
11 public float DT() { }
12 }
a. Nhận xét hoàn toàn đúng.
b. Chương trình không lỗi vì lớp Point đã được xây dựng trong namespace PointClass
ở dòng số 2.
c. Chương trình sẽ không lỗi dù lớp Point chưa được xây dựng.
d. Tất cả các đáp án đều sai.

Một bạn sinh viên xây dựng lớp Ciclre (hình tròn) kế thừa lớp Point (điểm) như trên.
Để xác định đường tròn cần một điểm (tâm) và bán kính, tuy nhiên khi khai báo hình
tròn bạn sinh viên này chỉ khai báo mỗi bán kinh r vì:
1 using System;
2 using PointClass;

45
3
4 class Circle : Point
5 {
6 private float r;
7 public Circle(float x = 0, float y = 0, float r = 1) { }
8 public float getR() { }
9 public void setR() { }
10 public float CV() { }
11 public float DT() { }
12 }
b. Bạn này đã xác định sai thuộc tính của lớp
a. Vì điểm (tâm) được kế thừa sẵn từ lớp Point (điểm)
c. Vì lớp đường tròn (Ciclre) mặc định là thành phần của lớp điểm (point).
d. Tất cả các đáp án đều sai.

Nếu A và B là hai lớp thì với khai báo lớp C như sau thì lớp C được gọi là:
class C
{
int m, n;
A u, v;
B p, q;
public C() { }
}
d. Lớp cơ sở của A và B
c. Lớp dẫn xuất của A và B
a. Lớp chứa của A và B
b. Lớp thành phần của A và B

46
Xét đoạn mã lệnh sau, B sử dụng được các biến thành viên nào của A:
class A
{
int a, b;
public float f1, f2;
}
class B : A
{ }

d. Không sử dụng được biến thành viên nào


b. a, b
a. f1, f2
c. a, b, f1, f2

Cho khai báo thành phần của lớp A như sau, câu nhận định đúng là:
class A
{
int a;
public A(int b)
{
a = b;
}
}
class Program
{
static void Main(string[] args)
{
A x = new A(); //dong 1
A y = new A(10); //dong 2
}
}

d. Lỗi ở dòng (1).


c. Lỗi ở cả hai dòng khai báo.
a. Cả 2 khai báo hợp lệ.
b. Lỗi ở dòng (2).

Chọn các phương án đúng cho mệnh đề “Trong các phương thức của lớp dẫn xuất, có
thể truy xuất trực tiếp đến _____.”
a. Các thuộc tính của các đối tượng thành phần.

47
b. Các thuộc tính trong chính phương thức đó.
d. Các thuộc tính mới khai báo trong lớp dẫn xuất.
e. Cả hai đáp án b và d đều đúng.
c. Các thuộc tính của lớp cơ sở.

Xem xét bài toán nhập vào danh sách sinh viên gồm n sinh viên với những thông tin:
Họ và tên, Ngày sinh, Giới tính, Địa chỉ, Lớp và hiển thị thông tin theo ngày sinh tăng
dần. Các lớp đối tượng cần xây dựng cho bài toán gồm:
c. Lớp Danh sách sinh viên
a. Lớp Sinh viên và lớp Danh sách sinh viên
b. Lớp Sinh viên

Xem xét bài toán nhập vào danh sách sinh viên gồm n sinh viên với những thông tin:
Họ và tên, Ngày sinh, Giới tính, Địa chỉ, Lớp và hiển thị thông tin theo ngày sinh tăng
dần. Các lớp đối tượng cần xây dựng cho bài toán gồm Lớp Sinh viên và lớp Danh sách
sinh viên. Các thuộc tính của lớp Danh sách sinh viên là:
c. Số sinh viên (n), Họ và tên, Ngày sinh, Giơi tính, Địa chỉ, Lớp
b. Họ và tên, Ngày sinh, Giơi tính, Địa chỉ, Lớp
a. Số sinh viên (n), mảng đối tượng Sinh viên.

Xem xét bài toán nhập vào danh sách sinh viên gồm n sinh viên với những thông tin:
Họ và tên, Ngày sinh (dd/mm/yyyy), Giới tính, Địa chỉ, Lớp và hiển thị thông tin theo
ngày sinh tăng dần. Nếu bài toán yêu cầu xây dựng trong C#, các lớp đối tượng cần xây
dựng cho bài toán gồm Lớp Sinh viên và lớp Danh sách sinh viên. Các thuộc tính của
lớp Danh sách sinh viên là:
b. Họ và tên, Ngày sinh, Giơi tính, Địa chỉ, Lớp
c. Ngày tháng, Số sinh viên (n), Họ và tên, Ngày sinh, Giơi tính, Địa chỉ, Lớp
a. Ngày tháng, Số sinh viên (n), mảng đối tượng Sinh viên.
d. Số sinh viên (n), mảng đối tượng Sinh viên
48
Chọn phát biểu đúng trong các phát biểu sau:
a. Mỗi đối tượng sau khi khai báo sẽ được cấp phát một vùng nhớ riêng để chứa các
thuộc tính của chúng.
b. Một lớp (sau khi định nghĩa) có thể xem như một kiểu đối tượng và có thể dùng để
khai báo các biến, mảng đối tượng.
c. Thuộc tính của lớp có thể có kiểu của chính lớp đó.
d. Tất cả các đáp án đều đúng.

Cho các lớp sau:


class Thi_sinh
{
int sbd;
string hoten;
bool gt;
//….
}
class Ds_thi_sinh
{
Thi_sinh ds;
int sothisinh;
//…

Quan hệ giữa lớp Ds_thi_sinh và Thi_sinh là:


b. Lớp Thi_sinh là lớp chứa của lớp Ds_thi_sinh.
d. Lớp Thi_sinh là lớp dẫn xuất của lớp Ds_thi_sinh.
c. Hai lớp không có mỗi quan hệ đặc biệt.
a. Lớp Thi_sinh là lớp thành phần của lớp Ds_thi_sinh.

Cho đoạn chương trình như hình trên, đoạn chương trình sai ở dòng:
using System;
class A
{
int a;
public A(int k)
{

49
a = k;
}
}
class Program
{
static void Main(string[] args)
{
int n = 2;
A a = new A(10); //dong 1
A[] b = new A[n]; //dong 2
}
}

a. Cả hai dòng đều đúng.


d. Dòng 2 sai.
b. Dòng 1 sai.
c. Cả hai dòng đều sai.

Cho đoạn chương trình như sau:


using System;
class A
{
int a;
public A()
{
a = 5;
}
public A(int k)
{
a = k;
}
public void Hien()
{
Console.WriteLine($"a={a}");
}
}
class Program
{
static void Main(string[] args)
{
A[] a = new A[3];
a[0] = new A(10);
a[1] = new A(20);
a[2] = new A();

a[2].Hien();
}
}
Kết quả hiển thị của đoạn chương trình là:

50
b. a=5;
a. a=10;
d. Chương trình có lỗi, không thể hiển thị kết quả.
c. a=20;

Phương thức mà bất kỳ lớp nào cũng có là:


d. Phương thức ảo (virtual)
b. Phương thức trừu tượng (abstract)
a. Phương thức khởi tạo (Contructor)
c. Không có phương thức nào cả

Người ta cần quản lý các thông tin về công dân để xác định xem hai công dân bất kỳ có
thể kết hôn được với nhau hay không. Biết rằng điều kiện kết hôn là: là công dân từ 18
tuổi trở nên, có tình trạng kết hôn là độc thân, hai công dân kết hôn không cùng giới
tính, đồng thời phải lưu lại các thông tin của người kết hôn. Các thuộc tính cần xây
dựng cho hai lớp đối tượng của bài toán trên là:
b. Lớp đối tượng cần xây dựng là lớp Công dân nam, Công dân nữ; Các thuộc tính là:
họ và tên, ngày sinh, tình trạng hôn nhân;
d. Lớp đối tượng cần xây dựng là lớp Công dân nam, Lớp kết hôn; Các thuộc tính là: họ
và tên, ngày sinh, giới tính, tình trạng hôn nhân;
a. Lớp đối tượng cần xây dựng là lớp Công dân; Các thuộc tính là: họ và tên, ngày sinh,
giới tính, tình trạng hôn nhân;
c. Lớp đối tượng cần xây dựng là lớp Công dân; Các thuộc tính là: họ và tên, ngày sinh,
giới tính, tình trạng hôn nhân; điều kiện kết hôn.

Trong khai báo sau:


class Diem //(1)
{ //(2)
private int x, y; //(3)
public void Diem(int x, int y); //(5)
void ~Diem(); //(6)

51
} //(7)
Sai tại dòng 5 và 6 vì:
c. Phương thức hủy không được bắt đầu bằng từ khóa void
d. Phương thức hủy phải có tham đối truyền vào, còn phương thức khởi tạo thì không.
a. Phương thức khởi tạo và phương thức hủy của lớp không bắt đầu bằng từ khóa void.
b. Chỉ được phép xây dựng phương thức khởi tạo hoặc phương thức hủy trong một
lớp.

52
Cho khai báo thành phần của các lớp như sau, có lỗi trong phương thức nhap() của lớp
HCN. Lỗi đó ở dòng:
class Point
{
private int x, y;
public void nhap() { }
}
class HCN
{
Point p; // dong 1
private int d, r; // dong 2
public void nhap() // dong 3
{
Console.Write("d = "); // dong 4
d = int.Parse(Console.ReadLine()); // dong 5
Console.Write("x = "); // dong 6
p.x = int.Parse(Console.ReadLine()); // dong 7
}
}

c. Lỗi ở dòng 7.
b. Lỗi ở dòng 2.
d. Không dòng nào bị lỗi.
a. Lỗi ở dòng 5.

Cho đoạn chương trình như hình sau. Đoạn chương trình bị sai tại dòng:
class SUN
{
protected int x;
public SUN(int k = 5)
{
x = k;
}
}
class Program
{
static void Main(string[] args)
{
int n = 2;
SUN a, b;
a = new SUN(10); // dong 1
b = new SUN(n); // dong 2
}
}

d. Cả hai dòng đều đúng.


a. Dòng 1 sai.
53
b. Dòng 2 sai.
c. Cả hai dòng đều sai.

Chỉ ra phát biểu sai trong những phát biểu sau:


a. Mỗi thể hiện của một lớp sở hữu riêng các thuộc tính thông thường.
b. Các thể hiện của một lớp cùng chia sẻ các thuộc tính tĩnh của lớp đó.
c. Mỗi thể hiện của một lớp có các định nghĩa riêng cho các phương thức
của nó.
d. Mỗi đối tượng là một thể hiện của một lớp.

Các từ khóa public và private dùng để _________.


a. cho phép người thiết kế lớp che dấu một phần thi hành của lớp đối với
người sử dụng lớp
b. trình biên dịch tối ưu hóa chương trình
c. đảm bảo an toàn của lớp khi thiết kế
d. hạn chế việc sao chép lớp

Chỉ ra lỗi sai với các khai báo cho lớp A


class A

{
public A(int i) { }
}
class Program
{
public static void Main()
{
A a1 = new A(); //(1)
A b2 = new A(5); //(2)
}
}

a. Chỉ dòng 1 lỗi


b. Chỉ dòng 2 lỗi
c. Cả hai dòng lỗi
d. Không dòng nào lỗi

Cho biết kết quả sau khi thực hiện chương trình sau:
using System;
class A
{
public static int i = 5;
}

54
class Program
{
public static void Main()
{
A a1 = new A();
a1.i++;
A a2 = new A();
int n = a2.i + 1;
Console.WriteLine(n);
}
}

a. 5
b. 6
c. 7
d. Tất cả các đáp án đều sai.

Chỉ ra lỗi với các khai báo cho lớp A


class A
{
public A(int i) { }
}
class Program
{
public static void Main()
{
A a1 = new A(5);
A a3 = new A(); // (1)
A a2 = a1; // (2)
}
}

a. Chỉ dòng 1 lỗi


b. Chỉ dòng 2 lỗi
c. Cả 2 dòng lỗi
d. Không dòng nào lỗi

Cho đoạn chương trình sau:


class A
{
public static explicit operator int(A a)
{
return (int)a;
}
}
class Program
{
public static void Main()
{
A a = new A(); // (1)

55
int i = a; // (2)
}
}

Chỉ ra dòng nào có lỗi


a) Chỉ dòng 1 lỗi
b) Chỉ dòng 2 lỗi
c) Cả hai dòng đều lỗi
d) Không dòng nào lỗi

Cho biết giá trị của k sau khi thực hiện đoạn chương trình
int i = 5, k;
{
i = 6;
i--;
k = i;
}
k -= i;

Với các kết quả:


a) k=0
b) k=1
c) k=2
d) k=3

Tìm lời gọi phương thức sai cho khai báo phương thức sau:
void func(int i = 0, int j = 0)

a) func()
b) func(1)
c) func(1.5, 2.5)
d) func(1, 2)

56
Cho biết giá trị của y sau khi thực hiện:
static int foo(ref int a)
{
a++;
return a;
}
public static void Main()
{
int i = 5;
int r = foo(ref i);
r++;
}

a) 5
b) 6
c) 7
d) Tất cả các đáp án đều sai.

Cho biết giá trị của x, y sau khi thực hiện đoạn chương trình sau:
static void test(ref int a, int b)
{
a += b;
b = a;
}
public static void Main()
{
int x = 1, y = 2;
test(ref x, y);
}

a) x=1, y=2
b) x=1, y=3
c) x=3, y=2
d) x=3, y=3

57

You might also like