Bài giảng Phương pháp lập trình hướng đối tượng - Chương 3: Vòng đời đối tượng - Nguyễn Minh Huy

Vòng đꢀi đꢁi tưꢂng  
GV. Nguyꢀn Minh Huy  
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ Nguyꢀn Minh Huy  
1
Nꢆi dung  
ꢀ Phương thꢇc khꢈi tꢉo.  
ꢀ Phương thꢇc hꢊy.  
ꢀ Thành phꢋn tĩnh.  
ꢀ Class Template.  
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ Nguyꢀn Minh Huy  
2
Nꢆi dung  
ꢀ Phương thꢃc khꢄi tꢅo.  
ꢀ Phương thꢇc hꢊy.  
ꢀ Thành phꢋn tĩnh.  
ꢀ Class Template.  
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ Nguyꢀn Minh Huy  
3
Phương thꢇc khꢈi tꢉo  
ꢀ Vꢌn đꢍ khꢈi tꢉo thông tin đꢃi tưꢄng:  
ꢀ Giá trꢎ ban đꢋu cꢊa thuꢆc tính?  
class PhanSo  
{
void main()  
{
private:  
PhanSo p;  
// Giá trꢆ cꢇa p??  
int  
m_tu;  
int  
};  
m_mau;  
}
ꢀ Khꢈi tꢉo bꢏng phương thꢇc truy xuꢌt (getter/setter):  
class PhanSo  
void main()  
{
{
public:  
PhanSo p;  
p.ganTu(1);  
p.ganMau(3);  
Ngưꢀi dùng  
quên gꢈi?!  
void ganTu(int tu);  
void ganMau(int mau);  
};  
}
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ Nguyꢀn Minh Huy  
4
Phương thꢇc khꢈi tꢉo  
ꢀ Tính chꢌt phương thꢇc khꢈi tꢉo:  
ꢀ “Làm khai sinh” cho đꢃi tưꢄng!!  
ꢀ Bꢐt buꢆc gꢑi khi khai báo đꢃi tưꢄng.  
ꢀ Có thꢒ nꢉp chꢓng nhiꢍu phương thꢇc.  
ꢀ Không có giá trꢎ trꢔ vꢍ.  
ꢀ Có tên trùng tên lꢂp (trong C++).  
class PhanSo  
{
void main()  
{
private:  
int  
PhanSo p1(1, 2);  
PhanSo p2( 5 );  
m_tu;  
int  
m_mau;  
PhanSo *p3 = new PhanSo(2, 3);  
public:  
}
PhanSo(int tu, int mau);  
PhanSo(int giaTri);  
};  
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ Nguyꢀn Minh Huy  
5
Phương thꢇc khꢈi tꢉo  
ꢀ Phương thꢇc khꢈi tꢉo mꢕc đꢎnh:  
ꢀ “Làm khai sinh” mꢕc đꢎnh!!  
ꢀ Không có tham sꢃ.  
ꢀ Nꢖu lꢂp không có phương thꢇc khꢈi tꢉo nào:  
ꢁ Trình biên dꢎch cꢌp.  
class PhanSo  
void main()  
{
{
PhanSo p;  
PhanSo *q = new PhanSo;  
private:  
int  
m_tu;  
}
int  
m_mau;  
public:  
PhanSo();  
};  
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ Nguyꢀn Minh Huy  
6
Phương thꢇc khꢈi tꢉo  
ꢀ Phương thꢇc khꢈi tꢉo sao chép:  
ꢀ “Làm khai sinh” bꢏng sao chép đꢃi tưꢄng khác.  
ꢀ Tham sꢃ là đꢃi tưꢄng cùng lꢂp.  
ꢀ Nꢖu lꢂp không có phương thꢇc khꢈi tꢉo sao chép:  
ꢁ Trình biên dꢎch cꢌp.  
class PhanSo  
void main()  
{
{
PhanSo p1(1, 2);  
private:  
int  
m_tu;  
// Sao chép p1ꢀ  
PhanSo p2(p1);  
// Sao chép p2ꢀ  
PhanSo p3 = p2;  
int  
public:  
m_mau;  
PhanSo(const PhanSo &p);  
};  
}
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ Nguyꢀn Minh Huy  
7
Phương thꢇc khꢈi tꢉo  
ꢀ Dr. Guru khuyên:  
ꢀ Mꢆt lꢂp nên có tꢃi thiꢒu 3 phương thꢇc khꢈi tꢉo:  
ꢂ Khꢈi tꢉo mꢕc đꢎnh.  
ꢂ Khꢈi tꢉo sao chép.  
ꢂ Khꢈi tꢉo vꢂi đꢋy đꢊ thông tin.  
class PhanSo  
{
private:  
int  
int  
m_tu;  
m_mau;  
public:  
PhanSo();  
PhanSo(const PhanSo &p);  
PhanSo(int tu, int mau);  
};  
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ Nguyꢀn Minh Huy  
8
Nꢆi dung  
ꢀ Phương thꢇc khꢈi tꢉo.  
ꢀ Phương thꢃc hꢇy.  
ꢀ Thành phꢋn tĩnh.  
ꢀ Class Template.  
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ Nguyꢀn Minh Huy  
9
Phương thꢇc hꢊy  
ꢀ Vꢌn đꢍ rò rꢗ bꢆ nhꢂ (memory leak):  
ꢀ Bꢆ nhꢂ cꢌp cho con trꢘ không tꢙ thu hꢓi.  
class HocSinh  
{
void main()  
{
private:  
char  
};  
HocSinh hs;  
*m_hoTen;  
}
// hs.m_hoTen đưꢁc thu hꢂi?  
ꢀ Xây dꢙng phương thꢇc thu hꢓi:  
void main()  
class HocSinh  
{
{
HocSinh hs;  
private:  
hs.thuHoiBoNho();  
char  
public:  
void thuHoiBoNho() {  
delete [ ]m_hoTen; }  
*m_hoTen;  
}
Ngưꢀi dùng  
quên gꢈi?!  
};  
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ Nguyꢀn Minh Huy  
10  
Phương thꢇc hꢊy  
ꢀ Tính chꢌt phương thꢇc hꢊy:  
ꢀ “Làm di chúc” cho đꢃi tưꢄng.  
ꢀ Tꢙ đꢆng gꢑi khi đꢃi tưꢄng bꢎ hꢊy.  
ꢀ Duy nhꢌt cho mꢚi lꢂp.  
ꢀ Có tên ~<Tên lꢉp> (trong C++).  
void main()  
class HocSinh  
{
{
HocSinh hs;  
HocSinh *p = new HocSinh;  
delete p;  
private:  
char  
float  
float  
public:  
*m_hoTen;  
m_diemVan;  
m_diemToan;  
// pꢃ>m_hoTen đưꢁc hꢄy.  
}
// hs.m_hoTen đưꢁc hꢄy.  
~HocSinh() { delete [ ]m_hoTen; }  
};  
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ Nguyꢀn Minh Huy  
11  
Nꢆi dung  
ꢀ Phương thꢇc khꢈi tꢉo.  
ꢀ Phương thꢇc hꢊy.  
ꢀ Thành phꢊn tĩnh.  
ꢀ Class Template.  
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ Nguyꢀn Minh Huy  
12  
Thành phꢋn tĩnh  
ꢀ Chia sꢛ giꢜa các đꢃi tưꢄng cùng lꢂp:  
ꢀ Mꢚi đꢃi tưꢄng có bꢔn sao riêng:  
ꢂ Thuꢆc tính.  
PhanSo  
ꢂ Phương thꢇc.  
ꢃTꢝ sꢃ  
ꢁ Thành phꢋn cꢊa đꢃi tưꢄng  
ꢃMꢞu sꢃ  
(object members).  
ꢃRút gꢑn()  
ꢀ Muꢃn dùng chung thông tin?  
p1: PhanSo p2: PhanSo  
ꢁ Thành phꢋn tĩnh  
ꢃTꢝ sꢃ: 1  
ꢃMꢞu sꢃ: 2  
ꢃRút gꢑn()  
ꢃTꢝ sꢃ: 1  
ꢃMꢞu sꢃ: 3  
ꢃRút gꢑn()  
(static members).  
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ Nguyꢀn Minh Huy  
13  
Thành phꢋn tĩnh  
ꢀ Tính chꢌt thành phꢋn tĩnh:  
ꢀ Thuꢆc tính, phương thꢇc thuꢆc phꢉm vi lꢂp.  
ꢀ Dùng chung cho mꢑi đꢃi tưꢄng cꢊa lꢂp.  
ꢀ Các sꢝ dꢟng (trong C++):  
ꢂ Khai báo: tꢠ khóa “static”.  
ꢂ Khꢈi tꢉo: bên ngoài lꢂp.  
ꢂ Truy xuꢌt: tên lꢉp kèm toán tꢝ ::.  
class PhanSo  
int PhanSo::m_giaTriLN = 10000;  
{
private:  
void main()  
static int m_giaTriLN;  
public:  
static int layGiaTriLN();  
{
int x = PhanSo::layGiaTriLN();  
}
};  
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ Nguyꢀn Minh Huy  
14  
Nꢆi dung  
ꢀ Phương thꢇc khꢈi tꢉo.  
ꢀ Phương thꢇc hꢊy.  
ꢀ Thành phꢋn tĩnh.  
ꢀ Class Template.  
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ Nguyꢀn Minh Huy  
15  
Class Template  
ꢀ Xét lꢂp mꢔng:  
ꢀ Các phꢋn tꢝ là sꢃ nguyên.  
ꢀ Tꢡng quát: các phꢋn tꢝ kiꢒu bꢌt kỳ.  
ꢁ Tham sꢃ hóa thuꢆc tính, phương thꢇc.  
ꢁ Class Template.  
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ Nguyꢀn Minh Huy  
16  
Class Template  
ꢀ Cách sꢝ dꢟng Class Template:  
void main()  
{
template <class T>  
class Mang  
{
Mang<int>  
m1( 10 );  
int a = m1.layPhanTu(5);  
int max1 = m1.timMax( );  
private:  
int  
T
public:  
m_kichThuoc;  
*m_duLieu;  
Mang<PhanSo> m2( 5 );  
PhanSo p = m2.layPhanTu( 2 );  
PhanSo max2 = m2.timMax( );  
Mang( int kichThuoc );  
T& layPhanTu( int i );  
T timMax( );  
}
};  
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ Nguyꢀn Minh Huy  
17  
Tóm tꢐt  
ꢀ Phương thꢇc khꢈi tꢉo:  
ꢀ “Làm khai sinh” cho đꢃi tưꢄng.  
ꢀ Bꢐt buꢆc gꢑi khi khai báo.  
ꢀ Có thꢒ nꢉp chꢓng.  
ꢀ
Phương thꢇc hꢊy:  
ꢀ “Làm di chúc” cho đꢃi tưꢄng.  
ꢀ Tꢙ đꢆng gꢑi khi hꢊy.  
ꢀ Có duy nhꢌt mꢆt.  
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ Nguyꢀn Minh Huy  
18  
Tóm tꢐt  
ꢀ Thành phꢋn tĩnh:  
ꢀ Dùng chung cho đꢃi tưꢄng cꢊa lꢂp.  
ꢀ Cách dùng (C++):  
ꢂ Khai báo bꢏng tꢠ khóa “static”.  
ꢂ Khꢈi tꢉo bên ngoài lꢂp.  
ꢂ Truy xuꢌt bꢏng toán tꢝ ::.  
ꢀ Class Template:  
ꢀ Tham sꢃ hóa kiꢒu thuꢆc tính, phương thꢇc.  
ꢀ Lưu trꢜ và xꢝ lý tꢡng quát trong lꢂp.  
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ Nguyꢀn Minh Huy  
19  
Bài tꢁp  
ꢀ Bài tꢁp 3.1:  
Trang bꢎ cho lꢂp phân sꢁ nhꢜng cách khꢈi tꢉo sau:  
ꢀ Khꢈi tꢉo mꢕc đꢎnh phân sꢃ = 0.  
ꢀ Khꢈi tꢉo vꢂi tꢝ và mꢞu cho trưꢂc.  
ꢀ Khꢈi tꢉo tꢠ giá trꢎ nguyên cho trưꢂc.  
ꢀ
Khꢈi tꢉo tꢠ mꢆt phân sꢃ khác.  
Phương pháp lꢁp trình hưꢂng đꢃi tưꢄng ꢅ Nguyꢀn Minh Huy  
20  
Tải về để xem bản đầy đủ
pdf 24 trang myanh 24420 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 - Chương 3: Vòng đời đối tượng - Nguyễn Minh Huy", để 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_chuong_3_von.pdf