Câu hỏi lý thuyết có đáp án - Nhập môn lập trình | Trường Đại học CNTT Thành Phố Hồ Chí Minh

Câu hỏi lý thuyết có đáp án - Nhập môn lập trình | Trường Đại học CNTT Thành Phố Hồ Chí Minh được được sưu tầm và soạn thảo dưới dạng file PDF để gửi tới các bạn sinh viên cùng tham khảo, ôn tập đầy đủ kiến thức, chuẩn bị cho các buổi học thật tốt. Mời bạn đọc đón xem!

lOMoARcPSD| 40551442
Câu 1: (HK2-17-18)
a. Hàm thuần ảo là gì? Lớp trừu tượng là gì? Cho ví dụ minh họa. (1 ) Đáp
án gợi ý:
* Hàm thuần ảo:
- Là phương thức ảo không có nội dung
- Phương thức thuần ảo có ý nghĩa cho việc tổ chức sơ ồ phân cấp các lớp, nó óng vai
trò chừa sẵn chỗ trống cho các lớp con iền vào với phiên bản phù hợp
* Lớp trừu tượng:
- Là lớp cơ sở không có ối tượng nào thuộc chính nó
- Khi lớp có phương thức thuần ảo, lớp trở thành lớp cơ sở trừu tượng
Ví dụ:
class DongVat //lớp tru tưng
{ public:
virtual void Keu()=0; //hàm thun o
};
class Meo:public DongVat
{ public:
void Keu()
{
cout<<"meo meo";
}
};
class Cho:public DongVat
{ public:
void Keu()
{
cout<<"gau gau";
}
}; int
main()
{
DongVat *x=new DongVat; //không thể tạo i tưng cho
//lớp tru tưng -> bị li
return 0;
}
b. Hãy nêu các ặc iểm quan trọng của lập trình hướng ối tượng. (1 )
lOMoARcPSD| 40551442
Đáp án gợi ý:
1. Tính trừu tượng
2. Tính óng gói
3. Tính kế thừa
4. Tính a hình
Câu 2: (HK3-17-18)
Phân biệt overload và override (1 ). Cho ví dụ minh họa (1 ).
Đáp án gợi ý:
- Overload: các hàm, phương thức cùng tên nhưng khác ối số; ở cùng một phạm vi
(ví dụ như cùng lớp)
- Override: các phương thức cùng tên cùng ối số; ở các lớp khác nhau (ở lớp cha và
các lớp con)
Ví dụ: Overload:
class Meo
{ public:
void Keu()
{
cout<<"meo meo";
}
void Keu(int n)
{
for(int i=1;i<=n;i++)
cout<<"meo meo\n";
}
};
Override
class DongVat
{ public:
virtual void Keu()=0;
};
class Meo:public DongVat
{ public:
void Keu()
{
cout<<"meo meo";
}
};
class Cho:public DongVat
lOMoARcPSD| 40551442
{ public:
void Keu()
{
cout<<"gau gau";
}
};
Câu 3: (HK2-16-17)
a. Phân biệt private, protected, public (1 iểm)
b. Trình bày về constructor (1 iểm) Đáp án gợi ý:
- Là một loại phương thức ặc biệt dùng ể khởi tạo thể hiện của lớp
- Được khai báo giống như một phương thức, có tên trùng với tên lớp, không có giá trị
trả về, có thuộc tính public
- Bất kỳ một ối tượng nào ược khai báo ều phải sử dụng một hàm thiết lập ể khởi tạo
các giá trị thành phần của ối tượng
Câu 4: (HK3-15-16)
a. Định nghĩa constructor (phương thức khởi tạo) và default constructor (phương thức
khởi tạo mặc ịnh) (1 iểm) Đáp án gợi ý:
* Định nghĩa constructor: xem câu 3b.
* Định nghĩa default constructor: là constructor ược gọi khi thể hiện ược khai báo
không có ối số nào ược cung cấp. Nếu ta không cung cấp bất kỳ constructor nào,
C++ sẽ tự sinh constructor mặc ịnh là một phương thức rỗng.
b. Phân biệt các kiểu kế thừa private, protected, public (1 iểm)
lOMoARcPSD| 40551442
Hoặc:
Kiểu kế thừa
Phạm vi truy xuất
private
protected
public
private
x
x
x
protected
private
protected
protected
public
private
protected
public
Câu 5: (HK2-16-17)
Trình bày khái niệm của lớp cơ sở trừu tượng (abstract class). Lớp cơ sở trừu tượng
ược cài ặt trong C++ như thế nào? (1 iểm)
Câu 6: (HK1-18-19)
a. Phân biệt khái niệm lớp và ối tượng trong lập trình hướng ối tượng. (1 )
Đáp án gợi ý:
Lớp là một mô tả trừu tượng của nhóm các ối tượng cùng bản chất, ngược lại mỗi một
ối tượng là một thể hiện cụ thể cho những mô tả trừu tượng ó.
b. Trình bày khái niệm a hình trong lập trình hướng ối tượng (1 ). Cho ví dụ minh
họa. (0.5 )
Đáp án gợi ý:
Là hiện tượng các ối tượng thuộc các lớp khác nhau có khả năng hiểu cùng một thông
iệp theo các cách khác nhau
lOMoARcPSD| 40551442
Ví dụ:
class DongVat
{ public:
virtual void Keu()=0; // a hình
};
class Meo:public DongVat
{ public:
void Keu()// a hình
{
cout<<"meo meo";
}
};
class Cho:public DongVat
{ public:
void Keu()// a hình
{
cout<<"gau gau";
}
};
Câu 7: (HK1-16-17)
Nêu khái niệm về sự kế thừa và những ưu iểm của kế thừa trong việc lập trình. Cho ví
dụ minh họa.
Đáp án gợi ý:
*Khái niệm về sự kế thừa:
- Kế thừa là một ặc iểm của ngôn ngữ dùng ể biểu diễn mối quan hệ ặc biệt hóa tổng
quát hóa giữa các lớp.
- Sự kế thừa là một mức cao hơn của trừu tượng hóa, cung cấp một cơ chế gom chung
các lớp có liên quan với nhau thành một mức khái quát hóa ặc trưng cho toàn bộ các
lớp nói trên.
*Ưu iểm của kế thừa:
- Xây dựng lớp mới từ lớp ã có
- Tổ chức các lớp chia sẻ mã chương trình chung, nhờ vậy có thể dễ dàng sửa chữa,
nâng cấp hệ thống
- Trong C++, kế thừa còn ịnh nghĩa sự tương thích, nhờ ó ta có cơ chế chuyển kiểu tự
ộng
*Ví dụ:
lOMoARcPSD| 40551442
class NhanVien //lớp cha
{ protected:
char strTen[50];
int iMaSo;
};
class NhanVienSX:public NhanVien //lớp con
{
int iSoSanPham;
};
class NhanVienVP:public NhanVien //lớp con
{ int
iSoNgayCong;
};
| 1/6

