Tải bản đầy đủ (.pdf) (208 trang)

Giáo trình lập trình hướng đối tượng c đặng ngọc hoàng thành

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.75 MB, 208 trang )


ĐẶNG NGỌC HOÀNG THÀNH

C++
LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG

Tài liệu học tập


ẹaởng Ngoùc Hoaứng Thaứnh

PH LC
GII THIU

.............................................................................................................7

MễI TRNG PHT TRIN TCH HP IDE ................................................... 10
CHNG 1.

C BN V C++ ............................................................................ 23

CHNG 2.

BIN V CC KIU D LIU..................................................... 26

T khúa ................................................................................................................................ 26
Kiu d liu nguyờn thy.............................................................................................. 27
Khai bỏo bin ..................................................................................................................... 28
Phm vi tỏc dng ca bin............................................................................................ 29
Khi to giỏ tr cho bin ................................................................................................ 31


Khi to giỏ tr cho bin tnh static .......................................................................... 32
Gii thiu v xõu kớ t .................................................................................................... 32
CHNG 3.

HNG .............................................................................................. 34

Hng s nguyờn................................................................................................................. 34
Hng s thc cú du chm ng ................................................................................ 34
Hng kớ t v hng xõu kớ t ........................................................................................ 35
Hng logic ............................................................................................................................ 36
nh ngha mt hng #define ..................................................................................... 36
Khai bỏo hng const ........................................................................................................ 37
CHNG 4.

TON T ....................................................................................... 38

