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