WorksheetsObject Oriented Programming
Total questions: 50
Worksheet time: 25mins
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 hàm, quan tâm đến chức năng của hệ thống
Phương pháp lập trình cơ bản gần với mã máy
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 hàm thành phần.
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ác đặc trưng cơ bản của lập trình hướng đối tượng:
Tính đóng gói, tính kế thừa, tính đa hình, tính trừu tượng
Tính đóng gói, tính trừu tượng
Tính chia nhỏ, tính kế thừa
Tính đóng gói, tính kế thừa, tính đa hình, tính đặc biệt hóa
OOP là viết tắt của:
Open Object Programming
Object Oriented Proccessing
Object Oriented Programming
Object Open Programming
Tính bao gói là:
Cơ chế không cho phép các thành phần khác truy cập đến bên trong nó
Cơ chế cho thấy một hàm có thể có nhiều thể hiện khá nhau ở từng thời điểm.
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.
Cơ chế chia chương trình thành các hàm và thủ tục thực hiện các chức năng riêng rẽ.
Trừu tượng hóa là:
Phương pháp thay thế những chi tiết chính bằng những chi tiết tương tự
Phương pháp chỉ quan tâm đến những chi tiết cần thiết (chi tiết chính) và bỏ qua những chi tiết không cần thiết
Phương pháp quan tâm đến mọi chi tiết của đối tượng
Không có phương án chính xác
Đối tượng là:
Một vật chất trong thế giới thực
Một mẫu hay một thiết kế cho mọi đối tượng
Một lớp vật chất trong thế giới thực
Một thực thể cụ thể trong thế giới thực
Lớp đối tượng là:
Tập các phần tử cùng loại
Một thể hiện cụ thể cho các đối tượng.
Một thiết kế hay mẫu cho các đối tượng cùng kiểu.
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 đối tượng Sinh viên. Khi đó lớp đối tượng Sinh viên còn được gọi là:
Kiểu dữ liệu cơ bản.
Đối tượng
Lớp đối tượng cơ sở.
Kiểu dữ liệu trừu tượng.
Trong các phương án sau, phươn án nào mô tả đối tượng:
Đồng hồ
Xe đạp
Máy tính
Quả cam
Tất cả đều đúng
Muốn lập trình hướng đối tượng, cần phải phân tích chương trình, bài toán thành:
Các module
Các đối tượng từ đó xây dựng các lớp đối tượng tương ứng
Hàm, thủ tục
Các thông điệ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 ta cần:
Truy cập thông qua tên lớp hay tên đối tượng của lớp
Chỉ có thể truy cập thông qua tên lớp.
Chỉ có thể truy cập thông qua tên đối tượng của lớp
Không thể truy cập được
Khi khai báo và xây dựng một lớp ta cần phải xác định rõ thành phần:
Dữ liệu và đối tượng của lớp
Khái niệm và đối tượng của lớp
Vô số thành phần
Thuộc tính (dữ liệu) và phương thức (hành vi) của lớp
Tính kế thừa là:
Khả năng sử dụng lại các hàm đã xây dựng.
Khả năng sử dụng lại các kiểu dữ liệu đã xây dựng.
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ất cả các phương án trên đều đúng
Trong kế thừa, lớp mới (lớp con hay lớp dẫn xuất) có thuật ngữ tiếng Anh là:
Object Class
Base Class
Inheritance Class
Derived Class
Trong kế thừa, lớp Cha (lớp cơ sở) có thuật ngữ tiếng Anh là:
Object Class
Base Class
Inheritance Class
Derived Class
Tính đa hình là:
Khả năng một thông điệp có thể được truyền lại cho lớp con của nó
Khả năng một hàm, thủ tục được sử dụng lại
Khả năng một hàm, thủ tục có thể được kế thừa lại
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
Phương án nào sau đây mô tả tính đa hình
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ẽ
Lớp hình vuông kế thừa lớp hình chữ nhật
Lớp Điểm, Hình tròn cùng có hàm tạo, hàm hủy
Lớp hình tròn kế thừa lớp điểm
Tại chương trình chính:
Chỉ có thể truy cập đến thành phần public của lớp
Không thể truy cập đến thành phần nào của lớp
Có thể truy cập đến thành phần private của lớp
Có thể truy cập đến bất kỳ thành phần nào của lớp.
Khi khai báo lớp trong các ngôn ngữ lập trình hướng đối tượng phải sử dụng từ khóa:
Record
File
Object
class
Thành phần private của lớp là thành phần:
Cho phép truy xuất từ bên ngoài lớp và cho phép kế thừa
Cho phép truy xuất từ bên ngoài lớp
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
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 protected của lớp là thành phần:
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.
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.
Cho phép truy xuất từ bên ngoài lớp và cho phép kế thừa.
Cho phép truy xuất từ bên ngoài lớp.
Thành phần public của lớp là thành phần:
Cho phép truy xuất từ bên ngoài lớp
Cho phép truy xuất từ bên trong và ngoài lớp cho phép kế thừ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 mới có thể truy
xuất được
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
Hàm thành viên (phương thức) của lớp:
Tất cả các hàm (hàm và thủ tục) được sử dụng trong lớp
Tất cả các hàm (hàm và thủ tục) trong chương trình có lớp
Tất cả các hàm (hàm trả về giá trị và không trả về giá trị) đượ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
Tất cả những hàm (hàm và thủ tụ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
Trong một chương trình có thể xây dựng tối đa bao nhiêu lớp:
10 lớp
3 lớp
Vô số tùy theo bộ nhớ
1 lớp duy nhất
Cho lớp Time như sau,
Khi xây dựng phương thức addHour bên ngoài lớp Time ta phải viết là:
void addHour(int h);{//Nội dung}
void addHour(int h){//Nội dung}
void Time::addHour(int h){//Nội dung}
void Time:addHour(int h){//Nội dung}
Cho đoạn chương trình sau,
Đoạn chương trình trên khi khai báo 1 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 hàm tạo, ta phải tự gọi hàm 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à:
HT():Diem(){r=1;};
HT(){Diem();r=1;};
HT(){x=0,y=0,r=1;};
Tất cả các phương án trên đều đúng.
Cho đoạn chương trình sau, Đoạn chương trình trên khi khai báo 1 hình tròn (HT H1;) thì hình tròn H1 này có:
Tâm là (1,1) bán kính là 1
Không xác định được tâm vì theo tính chất kế thừa không kế thừa hàm tạo, ở lớp dẫn xuất phải gọi
hàm tạo của lớp cơ sở.
Tâm là (0,0) bán kính là 1.
Tất cả các phương án trên đều đúng.
Cho đoạn chương trình sau, câu lệnh khai báo Phanso P1 bị báo lỗi vì
Chương trình trên không thể lỗi được vì ngôn ngữ C++ sẽ tự phát sinh hàm tạo không đối.
Không xác định được gọi tới hàm tạo nào
Gọi tới hàm tạo không đối mà chương trình lại không xây dựng
Tất cả các phương án trên đều sai.
Cho đoạn chương trình sau.
Nếu gọi O.Xuat(); thì sẽ:
Gọi đến cả hai phương thức.
Gọi đến phương thức Xuat thuộc lớp A
Gọi đến phương thức Xuat thuộc lớp B.
Lỗi
Hãy nhận định phát biểu đúng trong đoạn chương trình sau:
Xuat là một hàm hủy
Xuat là một hàm tạo
Lỗi tại dòng void Xuat(); virtual;
Xuat là phương thức ảo
Cho biết đoạn chương trình sau lỗi ở đâu?
Tại câu lệnh class B:public A
Không lỗi tại dòng nào cả
Tại câu lệnh B1=A1;
Tại câu lệnh A1=B1;
Dòng lệnh friend class B; trong đoạn chương trình sau có nghĩa là:
Khai báo lớp B là bạn lớp A và ngược lại
Khai báo lớp B là bạn lớp A
Khai báo lớp A là bạn lớp B
Tất cả các phương án trên đều sai
Cho đoạn chương trình sau.
Cần xây dựng lớp Trai_dua_hau. Khi đó quan hệ giữa lớp Trai_cay và lớp Trai_dua_hau là:
Trai_cay là lớp cha của lớp Trai_dua_hau
Trai_dua_hau là lớp bao của lớp Trai_cay
Trai_dua_hau là lớp cha của lớp Trai_cay
Trai_dua_hau và Trai_cay là lớp bạn
Cho đoạn chương trình sau.
Lớp Trai_cay với khai báo như trên được gọi là:
Lớp bao
Lớp cơ sở trừu tượng
Lớp cơ sở ảo
Lớp dẫn xuất ảo
Cho lớp Dathuc sau đây, để thực hiện khai báo mà không lỗi ta cần xây dựng:
Hàm tạo có đối số mặc định
Hàm tạo không đối và hàm tạo sao chép
Hàm tạo có đối
Hàm tạo không đối và hàm tạo có đối
Trong đoạn chương trình sau, hàm KC2D có tên gọi là:
Hàm thông thường
Hàm bạn của lớp diem
Phương thức của lớp
Toán tử bạn của lớp diem
Trong đoạn chương trình sau, để gọi tới hàm KC2D ta sử dụng câu lệnh?
D2.KC2D(D1);
D1.KC2D(D2);
KC2D(D1,D2);
D1::KC2D(D2);
Cho đoạn chương trình sau, hãy chọn phương án sai
Lớp B là bạn của lớp A
Các phương thức của lớp B có quyền truy cập đến tất cả các thành viên riêng của lớp A
Lớp C là bạn của lớp A
Các phương thức của lớp A có quyền truy cập đến tất cả các thành viên riêng của lớp B
Cho đoạn chương trình sau.
Để khai báo một mảng gồm 10 sinh viên ta có thể sử dụng câu lệnh khai báo:
Sinh_vien ds(10);
Sinh_vien *ds[10];
Sinh_vien ds[10];
Không thể khai báo mảng các đối tượng
Cho đoạn chương trình.
Lớp Doanthang được gọi là:
Lớp cha của lớp Diem
Lớp bao của lớp Diem
Lớp bạn của lớp Diem
Lớp con của lớp Diem
Đoạn chương trình sau bị lỗi tại:
Dòng obj1.x=10;
Dòng obj2.y=8;
Dòng int x;
Dòng A.obj1;
Đoạn chương trình sau bị lỗi. Hãy chỉ ra nguyên nhân?
Không thể truy cập vào thành phần private của lớp
Chưa khai báo x
Không xác định được giá trị x
Phải gọi thông qua tên lớp, không được gọi thông qua tên đối tượng
Đoạn chương trình sau khi biên dịch phát sinh ra lỗi không khai báo biến x, lựa chọn đáp án đúng nhất dưới đây.
Sửa dòng void nhap(); thứ hai thành void A::nhap();
Khai báo thêm biến x trong hàm nhap
Cả hai phương án trên đều sai
Cả hai phương án trên đều đúng
Để 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à
Tải_trọng, Loại_động_cơ, Biển_số, Di_chuyển
Tải_trọng, Loại_động_cơ, Loại_phương_tiện, Biển_số, Di_chuyển
Tải_trọng, Loại_động_cơ, Biển_số
Tất cả các phương án trên đều đúng.
Để 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ằngcá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 dichuyể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à:
Di_chuyển
Tải_trọng, Loại_động_cơ, Loại_phương_tiện, Biển_số,
Loại_phương_tiện, Di_chuyển
Tải_trọng, Loại_động_cơ, Loại_phương_tiện, Biển_số, Di_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 khi xây dựng người ta xây dựng
Lớp Sinh viên là lớp bao của lớp Thí sinh
Lớp Thí sinh kế thừa lớp Sinh viên
Lớp Sinh viên kế thừa lớp Thí sinh
Lớp Thí sinh là lớp bao của lớp Sinh viên
Để tính khoảng cách hai điểm trong lớp điểm ta xây dựng phương thức tính khoảng cách hai điểm theo cú pháp sau: float KC2D(Diem D);
Lời gọi đến phương thức để tính khoảng cách hai điểm là:
cout<<D1.KC2D(D2);
cout<<KC2D(D1,D2);
KC2D(D1,D2).in()
Không có phương án đúng.
Vào mỗi kỳ tuyển sinh: Trường HAU in giấy báo nhập học, Trường HUST và Trường VNU 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 và hình thức khác nhau. Ví dụ này chứng tỏ
tính:
Đóng gói
Ảo của phương thức
Trừu tượng
Đa hình
Chồng hàm là:
Khả năng các hàm có thể trùng tên nhau 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ể chồng hàm thành viên của lớp
Khả năng các hàm có thể trùng tên nhau, 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
Khả năng các hàm có thể trùng tên nhau 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
Tất cả các phương án trên đều đúng
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 thức tính Dien_tich. Tuy nhiên cách tính diện tích của các phương thức Dien_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:
Trừu tượng
Đóng gói
Đa hình
Ảo của phương thức
