Professional Documents
Culture Documents
TRNG I HC HNG HI
B MN: KHOA HOC MA Y TI NH
KHOA: CNG NGH THNG TIN
BI GING
LP TRNH HNG I TNG V C++
HI PHNG - 2008
L thuyt
45
T hc
0
Loi hc phn : 2
Khoa ph trch: CNTT
Tng s TC: 4
Bi tp ln
0
n mn hc
0
i tng v lp.
TS
3
KT
ngn ng C++
18
Chng 5: i tng v Lp
13
Chng 8: Bn mu
8.1 Hm bn mu
8.2 u khuyt im ca hm bn mu
8.3 Lp bn mu
/20
ii
MC LC
CHNG I: LP TRI NH HNG I TNG VA NGN NG C++ ................... 1
1. S pht trin ca cc k thut lp trnh.......................................................................... 1
1.1 L p trin h khng co c u truc (hay l p trin h tuy n tin h) ............................................ 1
1.2 L p trinh thu tu c hay l p trinh co c u truc ............................................................... 1
1.3 L p trin h module ...................................................................................................... 3
1.4 L p trin h hng i tng ....................................................................................... 4
2. M t s khai ni m c bn ca lp trnh hng i tng ............................................... 5
2.1 Ki u d li u tru tng ADT(Astract Data Type) .................................................. 5
2.2 i tng (Objects) v lp (Classes) ...................................................................... 5
2.3 K tha (Inheritance) ............................................................................................... 6
2.4 Dynamic Binding (rng buc ng) v Porlymorphism (a xa ho c a th ) .......... 6
3. Ngn ng l p trin h C++ v OOP. .................................................................................. 7
3.1 S pht trin ca cc ngn ng l p trin h hng i tng...................................... 7
3.2 Ngn ng l p trinh C++. .......................................................................................... 8
4. Bi tp ............................................................................................................................ 8
CHNG II: NHNG KHAI NIM M U .............................................................. 9
1. Chng trinh u tin .................................................................................................... 9
1.1 Qu trnh bin dch mt chng trin h C++ ............................................................. 9
1.2 Chng trin h u tin. ........................................................................................... 13
2. Bi n, h ng va t m hoa t ng cua cac bi n ................................................................... 15
2.1 Cu php khai bo bin (variable declaration) ........................................................ 15
2.2 T m hoa t ng cua cac bi n .................................................................................. 16
2.3 Khai bao bi n ngay trong cu phap cua cac cu l nh i u khi n ............................ 16
2.4 Cc kiu bin ......................................................................................................... 17
2.5 Lin k t bi n khi bin dich
.................................................................................... 18
2.6 Cc hng ................................................................................................................ 18
3. Hm trong C++ ............................................................................................................ 19
4. Cc cu truc iu khin ................................................................................................ 20
4.1 Cu l nh if-else ...................................................................................................... 20
4.2 Vong lp khng xc nh while ............................................................................. 20
4.3 Vong lp khng xc nh do while ..................................................................... 21
4.4 Vong lp xc nh for ............................................................................................ 21
4.5 Cc t kha break v continue ............................................................................... 22
4.6 Cu l nh la cho n switch ....................................................................................... 22
4.7 Cu l nh goto ......................................................................................................... 23
4.8 qui ..................................................................................................................... 23
iii
vi
L p trin
h khng co c u truc. Chng trin
h chinh
thao tac trc ti p trn cac d liu toan cu c
M t s nh c i m cua l p trin h khng co c u truc:
+ L p trinh khng co c u truc khng co kha nng ki m soat tinh th y c cua d
li u. Mi d liu trong chng trnh u l bin ton cc do c th b thay i bi bt
ky phn no ca chng trnh.
+ Vi c khng ki m soat c tin h th y c cua d li u dn n cac kho khn trong
vi c g li chng trin h, c bi t la cac chng trin h ln.
+ K thut lp trnh khng c cu truc c rt nhiu bt li ln khi chng trnh
ln. V d nu chung ta cn thc hin li mt on cu lnh trn mt tp d liu khc th
bu c phai copy oa n l nh o ti vi tri trong chng trin h ma chung ta mu n thc hi n
.
i u nay lam nay sinh y tng trich ra cac o n lnh thng xuyn cn thc hin , t
tn cho chung va a ra m t ky thu t cho phep go i va tra v cac gia tri t cac thu tu c nay .
1.2 L p trin
h thu tu c hay l p trin
h co c u truc
Vi l p trin h thu tu c hay hng th tc chung ta c th nhm cc cu lnh thng
xuyn thc hi n trong chng trin h chin h la i m t ch va t tn oa n cu l nh o thanh
1
L p trin
h thu tu c. Sau khi chng trin
h con th c hin xong i u
khi n c tra v ngay sau vi tri
li go i ti chng trin
h con
Chng trin h chin h co nhi m vu truy n cac d li u cho cac li go i cu th
, d li u
c x ly cu c b trong chng trinh con sau o cac k t qua thc hi n nay c tra v cho
chng trinh chnh. Nh v y lu ng d li u co th c minh ho a nh la m t thi phn
c p, m t cy:
L p trin
h hng thu tu c. Chng trin
h chinh ph i h p cac li
gi ti cc th tc vi cc d liu thch hp l cc tham s
L p trinh hng thu tu c la m t ky thu t l p trinh co nhi u u i m
. Khi nim
chng trin h con la m t y tng r t hay , n cho phep mt chng trnh ln c th c
chia thanh nhi u chng trin h con nho hn , o o d vi t hn va it li hn . co th s
dng c cc th tc chung hoc mt nhm cc th tc trong cc chng trnh khc
,
ngi ta a phat minh ra m t ky thu t l p trinh mi
, o la ky thu t l p trinh theo ki u
module.
1.3 L p trin
h module
Trong l p trin h module cac thu tu c co cung m t chc nng chung se c nhom la i
vi nhau ta o thanh m t module ring bi t . M t chng trin h se khng chi bao g m m t
ph n n le . N c chia thnh mt vi ph n nho hn tng tac vi nhau qua cac li go i
th tc v to thnh ton b chng trnh.
L p trin
h module. Chng trin
h chinh la s k t h p gia cac li go i ti cac
th tc trong cc module ring bit vi cc d liu thich h p
Mi module co d li u ring cua no . i u nay cho phep cac module co th ki m soat
cc d liu ring ca n bng cc li gi ti cc th tc trong module . Tuy nhin mi
module chi xu t hi n nhi u nh t m t l n trong ca chng trin h.
Y u i m cua l p trin h thu tu c va l p trin h module hoa:
+ Khi phc ta p cua chng trinh tng ln s phu thu c cua no vao cac ki u d
li u c ban ma no x ly cung tng theo . V n tr nn ro rang r ng c u truc d li u s
dng trong chng trnh cung quan trng khng kem cc phep ton thc hin trn chung .
i u nay cang l ro khi kic h thc chng trin h tng . Cc kiu d liu c x l nhiu
trong cac thu tu c cua m t chng trinh co c u truc . Do o khi thay i cai t cua m t ki u
d li u se dn n nhi u thay i trong cac thu tu c s du ng no .
+ M t nh c i m na la khi c n dung nhi u nhom lam vi c xy
dng m t
chng trinh chung . Trong l p trinh co c u truc mi ngi se c giao xy dng m t s
th tc v kiu d liu . Nhng l p trin h vin x ly cac thu tu c khac nhau nhng la i co lin
quan ti cac ki u d li u dung chung nn n u m t ngi thay i ki u d li u thi se lam
nh hng ti cng vic ca nhiu ngi khc , c bi t la khi co sai sot trong vi c lin la c
gia cac thanh vin cua nhom .
+ Vi c phat tri n cac ph m m m m t nhi u thi gian tp trung xy dng li cc cu
truc d liu c bn . Khi xy dng m t chng trin h mi trong l p trin h co c u truc l p
trnh vin thng phi xy dng li cc cu truc d liu c bn cho ph hp vi bi ton v
i u nay i khi r t m t thi gian.
1.4 L p trin
h hng i t ng
Trong l p trin h hng i t ng trong mi chng trin h chung ta co m t s cac i
t ng (object) c th tng tc vi nhau , thu c cac lp (class) khc nhau, mi i t ng
t quan ly l y cac d li u cua ring chung .
2. M t s khai nim
c ban cua l p trin
h hng i t ng
2.1 Ki u d liu tru t ng ADT(Astract Data Type)
M t s ngi inh
nghia OOP la l p trinh vi cac ki u d li u tru t ng va cac m i
quan h gia chung . Trong ph n nay chung ta se xem xet cac ki u d li u tru t ng nh
l mt khi nim c bn ca OOP v s dng mt s v d minh ha.
inh
nghia v ki u d li u tru t ng : M t ki u d li u tru t ng la m t m hin h
ton hc ca cc i tng d liu to thnh mt kiu d liu v cc ton t
(phep ton)
thao tac trn cac i t ng o. Chu l trong nh ngha ny cc ton t thao tc trn cc
i t ng d li u g n li n vi cac i t ng ta o thanh m t ki u d li u tru t ng . c t
v m t ki u d li u tru t ng khng co b t ky m t chi ti t cu th nao v cai t bn trong
ca kiu d liu. Vi c cai t m t ki u d li u tru t ng oi hoi m t qua trin h chuy n i
t c ta cua no sang m t cai t cu th trn m t ngn ng l p trin h cu th . i u nay cho
phep chung ta phn bit cc ADT vi cc thut ng kiu d liu (data type) v cu truc d
li u (data structure). Thu t ng ki u d li u c p ti m t cai t cu th
(c th l kiu
built in ho c do ngi dung inh
ngha) ca mt m hnh ton hc c c t bi mt
End
2.2 i tng (Objects) v lp (Classes)
Trong m t chng trin h hng i t ng chung ta co cac i t ng . Cc i tng
ny l i din cho cc i tng thc trong thc t . C th coi kh i ni m i t ng trong
OOP chinh la cac ki u d li u trong cac ngn ng l p trinh co c u truc . Mi m t i t ng
c cc d liu ring ca n v c gi l cc member variable hoc l cc data member .
Cc ton t thao tc trn cc d liu ny c gi l cc member function . Mi m t i
t ng la th hi n (instance) ca mt lp. Nh v y lp la a i di n cho cac i t ng co cac
member function gi ng nhau va cac data member cung ki u . Lp l mt s tru tng ha
ca khi nim i tng. Tuy nhin lp khng phai la m t ADT , n l mt ci t ca mt
c ta ADT. Cc i tng ca cng mt lp c th chia se cc d liu dng chung , d li u
ki u nay c gi l class variable.
shape_list[i]->draw();
}
}
Khi bin dich
chng trinh nay thanh ma thc hi n (file .exe) trnh bin dch khng
th xac inh
c trong mang shape _list thi ph n t nao la Circle ph n t nao la Rec tange
v do khng th xc nh c phin bn no ca hm draw se c gi thc hin . Vi c
gi ti phin bn no ca hm draw thc hin se c quyt nh ti thi im thc
hi n chng trin h, sau khi a bin dich
v iu ny c gi l dynamic binding hoc late
binding. Ng c la i n u vi c xac inh
phin ban nao se c go i thc hi n tng ng vi
d li u g n vi no c quy t inh
static
ngay trong khi bin dich
thi ngi ta go i o la
binding. V d ny cung cung cp cho chung ta mt minh ha v kh nng a th
(polymorphism). Khi nim a th c dng ch kh nng ca mt thng ip c th
c gi ti cho cac i t ng cua nhi u lp khac n hau ta i thi i m thc hi n chng
trnh. Chung ta thy ro li gi ti hm draw se c gi ti cho cc i tng ca hai lp
Circle va Rectange ta i thi i m chng trinh c thc hi n . Ngoi cc khi nim c bn
trn OOP con co thm m t s khai ni m khac ch ng ha n nh name space va exception
handling nhng khng phai la cac khai ni m ban ch t .
3. Ngn ng l p trin
h C++ v OOP.
Gi ng nh b t ky m t ngn ng nao cua con ngi
, m t ngn ng l p trnh l
phng ti n din ta cac khai ni m , tng. Vi c phat tri n cac chng trinh hay ph n
m m la qua trin h m hin h hoa cac tra ng thai t nhin cua th gii thc va xy dng cac
chng trin h da trn cac m hnh .
Cc chng trnh thc hin chc nng m t phng php ci t ca m hnh.
t
n
thi gian. Cc trnh bin dch u tin ch sinh ra ma my , v lp trnh vin phi chn cc
cu l nh in vao xem thc s chng trinh ang lam gi . i u nay khng phai luc nao
cung hiu qu. Cc trnh bin dch hin i c th chn cc thng tin v ma ngun vo ma
thc hi n cua chng trin h . Thng tin nay se c s du ng bi cac b g li c p ngu n
y nng lc chi ra chin h xac i u gi ang din ra tro ng m t chng trin h b ng cach
theo d u (tracing) qu trnh thc hin ca n qua ton b ma ngun . M t vai trinh bin
dch gii quyt vn tc bin dch bng cch thc hin qu trnh bin dch trong b
nh (in-memory compilation). Cc trnh bin dch theo kiu ny lu trnh bin dch trong
b nh RAM . i vi cc chng trnh nh , qu trnh ny c th xem nh l mt trnh
thng dich.
10
Trnh bin dch thc hin kim tra kiu trong pha u tin ca qu trnh bin dch
.
Qu trnh kim tra ny thc hin kim th vic s dng cc tham s ca cc hm v ngn
ch n r t nhi u li l p trinh k hc nhau. V qu trnh kim tra kiu c thc hin trong qua
trnh bin dch ch khng phi trong qu trnh chng trnh thc hin nn n c gi l
ki m tra ki u tin h. M t vai ngn ng l p trin h hng i t ng (Java chng hn) thc hi n
ki m tra ki u ta i thi i m chng trinh cha y (dynamic type checking). N u k t h p ca
vi c ki m tra ki u tin h va ng thi se hi u qua hn nhng ki m tra ki u ng cung lam cho
chng trinh thc hi n bi a nh hng i chut . C++ s du ng ki m tra ki u tin h . Ki m tra
ki u tin h bao cho l p trin h vin v cac li v s du ng sai ki u d li u trong qua trin h bin
dch, v do ti u ha tc thc hin chng trnh . Khi ho c C++ chung ta se thy hu
h t cac quy t inh
thi t k cua ngn ng u t p trung vao cung c cac c i m : t c
nhanh, hng i t ng, cc c im m a lm cho ngn ng C tr nn ni ting . Chung
ta co th khng dun g tuy cho n ki m tra ki u tin h cua C ++ ho c cung co th thc hi n vi c
ki m tra ki u ng - ch cn vit thm ma.
Cc cng c cho vic bin dich c lp
Vi c bin dich
c l p r t c n thi t nh t la i vi cac d an ln. Trong ngn ng C
v C ++, m t l p trinh vin co th ta o ra cac oa n chng trinh nho d quan ly va c
ki m th c l p . Cng cu c ban chia m t chng trin h thanh cac ph n nho la kha
nng ta o ra cac thay th c t tn hay la cac chng trin h con . Trong C va C ++ m t
chng trin h con c go i la m t ham , v cc hm l cc on ma c th c thay th
trong cac file khac nhau , cho phep thc hi n qua trinh bin dich
c l p . Ni m t cach
khc cc hm l cc n v nguyn t ca ma ngun , v chung ta khng th t cc phn
khc nhau ca hm trong cc file khc nhau nn ni dung ca mt hm cn phi c t
hon ton trong mt file (m c du cac file co th cha nhi u hn 1 hm).
Khi chung ta go i n m t ham , chung ta thng truyn cho n mt vi tham s , o la
cc gi tr m chung ta mun hm lm vic vi khi n thc hin . Khi ham thc hi n xong
chung ta thng nh n c m t gia tri tra v , m t gia tri ma ham tra la i nh la m t k t qua .
Cung c th vit cc hm khng nhn cc tham s v khng tr v bt ky gi tr no .
to ra mt chng trnh vi nhiu file , cc hm trong m t file phai truy c p ti cac ham va
d li u trong cac file khac . Khi bin dich
m t file , trnh bin dch C hoc C ++ phi bit v
cc hm v d liu trong cc file khc c bit l tn v cch dng chung . Trnh bin dch
am bao cac ham va d li u c s du ng ung n . Qua trnh bo cho trnh bin dch tn
v nguyn mu ca cc hm v d liu bn ngoi c gi l khai bo (declaration). Khi
chung ta a khai bo mt hm hoc bi n trinh bin dich
se bi t cach thc ki m tra am
bo cc hm v d liu ny c s dng ung n.
Including cac file Header
H u h t cac th vi n u cha m t s l ng ang k cac ham va bi n . ti t ki m
cng s c va am bao s nh t quan khi khai bao ngoai cac ph n t nay , C va C ++ a s
dng mt loi file c gi l file header . Mi file header la m t file cha cac khai bao
ngoi cho 1 th vi n; theo qui c cac file nay co ph n m r ng la .h, nhng chung ta cung
c th dng cc ui file khc cho chung chng hn nh .hpp ho c .hxx. L p trin h vin ta o
ra cac file th vi n se cung c p cac header file . khai bao cac ham va cac bi n bn ngoai
th vi n ngi dung n gian chi c n thc hi n include file header o . include m t file
header chung ta s du ng chi thi ti n x ly #include. Ch th ny se bo cho b x l m file
11
header co tn tng ng va chen n i dung cua file o vao ch ma chi thi #include c s
dng. Tn file s du ng sau chi thi #include co th n m gia hai d u < v > ho c gia hai
d u .
V d: #include <header.h>
N u chung ta s du ng chi thi include theo cach trn thi b
tin x l se tm file
header theo cach c thu i vi cai t cua chung ta
, nhng thng thi se co m t vai
ng dn ma chung ta chi inh
cu th trong bi n mi trng cua trinh bin dich
ho c trn
dong lnh s dng cho vic tm cc file header . C ch thi t l p cac ng dn nay phu
thu c vao trin h bin dich
va mi trng ma chung ta lam vi c.
V d: #include header.h
Ch th tin x l nh trn thng c ngha l bo cho b ti n x ly tim file tng
ng trong th mc hin ti trc nu khng thy th se tm ging nh trong trng hp tn
file include c t gia hai d u < v >. Ni chung th i vi cc file include chun hoc
c s du ng nhi u chung ta nn c no trong th mu c m c inh
la include di th mu c
ci t trnh bin dch v dng ch th theo kiu <>, con i vi cc file c th vi ng
dng c th th dng kiu tn file t gia hai du . Trong qua trinh phat tri n cua C ++
cc nh cung cp cc trnh bin dch c cc qui c t tn khc nhau v cc h iu hnh
li c cc hn ch tn khc nhau c bit l di ca tn file . Cc vn ny gy ra cc
v n v tin h kha chuy n cua chng trin h . kh c phu c v n nay ngi ta a s du ng
m t inh
da ng chu n cho phep cac tn file header co th dai hn 8 k t v b i phn tn
m r ng. phn bi t m t chng trinh C va C ++ i khi ngi ta con dung cach thm
m t ky t c vao trc tn cua cac file header , chi ti t nay cung c ch p nh n i vi C
v C++.
Qu trnh lin kt
Trnh lin kt tp hp cc module object (thng la cac file c phn m rng l .o
ho c .obj), c sinh ra bi trinh bin dich
, thnh mt chng trnh c th thc hin c
v h iu hnh c th np vo b nh v chy . y la pha cu i cung trong qua trinh bin
dch. Cc c i m cua cac trin h lin k t thay i phu thu c vao cac h th ng khac nhau .
Ni chung chung ta ch cn ch ro cho trnh lin kt bit tn ca cc module object v cc
th vi n ma chung ta mu n lin k t , v tn ca chng tr nh kha cha y cu i cung . M t vai
h th ng oi hoi chung ta c n phai t go i ti cac trinh lin k t . Tuy nhin h u h t cac trinh
bin dich
hoan chinh u thc hi n h chung ta cng vi c nay .
S du ng cac th vin
Gi y ch ung ta a bit cc thut ng c bn , chung ta c th hiu cch thc s
dng mt th vin. s du ng m t th vi n c n phai :
+ Include file header cua th vi n
+ S du ng cac ham va cac bi n trong th vi n
+ Lin k t th vin vo chng trnh kh chy cui cng
Cc bc ny cung ung vi cc module object khng c trong cc th vin
Including m t file header va lin k t cac module object la cac bc c ban thc hi n
vi c bin dich
c l p trong C va C++.
12