Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Hàm dựng, hàm hủy, hàm toán tử

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?!

 “Làm khai sinh” cho đối tượng!

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Hàm dựng, hàm hủy, hàm toán tử trang 1

Trang 1

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Hàm dựng, hàm hủy, hàm toán tử trang 2

Trang 2

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Hàm dựng, hàm hủy, hàm toán tử trang 3

Trang 3

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Hàm dựng, hàm hủy, hàm toán tử trang 4

Trang 4

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Hàm dựng, hàm hủy, hàm toán tử trang 5

Trang 5

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Hàm dựng, hàm hủy, hàm toán tử trang 6

Trang 6

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Hàm dựng, hàm hủy, hàm toán tử trang 7

Trang 7

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Hàm dựng, hàm hủy, hàm toán tử trang 8

Trang 8

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Hàm dựng, hàm hủy, hàm toán tử trang 9

Trang 9

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Hàm dựng, hàm hủy, hàm toán tử trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 26 trang Danh Thịnh 08/01/2024 3360
Bạn đang xem 10 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 - Bài: Hàm dựng, hàm hủy, hàm toán tử", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Hàm dựng, hàm hủy, hàm toán tử

Bài giảng Phương pháp lập trình hướng đối tượng - Bài: Hàm dựng, hàm hủy, hàm toán tử
1Phương pháp lập trình hướng đối tượng . 
Hàm dựng, 
Hàm hủy,
Hàm toán tử
2Phương pháp lập trình hướng đối tượng . 
Nội dung
 Hàm dựng.
 Hàm hủy.
 Hàm toán tử.
 Bài tập.
3Phương pháp lập trình hướng đối tượng . 
Nội dung
 Hàm dựng.
 Hàm hủy.
 Hàm toán tử.
 Bài tập.
4Phương pháp lập trình hướng đối tượng . 
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?!
 “Làm khai sinh” cho đối tượng!
PhanSo
Tử số??
Mẫu số??
HocSinh
Họ tên??
Điểm văn??
Điểm toán?? Hàm dựng ra đời!!
5Phương pháp lập trình hướng đối tượng . 
Hàm dựng
 Tính chất hàm dựng (constructor):
 Bắt buộc gọi khi tạo đối tượng.
 Có thể nạp chồng nhiều hàm dựng.
 Trong C++, hàm dựng có tên trùng tên lớp.
class PhanSo
{
private:
int m_tuSo;
int m_mauSo;
public:
PhanSo(int tuSo, int mauSo);
PhanSo(int giaTri);
};
void main()
{
PhanSo p1(1, 2);
PhanSo p2(2, 3);
PhanSo *p3 = new PhanSo(2, 3);
}
6Phươ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):
 Không có tham số.
 Dùng tạo đối tượng với thông tin mặc định.
 Lớp không có hàm dựng.
 Trình biên dịch cung cấp.
class PhanSo
{
private:
int m_tuSo;
int m_mauSo;
public:
PhanSo();
};
void main()
{
PhanSo p;
PhanSo q = new PhanSo;
}
7Phươ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 tạo đối tượng từ đối tượng cùng loại.
 Lớp không có hàm dựng sao chép.
 Trình biên dịch cung cấp.
class PhanSo
{
private:
int m_tuSo;
int m_mauSo;
public:
PhanSo(const PhanSo &p);
};
void main()
{
PhanSo p1(1, 2);
PhanSo p2(p1);
PhanSo p3 = p2;
}
8Phương pháp lập trình hướng đối tượng . 
Hàm dựng
 Dr. Guru khuyên:
 Một lớp nên có tối thiểu 3 hàm dựng:
 Hàm dựng mặc định.
 Hàm dựng có đầy đủ tham số.
 Hàm dựng sao chép.
class PhanSo
{ private:
int m_tuSo;
int m_mauSo;
public:
PhanSo();
PhanSo(int tuSo, int mauSo);
PhanSo(const PhanSo &p);
};
9Phương pháp lập trình hướng đối tượng . 
Nội dung
 Hàm dựng.
 Hàm hủy.
 Hàm toán tử.
 Bài tập.
10Phương pháp lập trình hướng đối tượng . 
Hàm hủy
 Vấn đề rò rỉ bộ nhớ (memory leak):
 Khi hoạt động, đối tượng có cấp phát bộ nhớ.
 Khi hủy đi, bộ nhớ không được thu hồi!!
 Giải pháp:
 Xây dựng phương thức thu hồi.
 Người dùng quên gọi!
 Làm “khai tử” cho đối tượng.
HocSinh
Họ tên
Điểm văn
Điểm toán
Thu hồi
Rò rỉ bộ nhớ!!
Hàm hủy vào cuộc!!
11Phương pháp lập trình hướng đối tượng . 
Hàm hủy
 Tính chất hàm hủy (destructor):
 Tự động gọi khi đối tượng bị hủy.
 Mỗi lớp có duy nhất một hàm hủy.
 Trong C++, hàm hủy có tên ~
