N i dung<br />
• L p: khai báo, ñ nh nghĩa hàm thành viên.<br />
<br />
Chương 3<br />
<br />
• ð i tư ng: khai báo, s d ng, gán.<br />
<br />
L P VÀ ð I TƯ NG<br />
<br />
• Sơ lư c v hàm xây d ng, hàm h y<br />
• D li u và hàm thành viên tĩnh<br />
• Khai thác 1 l p<br />
<br />
1<br />
<br />
2<br />
<br />
L p<br />
<br />
L p<br />
<br />
• Khai báo<br />
<br />
• Đ nh nghĩa hàm thành viên<br />
<br />
class {<br />
Thu c tính truy c p :<br />
<br />
Thu c tính truy c p :<br />
<br />
};<br />
<br />
Toán t ch<br />
ph m vi<br />
:: ( Các tham s<br />
<br />
+ Ki u )<br />
<br />
{<br />
< Khai báo các d<br />
<br />
li u c c b<br />
<br />
c a hàm><br />
<br />
< Thân hàm - N i dung hàm ><br />
<br />
Sơ ñ l p<br />
ñi m trong<br />
không gian<br />
2 chi u<br />
<br />
< Câu l nh return ><br />
}<br />
<br />
3<br />
<br />
4<br />
<br />
L p<br />
<br />
ð i tư ng<br />
<br />
• Ví d<br />
<br />
• Kh i t o ñ i tư ng<br />
– D ng bi n:<br />
VD:<br />
<br />
;<br />
<br />
Diem a, b;<br />
<br />
– D ng m ng: [Kích thư c];<br />
VD:<br />
<br />
Diem mang[10];<br />
1000H<br />
<br />
x<br />
y<br />
a<br />
<br />
1004H<br />
<br />
x<br />
y<br />
<br />
1008H<br />
x<br />
y<br />
mang<br />
<br />
b<br />
5<br />
<br />
6<br />
<br />
ð i tư ng<br />
<br />
ð i tư ng<br />
<br />
• Kh i t o ñ i tư ng<br />
<br />
• S d ng ñ i tư ng<br />
<br />
– D ng con tr :<br />
VD:<br />
<br />
– Khi kh i t o ñ i tư ng xong, ta có th :<br />
• Truy xu t ñ n d li u thành viên c a ñ i tư ng.<br />
• G i hàm trên ñ i tư ng.<br />
tùy theo thu c tính truy c p c a các thành ph n ñó.<br />
<br />
Diem *pa, *ds;<br />
pa= new Diem; ds= new Diem[10];<br />
delete pa; delete[] ds;<br />
<br />
Chú ý: Ph i c p và thu h i vùng nh cho con tr ñ i tư ng.<br />
*pa1060<br />
<br />
*ds 1064<br />
<br />
x<br />
y<br />
<br />
1060H<br />
<br />
1064H<br />
x<br />
y<br />
7<br />
<br />
8<br />
<br />
ð i tư ng<br />
<br />
ð i tư ng<br />
<br />
• Ví d<br />
<br />
• Phép gán ñ i tư ng:<br />
– Dùng d u = ( có s n trong ngôn ng C++).<br />
– Th c ch t là gán tương ng các thành ph n d li u c a hai<br />
ñ i tư ng cho nhau.<br />
– Ch ñúng khi thành ph n d li u không có con tr .<br />
=> Ph i ñ nh nghĩa l i phép gán khi d li u có con tr .<br />
void main() {<br />
Diem<br />
Diem<br />
<br />
a;<br />
<br />
a.KhoiTao(10,20);<br />
<br />
b, *pb;<br />
<br />
b = a;<br />
<br />
// In ra (10, 20)<br />
<br />
b.InDiem();<br />
<br />
pb = new Diem;<br />
9<br />
<br />
*pb = a; pb->InDiem();<br />
<br />
// In ra (10, 20)<br />
<br />
Hàm xây d ng – Hàm h y<br />
<br />
Hàm xây d ng – Hàm h y<br />
<br />
• Hàm xây d ng (Constructor)<br />
<br />
• Hàm xây d ng (constructor)<br />
<br />
– T i sao c n hàm xây d ng ?<br />
<br />
10<br />
<br />
– Dùng ñ kh i t o ñ i tư ng:<br />
• Gán giá tr ñ u cho các d li u thành viên.<br />
• C p vùng nh cho các con tr thành viên.<br />
<br />
– Cú pháp:<br />
• Cùng tên v i tên l p, không có tr tr v (k c void).<br />
hi u<br />
<br />
ng ph<br />
<br />
• Có th không có hay có nhi u tham s .<br />
• Có th không có, có 1 hay nhi u hàm xây d ng.<br />
<br />
– S d ng :<br />
C n ph i kh i t o giá tr ban ñ u<br />
cho các d li u thành viên<br />
<br />
• Không ñư c g i tr c ti p.<br />
• S ñư c t ñ ng g i khi kh i t o ñ i tư ng.<br />
11<br />
<br />
12<br />
<br />
Hàm xây d ng – Hàm h y<br />
<br />
Hàm xây d ng – Hàm h y<br />
<br />
• Ví d 1 v hàm xây d ng<br />
<br />
• Ví d 2 v hàm xây d ng<br />
<br />
class Diem {<br />
int x,y;<br />
public:<br />
Diem();// xd m c nhiên<br />
Diem(int);<br />
Diem(int,int);<br />
...<br />
};<br />
Diem::Diem()<br />
{ x=y=0; }<br />
Diem::Diem(int a)<br />
{ x = y = a; }<br />
Diem::Diem(int h, int t)<br />
{ x=h; y=t; }<br />
<br />
void main() {<br />
// Goi Diem()<br />
Diem a;<br />
// In (0,0)<br />
a. InDiem();<br />
// Diem(int,int)<br />
Diem b(10,5);<br />
// Diem(int)<br />
Diem c(3);<br />
Diem *pa = new Diem();<br />
Diem *pb = new Diem(10,5);<br />
Diem *pc = new Diem(3);<br />
// Goi Diem()<br />
Diem ds1[10];<br />
// Goi Diem()<br />
Diem *ds2 = new Diem [10];<br />
...<br />
}<br />
13<br />
<br />
14<br />
<br />
Hàm xây d ng – Hàm h y<br />
<br />
Các lo i ñ i tư ng<br />
<br />
• Hàm h y (destructor)<br />
<br />
• ð i tư ng toàn c c - ð i tư ng c c b<br />
<br />
– Dùng ñ thu h i vùng nh ñã c p cho các d li u thành<br />
viên là con tr c a ñ i tư ng, khi h y b ñ i tư ng.<br />
=> delete các con tr là d li u thành viên.<br />
– M t l p có th không có ho c ch có duy nh t 1 hàm h y.<br />
– Cú pháp : ~ ( ) { … }<br />
– Không ñư c g i tr c ti p mà s ñư c t ñ ng g i khi h y<br />
b ñ i tư ng.<br />
VD:<br />
<br />
– ð i tư ng toàn c c :<br />
• Khai báo ngoài các l p và ngoài hàm main().<br />
• S ñư c kh i t o (t ñ ng g i hàm xây d ng tương<br />
ng) trư c khi hàm main() th c thi.<br />
• S ñư c h y b ( t ñ ng g i hàm h y cho ñ i tư ng )<br />
sau khi k t thúc hàm main().<br />
– ð i tư ng c c b :<br />
• Khai báo trong m t hàm.<br />
<br />
Diem::~Diem () { }<br />
SinhVien::~SinhVien() {<br />
delete[] hoten;<br />
}<br />
<br />
• S kh i t o trong khi th c thi hàm ñó.<br />
15<br />
<br />
• S ñư c h y b ( t ñ ng g i hàm h y cho ñ i tư ng<br />
ñó) trư c khi hàm k t thúc.<br />
16<br />
<br />
D<br />
<br />
li u và hàm thành viên tĩnh<br />
<br />
D<br />
<br />
• D li u thành viên tĩnh (static)<br />
<br />
li u và hàm thành viên tĩnh<br />
<br />
• Hàm thành viên tĩnh (static)<br />
<br />
– Là d li u thành viên dùng chung cho t t c các ñ i tư ng<br />
c a cùng 1 l p => t n t i ñ c l p v i các ñ i tư ng.<br />
– Gi ng như 1 bi n toàn c c.<br />
<br />
– ð c l p v i các ñ i tư ng<br />
=> khi g i hàm không c n ñ i tư ng nào :<br />
::<br />
:: (danh sách tham s )<br />
<br />
– Ph i ñư c kh i t o bên ngoài c a l p.<br />
<br />
– Ch c n thêm static vào trư c khai báo hàm trong l p.<br />
<br />
– Thư ng ñư c s d ng ñ ñ m s lư ng ñ i tư ng hi n có.<br />
<br />
– Gi ng như 1 hàm toàn c c.<br />
<br />
T i th i ñi m này<br />
17<br />
dem = ?<br />
<br />
Khai thác m t l p<br />
<br />
Khai thác m t l p<br />
• Tránh ñ nh nghĩa l p nhi u l n :<br />
<br />
• Khai báo l p : file .hpp<br />
• ð nh nghĩa hàm thành viên : file .cpp<br />
• S d ng l p : trong 1 file khác<br />
<br />
18<br />
<br />
ð tránh #include nhi u<br />
<br />
vidu.cpp<br />
<br />
l n m t l p có trong<br />
nhi u t p tin khác nhau,<br />
<br />
Diem.hpp<br />
<br />
#include “Diem.hpp”<br />
class Diem {<br />
int x,y;<br />
...<br />
};<br />
<br />
Diem.cpp<br />
<br />
Vidu.cpp<br />
#include “Diem.cpp”<br />
<br />
Diem::Diem()<br />
{… }<br />
void Diem::InDiem()<br />
{…}<br />
...<br />
<br />
void main () {<br />
Diem a;<br />
a.InDiem();<br />
….<br />
}<br />
<br />
ta dùng các t<br />
x<br />
<br />
khóa ti n<br />
<br />
lý.<br />
#ifndef<br />
#define<br />
#endif<br />
<br />
19<br />
<br />
20<br />
<br />