Toỏn t gỏn ......................................................................................................................... 38
Toỏn t thc hin phộp toỏn s hc ........................................................................ 39
Toỏn t gỏn hp nht ..................................................................................................... 40
Toỏn t tng v{ gim ...................................................................................................... 40
Toỏn t logic ...................................................................................................................... 42
Toỏn t iu kin ............................................................................................................. 43
Toỏn t phõn tỏch ............................................................................................................ 45
Trang |2

C++

Toỏn t so sỏnh................................................................................................................. 41



ẹaởng Ngoùc Hoaứng Thaứnh
Toỏn t dch bit................................................................................................................. 45
Toỏn t chuyn i kiu d liu ................................................................................ 48
Cỏc toỏn t khỏc ............................................................................................................... 49
Th t u tiờn ca cỏc toỏn t ................................................................................... 49
CHNG 5.

XUT NHP C BN .................................................................. 52

Xut d liu chun cout ................................................................................................. 52
Nhp d liu chun cin .................................................................................................. 53
Nhp d liu nh lp stringstream .......................................................................... 54
CHNG 6. CC CU TRC LNH IU KHIN ............................................ 57
Cu trỳc lnh cú iu kin: if v else ........................................................................ 57
Cu trỳc lp ......................................................................................................................... 59
Cu trỳc la chn: switch ............................................................................................. 66
CHNG 7.

HM................................................................................................. 70

Khai bỏo v s dng hm.............................................................................................. 71
Phm vi tỏc dng ca bin............................................................................................ 75
Hm khụng tr v giỏ tr - Hm void. ....................................................................... 76
Tham bin v tham tr .................................................................................................... 77
Giỏ tr mc nh ca tham s hỡnh thc .................................................................. 80
Chng cht hm ................................................................................................................ 81
Hm ni tuyn ................................................................................................................... 82
H{m quy ......................................................................................................................... 83
Hm mu Template Function .................................................................................. 84
CHNG 8. CC KIU D LIU Cể CU TRC.............................................. 86

Mng ...................................................................................................................................... 86
Xõu kớ t ............................................................................................................................... 90
CHNG 9.

CON TR ........................................................................................ 91

Toỏn t tham chiu ngc * ........................................................................................ 92
Khai bỏo bin con tr...................................................................................................... 94
Trang |3

C++

Toỏn t tham chiu & ..................................................................................................... 91


ẹaởng Ngoùc Hoaứng Thaứnh
Con tr, mng v xõu kớ t............................................................................................ 96
Cỏc phộp toỏn s hc trờn con tr............................................................................. 98
Con tr tr vo con tr ................................................................................................ 100
Con tr void ..................................................................................................................... 102
Con tr null ...................................................................................................................... 103
Con tr hm ..................................................................................................................... 103
CHNG 10. B NH NG .......................................................................... 105
Toỏn t new v new[] ................................................................................................. 105
Toỏn t delete v delete[] ......................................................................................... 107
CHNG 11. KIU D LIU STRUCT V CON TR STRUCT ................. 108
Struct .................................................................................................................................. 108
Con tr struct .................................................................................................................. 112
Struct lng nhau ............................................................................................................ 113
Kớch thc b nh ca struct ................................................................................... 113

CHNG 12. CC KIU D LIU KHC ...................................................... 115
Kiu d liu t nh ngha ......................................................................................... 115
Kiu d liu union thng ........................................................................................ 115
Kiu d liu union n danh ....................................................................................... 116
Kiu d liu enum......................................................................................................... 116
CHNG 13. LP TRèNH HNG I TNG ........................................ 118
Lch s hỡnh thnh ........................................................................................................ 118
Lp v{ i tng ........................................................................................................... 124
Hm to v hm hy .................................................................................................... 128
Chng cht hm to ...................................................................................................... 130
Sao chộp hm to .......................................................................................................... 131
Tớnh úng gúi Encapsulation ................................................................................ 137
Lp c khai bỏo nh t khúa struct v union ............................................. 139
Con tr this ...................................................................................................................... 139
Trang |4

C++

Con tr i tng .......................................................................................................... 138


ẹaởng Ngoùc Hoaứng Thaứnh
Th{nh viờn tnh T khúa static ............................................................................ 141
Hm bn v lp bn ..................................................................................................... 142
Chng cht toỏn t ....................................................................................................... 145
Tớnh k tha - Inheritance......................................................................................... 151
Cỏc mc truy cp ........................................................................................................... 154
Tớnh a k tha Multiple Inheritance ............................................................... 157
Tớnh a hỡnh Polymorphism ................................................................................. 159
Tớnh trỡu tng húa - Abstraction .......................................................................... 164

Lp Template.................................................................................................................. 165
CHNG 14. NAMESPACE ............................................................................... 167
T khúa namespace ..................................................................................................... 167
T khúa using ................................................................................................................. 168
Phm vi ca namespace ............................................................................................. 169
Bit danh cho namespace .......................................................................................... 170
Namespace std ............................................................................................................... 170
CHNG 15. NGOI L .................................................................................... 171
Mnh trycatch ....................................................................................................... 171
Mnh throw ............................................................................................................... 171
Th vin chun exception ......................................................................................... 172
CHNG 16. LM VIC VI FILE................................................................... 173
M file ................................................................................................................................ 173
úng file ............................................................................................................................ 175
File vn bn...................................................................................................................... 175
Kim tra trng thỏi ca cỏc c hiu ....................................................................... 176
Con tr get v put .......................................................................................................... 177
File nh phõn.................................................................................................................... 179
CHNG 17. CC LP TH VIN ................................................................. 181
1. Lp s phc complex .............................................................................................. 181
Trang |5

C++

B m v{ ng b húa .............................................................................................. 180


ẹaởng Ngoùc Hoaứng Thaứnh
2. Lp ngn xp stack .................................................................................................. 183
3. Lp h{ng i queue................................................................................................. 184

3. Lp vector ................................................................................................................... 185
4. Lp string .................................................................................................................... 187
5. Lp list .......................................................................................................................... 190
6. Lp map ....................................................................................................................... 190
7. Lp set .......................................................................................................................... 191
HNG DN THC HNH ............................................................................... 192
BI THC HNH S 1 ................................................................................................. 192
BI THC HNH S 2 ................................................................................................. 193
BI THC HNH S 3 ................................................................................................. 194
BI THC HNH S 4 ................................................................................................. 194
BI THC HNH S 5 ................................................................................................. 195
BI THC HNH S 6 ................................................................................................. 195
BI TP NNG CAO ............................................................................................ 197
BI TP LN ....................................................................................................... 204
DANH SCH HèNH ............................................................................................... 206

C++

TRA CU T KHểA ............................................................................................ 207

Trang |6


ẹaởng Ngoùc Hoaứng Thaứnh

GII THIU
1. Cu trỳc ca giỏo trỡnh
Gi|o trỡnh c chia ra lm 17 chng v mi chng c chia lm
cỏc mc khỏc nhau. C|c chng c sp xp theo trỡnh t t lp trỡnh
hng th tc trờn C++ n lp trỡnh hng i tng v cỏc lp th

vin c bn. Bn cú th truy cp vo mc bt kỡ t phn ph lc nm u
sỏch. Nhiu mc bao gm cỏc vớ d mụ t cỏch s dng. Tụi khuyờn
cỏc bn nờn c cỏc vớ d ny v cú th hiu mi on m~ chng trỡnh
trc khi c chng tip theo.
Mt cỏch thc tt tng lng kin thc m bn nhn c ú l{
hóy chnh sa, b sung cỏc chc nng mi trờn vớ d mu, theo hng t
duy ca bn, t ú bn cú th hiu mt c|ch y v ni dung m
bn ~ c. ng lo s iu ú, nú ch tt cho bn m thụi.
Sau khi c xong giỏo trỡnh, tụi cũn cung cp mt s bi tp thc hnh
ngh bn cú th th nghim. Tụi khuyờn bn nờn gii nhng bi tp
ny, chỳng s rt hu ớch v giỳp bn cng c li kin thc mụn hc cng
nh hiu sõu sc hn phn lý thuyt.
Mt iu na m bn cn lu ý, bn h~y c trang cui cựng ca cun
s|ch, nm c mt s thut ng anh-vit tng ng c s dng
trong giỏo trỡnh ny. Tụi cng cú gng s dng tờn gi phự hp nht vi
i a s cỏc giỏo trỡnh hin hnh. Tuy nhiờn, bn cng nờn nm cỏc
thut ng ting anh tng ng, cú th tham kho thờm cỏc ti liu
chuyờn mụn ting anh.

2. Mt vi chỳ ý v s tng thớch ca C v C++
Chun ANSI-C++ c mt t chc tiờu chun quc t thng nht a
ra. Nú c chớnh thc ra mt v{o th|ng 11 nm 1997 v{ duyt li vo
Trang |7

C++

Khi vit giỏo trỡnh ny, tụi khụng th trỏnh khi sai sút. Rt mong s
úng gúp ý kin quý bỏu ca cỏc bn c gi cng nh c|c bn ng
nghip. Mi s úng gúp xin liờn h theo a ch email:
Hi vng vi cỏc ý kin úng gúp ca cỏc bn,

giỏo trỡnh ny s ngy cng hon thin hn.


ẹaởng Ngoùc Hoaứng Thaứnh
nm 2003. Tuy nhiờn, ngụn ng C++ ~ tn ti trc ú mt thi gian
kh| d{i (v{o nm 1980). Trc ú, cú rt nhiu trỡnh dch khụng h tr
c|c tớnh nng mi bao gm c chun ANSI-C++. Giỏo trỡnh ny c xõy
dng trờn c|c chng trỡnh dch hin i h tr y chun ANSI-C++.
Tụi m bo vi bn rng cỏc vớ d s hot ng tt nu bn s dng
mt trỡnh dch h tr ANSI-C++. Cú nhiu s chn la cho bn, cú th l
min phớ hoc cỏc phn mm thng mi. Trong giỏo trỡnh ny, chỳng
tụi gii thiu n bn hai cụng c biờn dch C++ l GCC MinGW min
phớ v Visual C++ - thng mi.

Cỏc vớ d trong cun giỏo trỡnh ny l cỏc vớ d chy trờn mn hỡnh
console (m{n hỡnh DOS). iu ú cú ngha l{ nú s dng ch vn bn
hin th cỏc kt qu. Mi trỡnh dch C++ u h tr ch dch
console. Bn hóy kim tra trỡnh dch ca mỡnh bit thờm thụng tin v
cỏch biờn dch mt chng trỡnh C++. Vi mt mụi trng phỏt trin tớch
hp IDE cho C++ min phớ, bn cú th s dng chng trỡnh Codeblocks
hoc Eclipse. Chỳng l cỏc chng trỡnh dch h tr ch console ln
ch windows form. Chỳng h tr mụi trng GCC biờn dch c C v
C++. Vi CodeBlocks, bn cú th download phn mm ti a ch
i vi Eclipse, nú l mt trỡnh
son tho v biờn dch ngụn ng lp trỡnh chuyờn nghip nht nhng
hon ton min phớ (vỡ ta cú th cu hỡnh kt hp vi cỏc cụng c biờn
dch c tớch hp). Bn cú th dựng nú son tho v biờn dch Java,
PHP, JSP, Python v{ hin nhiờn l c C/C++. }y l{ mt d ỏn mó
ngun m, tiờu tn hng triu ụla ca IBM. Bn cú th ti v bn mi
nht cho n thi im n{y (nm 2010) l{ Eclipse Helios ti a ch:

/>helios/R/eclipse-cpp-helios-win32.zip. Nhng bn cn ti thờm mt d
ỏn m GCC biờn dch cỏc d ỏn ca bn. Tụi khuyờn bn nờn s dng
MinGW, nú cng l{ mt d ỏn m. Bn cú th ti v ti a ch:
/>%20Installer/mingw-get-inst/mingw-get-inst-20100831/mingw-getinst-20100831.exe. Vi Eclipse, thỡ cụng vic cu hỡnh ban u tng i
phc tp (nhng bn hon ton cú th thc hin trong 5 phỳt). Nu bn
cu hỡnh thnh cụng, bn s thy qu tht khụng lóng phớ thi gian ca
bn chỳt no. Bi nú l mt trỡnh IDE (mụi trng phỏt trin tớch hp)
Trang |8

C++

3. Trỡnh biờn dch


ẹaởng Ngoùc Hoaứng Thaứnh
quỏ chuyờn nghip vi mt d ỏn mó ngun m. Nu bn cn s dng
nú lp trỡnh ngụn ng gỡ, bn ch vic ti thờm plugin h tr cho nú.
Nhiu nh phỏt trin ~ s dng Eclipse lm nn ti cho vic phỏt trin
cỏc ng dng ca mỡnh: Embarcadero s dng nú phỏt trin JBuider,
Adobe s dng nú phỏt trin Flash Buider v rt nhiu cỏc hóng phn
mm ni ting khỏc.
Thờm mt nguyờn nhõn na tụi gii thiu cho bn trỡnh IDE
Eclipse tuyt vi ny ú l{ rt nhiu hóng phn mm trờn th trng
hin nay rt quan t}m n nú. Nu bn l mt lp trỡnh viờn Java, Eclipse
l mt s la chn khụng th b qua. Nu bn phỏt trin Flash theo d
ỏn mó ngun m t Adobe, Eclipse cng l{ s la chn hon ho. Nu
bn phỏt trin C/C++, vi cỏc trỡnh son tho thỡ Eclipse cng l{ s la
chn khỏ hon. Nu bn s dng Eclipse son tho v biờn dch
C/C++ (nh vo cụng c h tr MinGW), bn s cú nhiu kinh nghim s
dng nú. Vic s dng thnh tho Eclipse s l mt li th khi bn tin

hnh nghiờn cu Java, lp trỡnh Web, Flex, Python sau ny.

C++

Bờn cnh ú, chỳng tụi cng gii thiu n bn mụi trng phỏt trin
tớch hp IDE Microsoft Visual Studio 2010. }y l{ trỡnh biờn dch thng
mi. Bn cú th s dng phỏt trin cỏc ng dng trờn nn NET hoc
cỏc ng dng Win32. Nu bn mun phỏt trin cỏc ng dng theo hng
ca Microsoft, bn nờn s dng Visual Studio. Phiờn bn mi nht n
thi im ny l VS 2010. Nhng bn lu ý rng, khi nghiờn cu Visual
C++, bn cn chn la phiờn bn dnh cho Win32 ch khụng phi l ng
dng CLR (common language runtime) bi nú c phỏt trin trờn nn
NET. V Visual C++ for NET cú mt s khỏc bit so vi Visual C++ for
Win32 v{ nú cng khụng hon ton tuõn theo cỏc chun mc ca ANSI
C++.

Trang |9


ẹaởng Ngoùc Hoaứng Thaứnh

MễI TRNG PHT TRIN TCH HP IDE
1. CodeBlocks
Tụi s hng dn cho bn cỏch s dng codeblocks vit v biờn dch
chng trỡnh. Bn cn lu ý rng, chng trỡnh codeblocks lm vic theo
tng d |n, ngha l{ bn cú th biờn dch mt chng trỡnh C++ khi nú nm
trong mt d ỏn ca codeblocks.
u tiờn bn khi ng codeblocks, sau ú bn vo File > New > Project.
Trong hp thoi hin ra, bn chn console application (Hỡnh 1).
V nhp Go, sau ú nhp Next. Trong hp thoi tip theo, bn chn C++ v

nhp Next.

Hỡnh 1 To mi d ỏn trong CodeBlocks
Hp thoi yờu cu bn in thụng tin v d ỏn s xut hin. Bn h~y in
tờn d ỏn, v trớ lu tr d |n. Sau ú nhp Next. Cui cựng nhp Finish.

Chy chng trỡnh:
+ Bn hóy vo Build > Build and Run.

T r a n g | 10

C++

Trong ca s qun lý d ỏn, bn nhp ụi v{o tp main.cpp, bn hóy son
tho ni dung chng trỡnh v{o trong tp tin ny.


ẹaởng Ngoùc Hoaứng Thaứnh
+ Hoc nhp phớm F9.
T ng nh dng mó. Nu bn vit mt chng trỡnh C++ hay bt kỡ mt
chng trỡnh trờn mt ngụn ng lp trỡnh no
khỏc, bn cn tuõn th quy phm nh dng mó
ngun. Cú nhiu chun mc cho c|c nh dng
mó ngun ny. Dự rng, chỳng khụng nh hng
n vic biờn dch chng trỡnh, nhng chỳng
giỳp ngi c cú th d hiu chng trỡnh ca
bn hn. Nu bn khụng nm vng cỏc quy
phm ny, bn cú th s dng chc nng nh
dng mó ngun t ng ca CodeBlocks.
thc hin iu ny, bn hóy kớch chut phi vo vựng son tho, sau ú

chn Format this file (Astyle).
T ng khi to phn thõn cỏc phng thc ca lp. h tr cho
vic son tho, CodeBlocks cng h tr chc nng khi to nhanh mó
ngun. khi to nhanh phn khai b|o th}n phng thc ca lp t khai
bỏo prototype ca nú, chỳng ta t tr chut vo sau khai bỏo lp (tc v trớ
s chốn khai b|o th}n phng thc), sau ú, kớch chut phi, chn Insert >
All class methods without implementation.

Hỡnh 2 Khi to th}n phng thc

2. Eclipse Helios
T r a n g | 11

C++

Trong hp thoi hin ra, bn hóy
chn nhng phng thc m bn
mun khi to phn th}n tng ng,
sau ú, nh}p Ok.


ẹaởng Ngoùc Hoaứng Thaứnh
Sau khi ti xong Eclipe Helios v mỏy, bn tin hnh gii nộn tp tin.
Chng trỡnh Eclipse khụng yờu cu bn phi tin h{nh c{i t, nhng nú
cú th lm vic nu bn ~ c{i mt mỏy o Java. Nu bn khụng ci mỏy o
Java, bn vn cú th chy nú nu nú ~ tớch hp sn mỏy o Java bờn trong
nú (nu khụng, bn hóy copy mt th mc jre ~ c c{i t sn v{ t nú
v{o trong th mc eclipse). Nhng lỳc n{y, bn cn t nú vo a C. Mi
ln khi ng, bn chn tp eclipsec.exe. Bn ch chy tp eclipse.exe nu
mỏy bn ~ c{i t mỏy o Java. Bn cú th ti v mỏy o Java a ch sau:

/> xõy dng mt chng trỡnh C/C++ trờn Eclipse, chỳng ta cn:
- Eclipse Helios for C/C++ (nu bn ti v mt phiờn bn dnh cho Java,
bn cn phi c{i t thờm plugin h tr) hoc mt n bn c hn (Galileo,
Europa).
- Cụng c biờn dch GCC MingW.
- Mỏy o Java JVM.
Cỏc bc cu hỡnh trờn Eclipse Helios
Bc 1. C{i t mỏy o Java.
Bc 2. Ci MinGW.
Bc 3. Gii nộn Eclipse Helios, sau ú khi ng nú (nhp vo tp tin
eclipse.exe). Thụng thng, Eclipse s t ng cu hỡnh MinGW giỳp bn.
Nu khụng bn hóy thc hin bc 4.
Bc 4. Vo menu Project > Properties. Trong hp thoi xut hin, bn
chn C/C++ Build > Settings.

Trong th Tool Settings, bn chn GCC Assembler > General. Sau ú, bn
nhp vo biu tng cú du cng mu xanh. Hp thoi sau s hin ra:

T r a n g | 12

C++

Hỡnh 3 Cu hỡnh MinGW trong Eclipse Helios


ẹaởng Ngoùc Hoaứng Thaứnh

Hỡnh 4 Chn ng dn n th mc bin ca MinGW
Bn hóy nhp tờn ng dn n th mc bin ca MinGW (hoc nhp vo
nỳt File system duyt n th mc ny). Mc nh khi c{i t, th mc

ny s l C:\MinGW\bin. Sau ú nhp Ok. Vy l cụng vic cu hỡnh ~ ho{n
tt.
Bt tay xõy dng d ỏn u tiờn trờn Eclipse
Cng ging nh CodeBlocks, Eclipse cng t chc chng trỡnh theo d ỏn.
to mi mt d ỏn trong Eclipse, chỳng ta cú ba cỏch:
- Vo File > New > C++ Project.
- Vo biu tng to mi d ỏn trờn thanh cụng c, chn C++ Project.
- Kớch chut phi vo ca s Project Explorer > chn New > C++ Project.
Tip n, hp thoi sau }y s xut hin.

Sau ú, bn nhp vo tờn d ỏn v
nhp Next (nu bn cha cu hỡnh
MinGW), hoc nhp Finish (nu bn ~ thc hin cu hỡnh).
Hỡnh 5 - To mi d ỏn

T r a n g | 13

C++

Trong hp thoi ny, nu bn chn
mt d ỏn kh thi (executable) bn
hóy chn executable. Bn cng cú th
chn th vin dll (static library)
Tng ng vi d ỏn kh thi, bn cú
th chn Empty Project hoc Hello
World C++ Project. i vi Empty
Project, nú s to cho bn mt d ỏn
trng. Ngc li vi Hello World C++
Project, bn s nhn c mt file
cpp cha ni dung m chỳng ta s

tho lun trong chng tip theo.


ẹaởng Ngoùc Hoaứng Thaứnh
To mi mt file ni dung trong Eclipse. Mt chng trỡnh trong C++
thng chia lm hai loi tp: .cpp v .h. Tp .cpp thng cha ni dung
chng trỡnh, tp .h thng cha cỏc khai bỏo.
Li khuyờn trc khi to mi cỏc file: bn hóy to mt th mc chung
cha ton b ni dung sau ny, tụi tm gi th mc n{y l{ th mc src.
Trong th mc src, bn hóy to hai th mc, mt th mc cpps v mt th
mc headers. Th mc cpps s cha ton b tp .cpp, th mc headers s
cha ton b tp .h. Tp Main.cpp cha hm main s c t trong th
mc src. Ngha l{ bn s cú cu trỳc tng t nh sau

src
cpps
headers
Main.cpp

Hin nhiờn bn hon ton khụng nht
thit phi thc hin theo nh cu trỳc th
mc n{y. Tuy nhiờn iu ny s lm cho
d ỏn ca bn tr nờn sỏng sa hn rt
nhiu. Bn cú th b sung thờm c|c th
mc ph kh|c, nhng bn nờn tuõn th
cu trỳc cõy ny (vớ d bn cn phõn bit
cỏc tp tin cpp thnh nhiu loi khỏc nhau,
thỡ trong th mc cpps, bn hóy to thờm
c|c th mc con kh|c)


Hỡnh 6 - Cu trỳc th mc ca mt d ỏn
Biờn dch mt d ỏn
biờn dch mt d ỏn, bn nhp vo biu tng sau }y trờn thay cụng c
ca Eclipse.

Chn Run As > Local C/C++ Application.
Mt s th thut giỳp son tho nhanh

T r a n g | 14

C++

Hỡnh 7 - Biờn dch mt d ỏn


ẹaởng Ngoùc Hoaứng Thaứnh
Eclipse cha ng mt tp cỏc tin ớch giỳp bn son tho nhanh hn, ớt li
hn. Sau }y, tụi xin gii thiu n bn mt vi tớnh nng giỳp bn son
tho nhanh hn gp nhiu ln.
To mi mt lp
Bn vo New > Class. Hp thoi sau }y s hin ra

Hỡnh 8 - Hp thoi to mi class
Trong hp thoi ny, bn cn lu ý: source folder th mc cha tp tin s
to mi (thng s c phõn tỏch thnh tp .h v .cpp), namespace
phm vi tỏc dng ca nú trong namespace c ch nh, class name tờn
ca lp s to mi, base class tờn ca lp cha m nú s tha k (bm vo
nỳt add chn cỏc lp tn ti), constructor v destructor cho phộp khi
to hm to v hm hy. Nhng khỏi nim ny, bn s c tỡm hiu chi tit
hn khi l{m quen vi lp trỡnh hng i tng.


Nu bn ~ khai b|o mt lp, cựng vi cỏc thuc tớnh ca nú, khi ú, thay vỡ
s dng hm to thit lp giỏ tr ban u, ta cú th dựng hm setter; hoc
tip nhn giỏ tr t cỏc thuc tớnh, ta cú th dựng cỏc hm getter. Tụi s
gii thiu chi tit hn v c|c phng thc ny trong phn lp trỡnh hng
i tng. Trong phn ny, tụi s hng dn cho bn cỏch to chỳng bng
thao tỏc nhp chut. Bn vo Source, chn Generate Getters and Setter.
T r a n g | 15

C++

To nhanh cỏc phng thc Getter v Setter


ẹaởng Ngoùc Hoaứng Thaứnh
Trong hp thoi hin ra, bn hóy chn cỏc thuc tớnh m bn cn to
phng thc getter v{ setter, sau ú nhp Ok.
Mt s phớm tt khỏc
Phớm tt
Ctrl+Space
main Ctrl+Space
Ctrl+Shift+F
Ctrl+/

Cụng dng
Bt ch gi nhc lnh.
Khi to nhanh hm main.
nh dng nhanh mó ngun.
Comment vựng m~ ~ c bụi en, nu
vựng bụi en ~ ch comment, thỡ du

comment s b hy b.
Tab
Dch ton b ni dung b bụi en sang phi
mt tab.
Shift+Tab
Dch ton b ni dung b bụi en sang tr|i
mt tab.
Ctrl+1
Chnh sa nhanh ton b cỏc t ging vi
t ang c bụi en. Sau khi chnh sa
xong, bn nhp Enter kt thỳc.
Ctrl+Shift+/
To mt khi comment cho vựng vn bn
~ b bụi en.
Ctrl+Shift+\
Hy b vựng vn bn b comment bi khi
comment.
Trờn }y, tụi ~ gii thiu s qua hai chng trỡnh son tho min phớ
lp trỡnh C/C++: CodeBlocks v Eclipse. Vi CodeBlocks, bn ch cn ti v
c{i t. Mụi trng h tr biờn dch GCC ~ c tớch hp sn. Vi Eclipse,
bn phi thc hin cu hỡnh GCC. Nu bn l mt ngi cú nhiu tri
nghim v mỏy tớnh, bn nờn chn Eclipse bi nú l{ chng trỡnh son tho
rt chuyờn nghip. Nu bn l{ ngi mi tip xỳc mỏy tớnh, bn nờn chn
CodeBlock vỡ khụng mt thi gian cu hỡnh, nhng nu bn cu hỡnh
thnh cụng trờn Eclipse, thỡ bn s vt v hn nhiu khi hc lp trỡnh
C++. Nú s giỳp ớch cho bn rt nhiu, giỳp bn trỏnh nhng li sai sút
khụng |ng cú.

Visual Studio 2010 l mt mụi trng biờn dch tớch hp ca Microsoft. Bn
cú th s dng nú biờn dch C++, C#, Visual Basic, J#... Chỳng ta s tỡm

hiu Visual Studio trong khớa cnh biờn dch C++. Bn cng cn lu ý rng,
vi phiờn bn 2010 ny, Visual Studio cú hai phiờn bn dnh cho C++: C++
T r a n g | 16

C++

3. Visual Studio 2010 dnh cho Visual C++


ẹaởng Ngoùc Hoaứng Thaứnh
for Net v C++ for Win32. Chỳng ta tỡm hiu v tớnh nng C++ for Win32.
Bn cng cn lu ý rng, MFC cng l{ mt th vin xõy dng trờn nn
Win32.
Trong ni dung ca giỏo trỡnh ny, ta s tỡm hiu v ng dng Console trờn
nn Win32 m khụng tho lun thờm v Visual C++ for Net bi l nú thuc
mt phm trự tng i khỏc so vi Visual C++ for Win32.
Khi ng Visual Studio 2010.
Kớch chn biu tng VS 2010 trờn nn Desktop.
Vo Start > All Programs > Microsoft Visual Studio 2010, chn biu tng
VS 2010.

Hỡnh 9 - Giao din tng th ca Visual Studio 2010
To mi d ỏn trong VS 2010.
Vo File > New Project (hoc t hp phớm tt Ctrl+Shift+N).

C++

Trong hp thoi xut hin, bn hóy chn Win32 Console Application.

T r a n g | 17



ẹaởng Ngoùc Hoaứng Thaứnh

Hỡnh 10 - To d ỏn Win32 Console
Mc name: hóy nhp tờn d ỏn m bn mun to.
Mc Location: nhp v{o nỳt Browse chn v trớ lu tr. Mc nh, Visual
Studio s lu tr d ỏn th mc Documents.
Mc Solution name: to mt th mc con trong th mc d ỏn, hay to trc
tip trong th mc d ỏn.

Hỡnh 11 - Win32 Application Wizard
T r a n g | 18

C++

Trong hp thoi xut hin, chn Next.


ẹaởng Ngoùc Hoaứng Thaứnh
Nhúm Application Type
+ Windows application: to ng dng winform.
+ Console application: to ng dng chy trờn DOS.
+ Dll: to th vin dll.
+ Static library: to th vin tnh.
Nhúm Add common header file
+ Alt: to header t lp th vin Alt.
+ MFC: to header t lp th vin MFC.
Nhúm Additional options
+ Empty project: to d ỏn rng khụng cú tp tin.

+ Export symbols: xut bn cỏc biu tng.
+ Precompiled header: to tp tin tiờu tin biờn dch.
Chn Console Application v chn Empty Project. Sau ú, bn hóy nhp
Finish.
To cỏc tp tin trong d ỏn.
Trong ca s Solution Explorer, bn hóy kớch chut phi v chn Add:

- Nu tp tin cha tn ti, hóy chn Add New Items. Trong ca s xut hin,
tựy thuc vo tp tin m bn cn, hóy chn loi tng ng. Thụng thng,
trong d ỏn ca C++, chỳng ta thng s dng hai tp tin l{ tiờu .h v
th}n chng trỡnh .cpp. Sau ú, h~y nhp tờn ca tp tin v nhp Ok. Tp tin
tiờu .h thng cha cỏc khai bỏo prototype ca hm hoc lp. Ngoi ra,
nú cú th cha cỏc hm macro, cỏc khai bỏo hng v bin ton cc c s
dng trong ton b chng trỡnh. Tp tin .cpp thng cha phn thõn ca
cỏc hm hoc lp. Khi lm vic vi cỏc d ỏn trong C++, bn nờn tỏch
chng trỡnh th{nh nhiu phn v nờn s dng cỏc tp tiờu lm cho
chng trỡnh d hiu hn.
T r a n g | 19

C++

- Nu tp tin ~ tn ti, hóy chn Add Existing Items. Sau ú, bn hóy duyt
n v trớ tn ti tp tin.


ẹaởng Ngoùc Hoaứng Thaứnh

Hỡnh 12 - B sung thờm mt tp tin
- Add Class: b sung cỏc lp i tng cho d ỏn. }y, chỳng ta chn C++
class.


Nhp Add. Ca s sau }y s xut hin

T r a n g | 20

C++

Hỡnh 13 - B sung thờm lp i tng


ẹaởng Ngoùc Hoaứng Thaứnh

Hỡnh 14 - To lp bng Class Wizard
- Class name: tờn ca lp.
- .h file: tờn ca tiờu lp cng l{ tờn ca tp tin tiờu .
- .cpp file: tờn ca tp tin .cpp tng ng vi lp.
- Base class: nu lp mi to ra tha k t mt lp khỏc, bn hóy nhp tờn
ca lp c s v{o }y.
- Access: mc tha k ca lp ang to t lp c s.
- Virtual destructor: to mt phng thc hy o.
- Inline: to mt phng thc inline. Tuy bn cú th s dng t khúa ny,
nhng c ch lm vic ca Visual C++ l t ng b sung inline khi biờn
dch nu phng thc c cho l phự hp s dng inline. iu ú cú
ngha l{ bn khụng cn dựng n t khúa ny.
Biờn dch d ỏn.

- biờn dch ton b d ỏn m khụng thc thi d ỏn, bn vo Build, chn
Build Solution.

T r a n g | 21


C++

- biờn dch v thc thi mt d ỏn, bn vo Debug > Start Debugging
(hoc Start without Debugging).


ẹaởng Ngoùc Hoaứng Thaứnh
Mt s phớm tt trong Visual Studio 2010.
- To vựng comment (chỳ thớch): bụi en vựng m~ cn to chỳ thớch, nhn
t hp Ctrl+K, Ctrl+C.
- Hy b vựng comment: bụi en vựng m~ ~ comment, nhn t hp Ctrl+K,
Ctrl+U.
- nh dng mó ngun: bụi en vựng m~ cn nh dng, nhn t hp Ctrl+K,
Ctrl+F.
- T ng hon tt mó v gi nhc lnh: t hp Ctrl+Space.
Visual Studio 2010 khụng h tr c|c tớnh nng mnh m cho vic khi to
mó ngun. Tuy nhiờn, nu bn mong mun lm vic n gin v hiu qu
hn, bn cú th s dng tin ớch b tr. Mt trong nhng tin ớch lm vic
khỏ hiu qu l Visual Assist. Phiờn bn cho n thi im n{y (nm 2010)
l 10.6.
Xem biu lp.

Hỡnh 15 - Xem biu lp
T r a n g | 22

C++

quan sỏt biu lp trong VS 2010, ta nhp chut phi vo tờn d ỏn
(trong ca s Solution Explorer), chn Show class diagram. Sau ú, bn

hóy kộo th cỏc lp i tng vo vựng biu .


ẹaởng Ngoùc Hoaứng Thaứnh

CHNG 1.

C BN V C++

Cu trỳc ca mt chng trỡnh C++
Mt cỏch thc tt nht hc lp trỡnh ú l{ h~y th vit mt chng
trỡnh u tiờn. Nu bn ~ tng lm quen vi mt ngụn ng lp trỡnh no
ú, thỡ chc hn bn ~ bit n vớ d kinh in ca mt ngụn ng lp trỡnh
ú l{ chng trỡnh Hello, world !.
Mó chng trỡnh
[1.]
[2.]
[3.]
[4.]
[5.]
[6.]
[7.]
[8.]

//my first program
#include <iostream>
using namespace std;
int main()
{
cout<

return 0;
}

Kt qu
Hello, world !

[1.] Cỏc kớ t nm sau du // s khụng c biờn dch m{ nú c hiu l
du comment (dũng chỳ thớch). Trong C++ cng nh C, vic chỳ thớch
trờn mt dũng s c t sau du //. Nu bn mun to mt chỳ thớch
nhiu dũng, bn cú th s dng du /* To chỳ thớch õy */
[2.] Dũng ny bt u bng kớ t #include. Tip n l tờn tp tin tiờu
(cha c|c th vin). Th vin iostream c t trong du <>. Nú cha
cỏc hm xut nhp c bn. Hm ny l mt phn ca namespace std.
[3.] Trong C++, cỏc thnh phn ca th vin chun c khai bỏo trong
namespace. }y l{ namespace std. cú th truy xut n cỏc tớnh
nng ca nú, chỳng ta mụ t nú bng t khúa using. Trong th vin
chun ca C++, i tng cout c t chc trong namespace std.
[4.] Bt kỡ mt chng trỡnh C++ n{o cng phi cú mt h{m main thc
thi chng trỡnh. Mt hm s c khai bỏo theo cu trỳc nh bn ~
thy.
T khúa int mụ t kiu d liu m hm tr v l integer. Bn cng lu ý
rng, trong chng trỡnh C thỡ bn cú th tựy ý khai bỏo l void hoc int,
T r a n g | 23

C++

Gii thớch v chng trỡnh:


ẹaởng Ngoùc Hoaứng Thaứnh

nhng trong C++ thỡ bt buc bn phi khai bỏo l int. Vy chc hn bn
s thc mc l{ int hay void thỡ cú ngha gỡ. Tụi khuyờn bn nờn s dng
int, dự l{ chng trỡnh ca bn cú l{ C i na. S d, khi h{m main tr v
kiu int thỡ theo quy c, nu chng trỡnh cú li, nú s tr v mt mó
int kh|c 0 v{ ngc li, nu chng trỡnh khụng cú li, nú s tr v mó
int 0. Bn cng lu ý rng, li }y l{ li chng trỡnh liờn quan n quỏ
trỡnh biờn dch, ch khụng phi l li liờn quan n cỳ phỏp. Bn s nhn
thy mó m nú tr v trong dũng thụng bỏo cui cựng khi biờn dch:
process returned 0 (0x0).
Tờn hm l main. Tip theo l cp du ngoc n dựng cha tham s
ớnh kốm. Thụng thng mt chng trỡnh ng dng s cha hai tham
s trong hm main l int argc v char* args[]. Cỏc tham s ny gi l
tham s dũng lnh. Tip theo l du {}. Bờn trong cp du n{y l{ chng
trỡnh chớnh.
[5.] Du m khi.
[6.] i tng cout (c l C-out) l chun dựng xut d liu ra mn
hỡnh. Bn lu ý, bn vn cú th dựng hm printf. Nu bn dựng hm
printf thỡ bn khụng cn khai b|o th vin v namespace std trờn. Nu
bn s dng i tng cout, bn cng cú th b dũng lnh [3.] nu vit
std::cout. Bn cng cn lu ý rng, khi s dng i tng cout, thỡ bn cú
thờm mt cỏch thc xung dũng thay vỡ dựng \n, ú l{ endl. i
tng cout thng i vi toỏn t xut <<. Bn cú th s dựng nhiu toỏn
t ny khi mun xut nhiu phn t riờng bit:
cout<[7.] H{m return dựng tr v giỏ tr ca hm. Nu hm cú kiu d liu
tr v, thỡ cn return bin cú kiu d liu m hm tr v. Nu hm l
void, thỡ khụng cn return.
[8.] Du úng khi tng ng vi m khi [5].
Mỏch nc:
Cng nh C, C++ l{ ngụn ng phõn bit ch hoa v ch thng.


Mt du ngoc n (), du ngoc nhn {} bao gi cng song h{nh. iu ú
cú ngha l{ nu bn dựng du m thỡ phi cú du úng tng ng. Du
ngoc n thng dựng sau tờn hm, v bờn trong nú l tham s hỡnh thc

T r a n g | 24

C++

Kt thỳc mt dũng lnh trong C++ bao gi cng phi cú du ;


×