class HocSinh
{
private:
char *m_hoTen;
float m_diemVan;
float m_diemToan;
public:
~HocSinh() { delete m_hoTen; }
};
void main()
{
HocSinh h;
HocSinh *p = new HocSinh;
delete p;
}
12Phương pháp lập trình hướng đối tượng . 
Nội dung
 Hàm dựng.
 Hàm hủy.
 Hàm toán tử.
 Bài tập.
13Phương pháp lập trình hướng đối tượng . 
Hàm toán tử
 Khái niệm hàm toán tử:
 Có thể dùng toán tử đặt tên hàm?
 Trong C++, dùng từ khóa operator.
PhanSo operator +(const PhanSo &p1, const PhanSo &p2);
 Hệ quả?
 Định nghĩa lại cách thực hiện toán tử.
PhanSo p1, p2;
PhanSo p3 = p1 + p2;
 Định nghĩa nhiều cách thực hiện khác nhau cho toán tử 
bằng nạp chồng hàm.
PhanSo operator +(const PhanSo &p, int so);
float opeartor +(const PhanSo &p, float so);
14Phương pháp lập trình hướng đối tượng . 
Hàm toán tử
 Ưu điểm:
 Thực hiện toán tử trên kiểu dữ liệu tự định nghĩa.
PhanSo p1, p2; HocSinh h1, h2;
PhanSo p3 = p1 + p2; if (h1 > h2)
h1++;
 Hạn chế:
 Không thể tạo toán tử mới.
 Không thể định nghĩa lại toán tử trên kiểu cơ bản.
 Ngôi của toán tử giữ nguyên.
 Độ ưu tiên của toán tử không đổi.
 Đôi khi gây nhầm lẫn!!
15Phương pháp lập trình hướng đối tượng . 
Hàm toán tử
 Phân loại hàm toán tử:
 Toán tử độc lập:
 Không thuộc lớp nào.
 Ngôi của toán tử là số tham số truyền vào.
PhanSo operator +(const PhanSo &p1, const PhanSo &p2);
bool operator >(const PhanSo &p1, const PhanSo &p2);
 Toán tử thuộc lớp:
 Là phương thức của lớp.
 Ngôi của toán tử: đối tượng của lớp + số tham số.
PhanSo PhanSo::operator +(const PhanSo &p);
bool PhanSo::operator >(const PhanSo &p);
 Cách sử dụng 2 loại là như nhau!!
16Phương pháp lập trình hướng đối tượng . 
Hàm toán tử
 Toán tử có thể định nghĩa lại:
Ngôi Nhóm Toán tử
1 Ngôi (Unary) Tăng giảm ++, --
Dấu số học +, -
Logic !, ~
Con trỏ *, &
Ép kiểu int, float, double, 
2 Ngôi (Binary) Số học +, -, *, /, %, +=, -=, *=, /=, %=
So sánh >, =, <=, !=
Logic &&, ||, &, |
Nhập xuất >
Gán =
Lấy chỉ số mảng [ ]
17Phương pháp lập trình hướng đối tượng . 
Hàm toán tử
 Toán tử không thể định nghĩa lại:
Toán tử Ý nghĩa
. Truy xuất phần tử
.* Truy xuất con trỏ phần tử
:: Toán tử ::
? : Toán tử điều kiện
# Chỉ thị tiền xử lý
# # Chỉ thị tiền xử lý
18Phương pháp lập trình hướng đối tượng . 
Hàm toán tử
 Dr. Guru khuyên:
 Những lưu ý khi định nghĩa lại toán tử:
 Ngôi: số lượng tham số.
 Toán hạng: kiểu dữ liệu tham số.
 Kết quả: kiểu trả về.
 Ví dụ:
 Toán tử >.
 Toán tử =.
 Toán tử [ ].
19Phương pháp lập trình hướng đối tượng . 
Tóm tắt
 Hàm dựng:
 Khởi tạo thông tin ban đầu cho đối tượng.
 Bắt buộc gọi khi tạo đối tượng.
 Mỗi lớp có thể có nhiều hàm dựng.
 Hàm hủy:
 Dọn dẹp bộ nhớ cho đối tượng.
 Tự động gọi khi đối tượng bị hủy.
 Mỗi lớp có duy nhất một hàm hủy.
20Phương pháp lập trình hướng đối tượng . 
Tóm tắt
 Hàm toán tử:
 Hàm có tên là toán tử.
 Dùng định nghĩa lại toán tử.
 Ràng buộc:
 Ngôi của toán tử giữ nguyên.
 Độ ưu tiên của toán tử không đổi.
 Không thể tạo toán tử mới.
 Không thể định nghĩa lại toán tử cho kiểu cơ bản.
 Có 2 loại hàm toán tử:
 

File đính kèm:

  • pdfbai_giang_phuong_phap_lap_trinh_huong_doi_tuong_bai_ham_dung.pdf