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.
ꢀ “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.
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 đủ
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:
bai_giang_phuong_phap_lap_trinh_huong_doi_tuong_chuong_3_von.pdf

