Chapter 3 (cont)1. L畉p tr狸nh h動畛ng 畛i t動畛ng
H Vn Sang
B畛 m担n: Tin h畛c TC KT
Khoa: H畛 Th畛ng Th担ng Tin Kinh t畉 - H畛c Vi畛n Ti
Ch鱈nh
Tel: 0982.165.568
Email: sanghv@hvtc.edu.vn
Website: http://www.hvtc.edu.vn/sanghv
03/05/12 07:09 1
3. 4. M畉ng v con tr畛 c畛a 畛i t動畛ng
Khai b叩o
<t棚n_l畛p> <t棚n_m畉ng>[spt];
V鱈 d畛: SV sinhvien[50]; PS a[8];
<t棚n_l畛p> *<t棚n_con_tr畛>;
V鱈 d畛: SV *p = sinhvien;
3/20
4. 5. Hm b畉n v l畛p b畉n
Kh叩i ni畛m hm b畉n:
Hm b畉n c畛a m畛t l畛p l hm kh担ng ph畉i l
thnh ph畉n c畛a l畛p
Nh動ng c坦 kh畉 nng truy xu畉t 畉n m畛i thnh
ph畉n c畛a 畛i t動畛ng
C炭 ph叩p:
friend <ki畛u tr畉 v畛> <t棚n hm>(tham s畛);
Sau 坦 畛nh ngh挑a hm 畛 ngoi l畛p nh動 c叩c hm
t畛 do kh叩c 4/20
5. 5. Hm b畉n v l畛p b畉n (ti畉p)
V鱈 d畛:
X但y d畛ng l畛p PS v畛i ph辿p to叩n: +, -, to叩n t畛
nh畉p (>>), to叩n t畛 xu畉t (<<)
To叩n t畛 >>, << 達 動畛c x但y d畛ng v畛i c叩c ki畛u
d畛 li畛u chu畉n nh動 int, char, float
V畛i c叩c ki畛u d畛 li畛u m畛i ta ph畉i x但y d畛ng l畉i:
istream& operator>>(istream& is, PS &x);
Tr畉 v畛 b畛 nh畛 Ph畉i thay 畛i Gi叩 tr畛 c坦 th畛 5/20
畛m 畛 ph湛 h畛p thay 畛i
6. 5. Hm b畉n v l畛p b畉n (ti畉p)
Nh畉n x辿t
Hm b畉n kh担ng ph畉i l hm thnh vi棚n n棚n
kh担ng b畛 畉nh h動畛ng c畛a t畛 kho叩 truy xu畉t
Kh担ng h畉n ch畉 s畛 l動畛ng hm b畉n
Hm b畉n c畛a m畛t l畛p c坦 th畛 l hm t畛 do
Hm b畉n c畛a m畛t l畛p c坦 th畛 l hm thnh ph畉n
c畛a m畛t l畛p kh叩c 6/20
7. 5. Hm b畉n v l畛p b畉n (ti畉p)
Kh叩i ni畛m l畛p b畉n:
L畛p A l l畛p b畉n c畛a l畛p B n畉u trong B c坦
ch畛a khai b叩o:
friend class A;
V畉y:
N畉u A l l畛p b畉n c畛a B th狸 m畛i hm thnh ph畉n
c畛a A s畉 tr畛 thnh hm b畉n c畛a B
7/20
8. 6. Thnh ph畉n t挑nh
a. D畛 li畛u t挑nh
Kh叩i ni畛m:
L thnh ph畉n d畛 li畛u c畛a l畛p nh動ng kh担ng g畉n
c畛 th畛 v畛i 畛i t動畛ng no
D湛ng chung cho ton b畛 l畛p
C叩c 畛i t動畛ng c畛a l畛p 畛u d湛ng chung thnh
ph畉n t挑nh ny
8/20
9. 6. Thnh ph畉n t挑nh
a. D畛 li畛u t挑nh
Khai b叩o:
static <ki畛u d畛 li畛u> <t棚n thnh ph畉n>;
V鱈 d畛:
class PS{ int ts, ms;
static int count;
public:
PS(int m=0, int n=1){ ts=t; ms=m; count++;}
};
9/20
10. 6. Thnh ph畉n t挑nh
a. D畛 li畛u t挑nh
Truy xu畉t:
Theo 畛i t動畛ng (c叩ch th担ng th動畛ng)
V鱈 d畛:
PS a;
a.count=0;
Theo l畛p
V鱈 d畛:
PS::count=0;
10/20
11. 6. Thnh ph畉n t挑nh
a. D畛 li畛u t挑nh
Ch炭 箪:
T畛n t畉i ngay khi ch動a c坦 畛i t動畛ng no
Ph畉i 動畛c kh畛i t畉o tr動畛c khi 畛i t動畛ng ph叩t sinh
Ph畉i kh畛i t畉o ngoi m畛i hm theo c炭 ph叩p:
<ki畛u dl> <t棚n l畛p>::<t棚n thnh ph畉n dl> = <gi叩 tr畛>;
V鱈 d畛: int PS::count=0;
11/20
12. V鱈 d畛:
X但y d畛ng l畛p H坦a 董n c坦 m畛t thnh ph畉n d畛 li畛u
t挑nh 畛 ki畛m so叩t s畛 畛i t動畛ng H 動畛c c畉p ph叩t.
12/20
13. 6. Thnh ph畉n t挑nh
b. Ph動董ng th畛c t挑nh
Kh叩i ni畛m:
l hm thnh ph畉n c畛a l畛p nh動ng kh担ng g畉n
v畛i 畛i t動畛ng c畛 th畛 no
D湛ng 畛 thao t叩c chung cho l畛p
Trong th但n hm kh担ng c坦 畛i t動畛ng 畉n
static <ki畛u dl tr畉 v畛> <t棚n hm>(tham s畛);
V鱈 d畛: x但y d畛ng l畛p SV g畛m pt nh畉p, in 1 sinh
vi棚n. Nh畉p, in danh s叩ch sinh vi棚n. 13/20
14. 7. Thnh ph畉n h畉ng
a. D畛 li畛u h畉ng
Kh叩i ni畛m:
l thnh ph畉n d畛 li畛u c畛a l畛p nh動ng kh担ng
thay 畛i gi叩 tr畛 trong qu叩 tr狸nh t畛n t畉i
V鱈 d畛: V畛i l畛p nh但n s畛 th狸 s畛 CMT l tp h畉ng
Khai b叩o:
const <ki畛u dl> <t棚n thnh ph畉n>;
Thnh ph畉n h畉ng kh担ng th畛 thay 畛i sau khi 畛i
t動畛ng 動畛c h狸nh thnh
14/20
15. 7. Thnh ph畉n h畉ng
a. D畛 li畛u h畉ng
X叩c 畛nh gi叩 tr畛:
畛 hm kh畛i t畉o
V鱈 d畛: NS(int k=0):scmt(k){}
C炭 ph叩p
<t棚n l畛p>([ds tham s畛]):<tp h畉ng 1>(畛i s畛)
,<tp h畉ng 2>(畛i s畛)
.
{
//th但n hm kh畛i t畉o
15/20
}
16. 7. Thnh ph畉n h畉ng
b. Ph動董ng th畛c h畉ng
Kh叩i ni畛m:
l hm thnh ph畉n c畛a l畛p nh動ng kh担ng c坦
kh畉 nng thay 畛i thnh ph畉n dl trong 畛i t動畛ng
V鱈 d畛: V畛i l畛p PS th狸 ph動董ng th畛c in() l h畉ng
Khai b叩o:
<ki畛u dl tr畉 v畛> <t棚n hm>(tham s畛) const ;
畛nh ngh挑a:
<ki畛u dl tr畉 v畛> <t棚n l畛p>::<t棚n hm>(tham s畛) const
{ //th但n hm } 16/20
17. 8. Thnh ph畉n 畛i t動畛ng
Kh叩i ni畛m:
l thnh ph畉n d畛 li畛u c畛a l畛p c坦 ki畛u l m畛t
l畛p kh叩c
Khai b叩o:
<t棚n l畛p> <t棚n thnh ph畉n d畛 li畛u>
V鱈 d畛: thnh ph畉n ns c畛a l畛p SV l 畛i t動畛ng l畛p
date
17/20
18. Bi t畉p (week 5)
X但y d畛ng c叩c to叩n t畛 nh畉p >>, xu畉t << c畛a c叩c
bi t畉p trong tu畉n 4
N畉p ch畛ng c叩c to叩n t畛 ==, !=, >, <, >=, <= c畛a
c叩c bi t畉p trong tu畉n 4
18/20
19. Qui c叩ch n畛p bi
G畛i t畛i 畛a ch畛: sanghv@gmail.com
CC: sanghv@hvtc.edu.vn
Ti棚u 畛:
[L畛p][BT3][Stt][H畛 v t棚n]
V鱈 d畛:
[K43/41.01][BT3][14][L棚 hong V滴]
H畉n n畛p: 23h59 ngy 29/01/2008
19/20