Xem mẫu

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