Bài giảng Phương pháp lập trình hướng đối tượng - Tuần 4+5: Hàm dựng - Hàm hủy - Hàm toán tử - Nguyễn Lê Hoàng Dũng

HÀM DỰNG  
HÀM HỦY  
HÀM TOÁN TỬ  
Nguyễn Lê Hoàng Dũng  
1
• HÀM KHỞI TẠO  
• HÀM HỦY  
• HÀM TOÁN TỬ  
NỘI DUNG  
• CHUYỂN ĐỔI KIỂU DỮ LIỆU  
2
ꢀ Phương pháp lập trình hướng đối tượng  
HÀM DỰNG  
3
HÀM DỰNG  
• Khi đối tượng vừa được tạo:  
• Giá trị các thuộc tính bằng bao nhiêu?  
• Đối tượng cần có thông tin ban đầu.  
• Giải pháp:  
• Xây dựng phương thức cung cấp thông tin.  
=> Người dùng quên gọi?!  
• Tạo tự động ngay sau khi khai báo biến!  
PhanSo  
Tử số?  
Mẫu số  
HocSinh  
Họ tên?  
Điểm toán?  
Điểm văn?  
Hàm dựng ra đời!!  
4
ꢀ Phương pháp lập trình hướng đối tượng  
HÀM DỰNG  
• Các tên khác:  
• Hàm dựng  
• Hàm khởi tạo  
• Tiếng Anh: constructor  
5
ꢀ Phương pháp lập trình hướng đối tượng  
HÀM DỰNG  
• Tính chất:  
• Có tên trùng tên lớp.  
• Có thể nạp chồng nhiều hàm dựng.  
.h  
class BuuPham  
{
private:  
string _loaiBuuPham;  
string _tenNguoiNhan;  
string _diaChiNguoiNhan;  
float _trongLuong;  
public:  
BuuPham();  
BuuPham(string nguoiNhan, string diaChiNhan,  
float trongLuong);  
BuuPham(const BuuPham& buupham);  
//Các phương thức khác  
};  
6
ꢀ Phương pháp lập trình hướng đối tượng  
HÀM DỰNG  
• Tính chất (tt):  
• Tự động gọi thực hiện khi đối tượng được  
tạo.  
.cpp  
int main(int argc, const char * argv[]) {  
BuuPham bp01;  
//  
BuuPham bp011();//SAI!!!  
BuuPham bp02("nlhdung","Quan 8",15.0);  
return 0;  
}
7
ꢀ Phương pháp lập trình hướng đối tượng  
HÀM DỰNG  
• Các loại hàm dựng:  
• Hàm dựng mặc định (default constructor)  
• Hàm dựng với tham số đầu vào (constructor  
with parameters)  
• Hàm dựng sao chép (copy constructor)  
8
ꢀ Phương pháp lập trình hướng đối tượng  
HÀM DỰNG  
• Hàm dựng mặc định (default constructor)  
• Khi lớp không có hàm dựng?  
• Trình biên dịch cung cấp hàm dựng mặc  
định.  
• Có thể định nghĩa lại.  
• Tính chất:  
• Không tham số.  
• Khởi tạo mặc định các thuộc tính.  
9
ꢀ Phương pháp lập trình hướng đối tượng  
HÀM DỰNG  
• Hàm dựng mặc định (default constructor)  
• Ví dụ:  
.h  
#include "BuuPham.h"  
//các thư viện cần thiết  
class BuuPham  
{
.c  
pp  
BuuPham::BuuPham()  
{
private:  
_tenNguoiNhan = "no_name";  
_diaChiNguoiNhan = "no_address";  
_loaiBuuPham = "buu_pham";  
_trongLuong = 0;  
string _loaiBuuPham;  
string _tenNguoiNhan;  
string _diaChiNguoiNhan;  
float _trongLuong;  
public:  
}
BuuPham();  
//Các phương thức khác  
};  
.cpp  
int main(int argc, const char * argv[]) {  
BuuPham bp01;  
return 0;  
}
10  
ꢀ Phương pháp lập trình hướng đối tượng  
HÀM DỰNG  
• Hàm dựng sao chép (copy constructor):  
• Có tham số là đối tượng cùng lớp.  
• Dùng khởi tạo từ đối tượng cùng loại.  
• Đem thông tin đối tượng đầu vào cho đối  
tượng đang khởi tạo  
11  
ꢀ Phương pháp lập trình hướng đối tượng  
HÀM DỰNG  
• Hàm dựng sao chép (copy constructor):  
• Ví dụ:  
.h  
//các thư viện cần thiết  
class BuuPham  
{
private:  
string _loaiBuuPham;  
string _tenNguoiNhan;  
string _diaChiNguoiNhan;  
float _trongLuong;  
public:  
BuuPham(const BuuPham& buupham);  
//Các phương thức khác  
};  
12  
ꢀ Phương pháp lập trình hướng đối tượng  
HÀM DỰNG  
• Hàm dựng sao chép (copy constructor):  
• Ví dụ:  
.cpp  
#include "BuuPham.h"  
BuuPham::BuuPham(const BuuPham& buupham){  
_tenNguoiNhan = buupham._tenNguoiNhan;  
_diaChiNguoiNhan = buupham._diaChiNguoiNhan;  
_loaiBuuPham = buupham._loaiBuuPham;  
_trongLuong = buupham._trongLuong;  
}
.cpp  
int main(int argc, const char * argv[]) {  
BuuPham bp01; //hàm dựng mặc định  
BuuPham bp02(bp01); //hàm dựng sao chép  
return 0;  
}
13  
ꢀ Phương pháp lập trình hướng đối tượng  
HÀM DỰNG  
• Từ khóa const: thường được dùng trong 4  
trường hợp sau:  
• Biến const.  
• Tham chiếu const. (tham số đầu vào const)  
• Hàm const.  
• Con trỏ const.  
14  
ꢀ Phương pháp lập trình hướng đối tượng  
HÀM DỰNG  
• Biến const: biến không thể thay đổi giá trị trong  
suốt phạm vi tồn tại của biến  
.cpp  
int main(int argc, const char * argv[]) {  
const int iVar = 5;  
iVar = 10; //Sai!!!  
return 0;  
}
15  
ꢀ Phương pháp lập trình hướng đối tượng  
HÀM DỰNG  
• Tham chiếu const: đảm bảo an toàn dữ liệu, để  
chắc chắn rằng hàm đang gọi sẽ không làm  
ảnh hưởng đến biến gốc ban đầu.  
.cpp  
void HamCoThamChieuConst(const int& iParam)  
{
//mã nguồn khác  
iParam = 5; //Sai!!!  
}
16  
ꢀ Phương pháp lập trình hướng đối tượng  
HÀM DỰNG  
• Hàm const: toàn bộ thuộc tính thuộc lớp đó sẽ  
không được thay đổi.  
.h  
//các thư viện cần thiết  
class BuuPham  
{
private:  
string _loaiBuuPham;  
string _tenNguoiNhan, _diaChiNguoiNhan;  
float _trongLuong;  
public:  
string getNguoiNhan() const;  
//Các phương thức khác  
};  
#include "BuuPham.h"  
.cpp  
string BuuPham::getNguoiNhan() const  
{
_tenNguoiNhan = "new_name"; //Sai!!!  
return _tenNguoiNhan;  
}
17  
ꢀ Phương pháp lập trình hướng đối tượng  
HÀM DỰNG  
• Hàm const:  
.cpp  
//Giá trị mà hàm trả về không thể bị thay đổi  
const string Func1(){  
return "ABC";  
}
int main(int argc, const char * argv[]) {  
Func1()[0] = ‘a';  
return 0;  
}
18  
ꢀ Phương pháp lập trình hướng đối tượng  
HÀM DỰNG  
• Hàm const:  
.cpp  
//Địa chỉ trả về không thể bị thay đổi  
const int& Func2();  
19  
ꢀ Phương pháp lập trình hướng đối tượng  
HÀM DỰNG  
• Con trỏ const:  
.cpp  
int main(int argc, const char * argv[]) {  
const int * Constant2;  
//  
declares that Constant2 is a variable pointer to a  
constant integer and  
int const * Constant2  
//  
is an alternative syntax which does the same,  
whereas  
return 0;  
}
20  
ꢀ Phương pháp lập trình hướng đối tượng  
Tải về để xem bản đầy đủ
pdf 54 trang myanh 19940 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Phương pháp lập trình hướng đối tượng - Tuần 4+5: Hàm dựng - Hàm hủy - Hàm toán tử - Nguyễn Lê Hoàng Dũng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_phuong_phap_lap_trinh_huong_doi_tuong_tuan_45_ham.pdf
  • zipOOP-W4-Constructor-Vector.zip
  • zipOOP-W5-Constructor, Destructor, and Operators-Demo.zip