Preview text:

lOMoAR cPSD| 40551442 Câu 1: (HK2-17-18)
a. Hàm thuần ảo là gì? Lớp trừu tượng là gì? Cho ví dụ minh họa. (1 ) Đáp án gợi ý: * Hàm thuần ảo:
- Là phương thức ảo không có nội dung
- Phương thức thuần ảo có ý nghĩa cho việc tổ chức sơ ồ phân cấp các lớp, nó óng vai
trò chừa sẵn chỗ trống cho các lớp con iền vào với phiên bản phù hợp * Lớp trừu tượng:
- Là lớp cơ sở không có ối tượng nào thuộc chính nó
- Khi lớp có phương thức thuần ảo, lớp trở thành lớp cơ sở trừu tượng Ví dụ:
class DongVat //lớp trừu tượng { public:
virtual void Keu()=0; //hàm thuần ảo }; class Meo:public DongVat { public: void Keu() { cout<<"meo meo"; } }; class Cho:public DongVat { public: void Keu() { cout<<"gau gau"; } }; int main() {
DongVat *x=new DongVat; //không thể tạo ối tượng cho
//lớp trừu tượng -> bị lỗi return 0; }
b. Hãy nêu các ặc iểm quan trọng của lập trình hướng ối tượng. (1 ) lOMoAR cPSD| 40551442 Đáp án gợi ý: 1. Tính trừu tượng 2. Tính óng gói 3. Tính kế thừa 4. Tính a hình Câu 2: (HK3-17-18)
Phân biệt overload và override (1 ). Cho ví dụ minh họa (1 ). Đáp án gợi ý:
- Overload: các hàm, phương thức cùng tên nhưng khác ối số; ở cùng một phạm vi (ví dụ như cùng lớp)
- Override: các phương thức cùng tên cùng ối số; ở các lớp khác nhau (ở lớp cha và các lớp con) Ví dụ: Overload: class Meo { public: void Keu() { cout<<"meo meo"; } void Keu(int n) { for(int i=1;i<=n;i++) cout<<"meo meo\n"; } }; Override class DongVat { public: virtual void Keu()=0; }; class Meo:public DongVat { public: void Keu() { cout<<"meo meo"; } }; class Cho:public DongVat lOMoAR cPSD| 40551442 { public: void Keu() { cout<<"gau gau"; } }; Câu 3: (HK2-16-17)
a. Phân biệt private, protected, public (1 iểm)
b. Trình bày về constructor (1 iểm) Đáp án gợi ý:
- Là một loại phương thức ặc biệt dùng ể khởi tạo thể hiện của lớp
- Được khai báo giống như một phương thức, có tên trùng với tên lớp, không có giá trị
trả về, có thuộc tính public
- Bất kỳ một ối tượng nào ược khai báo ều phải sử dụng một hàm thiết lập ể khởi tạo
các giá trị thành phần của ối tượng Câu 4: (HK3-15-16)
a. Định nghĩa constructor (phương thức khởi tạo) và default constructor (phương thức
khởi tạo mặc ịnh) (1 iểm) Đáp án gợi ý:
* Định nghĩa constructor: xem câu 3b.
* Định nghĩa default constructor: là constructor ược gọi khi thể hiện ược khai báo mà
không có ối số nào ược cung cấp. Nếu ta không cung cấp bất kỳ constructor nào,
C++ sẽ tự sinh constructor mặc ịnh là một phương thức rỗng.
b. Phân biệt các kiểu kế thừa private, protected, public (1 iểm) lOMoAR cPSD| 40551442 Hoặc: Kiểu kế thừa Phạm vi truy xuất private protected public private x x x protected private protected protected public private protected public Câu 5: (HK2-16-17)
Trình bày khái niệm của lớp cơ sở trừu tượng (abstract class). Lớp cơ sở trừu tượng
ược cài ặt trong C++ như thế nào? (1 iểm) Câu 6: (HK1-18-19)
a. Phân biệt khái niệm lớp và ối tượng trong lập trình hướng ối tượng. (1 ) Đáp án gợi ý:
Lớp là một mô tả trừu tượng của nhóm các ối tượng cùng bản chất, ngược lại mỗi một
ối tượng là một thể hiện cụ thể cho những mô tả trừu tượng ó.
b. Trình bày khái niệm a hình trong lập trình hướng ối tượng (1 ). Cho ví dụ minh họa. (0.5 ) Đáp án gợi ý:
Là hiện tượng các ối tượng thuộc các lớp khác nhau có khả năng hiểu cùng một thông
iệp theo các cách khác nhau lOMoAR cPSD| 40551442 Ví dụ: class DongVat { public:
virtual void Keu()=0; // a hình }; class Meo:public DongVat { public: void Keu()// a hình { cout<<"meo meo"; } }; class Cho:public DongVat { public: void Keu()// a hình { cout<<"gau gau"; } }; Câu 7: (HK1-16-17)
Nêu khái niệm về sự kế thừa và những ưu iểm của kế thừa trong việc lập trình. Cho ví dụ minh họa. Đáp án gợi ý:
*Khái niệm về sự kế thừa:
- Kế thừa là một ặc iểm của ngôn ngữ dùng ể biểu diễn mối quan hệ ặc biệt hóa – tổng quát hóa giữa các lớp.
- Sự kế thừa là một mức cao hơn của trừu tượng hóa, cung cấp một cơ chế gom chung
các lớp có liên quan với nhau thành một mức khái quát hóa ặc trưng cho toàn bộ các lớp nói trên. *Ưu iểm của kế thừa:
- Xây dựng lớp mới từ lớp ã có
- Tổ chức các lớp chia sẻ mã chương trình chung, nhờ vậy có thể dễ dàng sửa chữa, nâng cấp hệ thống
- Trong C++, kế thừa còn ịnh nghĩa sự tương thích, nhờ ó ta có cơ chế chuyển kiểu tự ộng *Ví dụ: lOMoAR cPSD| 40551442 class NhanVien //lớp cha { protected: char strTen[50]; int iMaSo; };
class NhanVienSX:public NhanVien //lớp con { int iSoSanPham; };
class NhanVienVP:public NhanVien //lớp con { int iSoNgayCong; };