Lap trinh HDT voi C++

Embed Size (px)

Citation preview

MC LC Li ni u 4 Chng 1: M u .......................................................................................... 6 1.1. So snh gia lp trnh hng i tng v lp trnh hng th tc6 1.1.1. ................................................................................. Lp trnh hng th tc 6 1.1.2. ............................................................................ Lp trnh hng i tng 7 1.2. Gii thiu ngn ng C++...............................................................................................8 1.2.1. .................................................................. Ch thch trong C v trong C++ 1.2.2. ...............................................................................................Cc t kha mi 1.2.3. ........................................................................... Php chuyn kiu bt buc 1.2.4. ................................................................................................... Khai bo bin 1.2.5. .......................................................................................................... Hm main 1.2.6. ............................................................................... Truyn tham s cho hm 1.2.7. ................................................................................. Nhc li v bin con tr 1.2.8. ........................................ S dng tham s truyn ngm nh trong hm 1.2.9. .................................................................... Cp pht v gii phng b nh 1.2.10. Cc hm ti bi (Overloaded function) .........................................17 1.2.11. Hm inline.............................................................................................18 1.2.12. Kh nng vo ra mi ca C++ .........................................................21 1.3. Bi tp chng 1 ...............................................................................................................238 8 8 8 9 10 13 15 16

Chng 2: Lp cc i tng ..................................................................... 27 2.1. Lp cc i tng ............................................................................................................27 2.1.1. ..................................................................................... Cc khi nim c bn 2.1.2. ........................................................................... Khai bo lp cc i tng 2.1.3. ........ Cc thnh phn trong lp (Data member and function member) 2.1.4. ............................................................... i tng trong tham s ca hm27 27 31 42

2.2. Constructor v destructor ..........................................................................................44 2.2.1. ............................................................................................. Khi nim chung 44 2.2.2. ...................................Khai bo v nh ngha constructor v destructor 44 2.2.3. ........................................................................................................Con tr this 46 2.3. Ton t ti bi v ton t ti bi thn thin..................................................48 1

Nguyn Ch Trung 2.3.1. ............................................................................................... Khi qut chung 2.3.2. .................................................................................................. Ton t ti bi 2.3.3. .............................................................................. Ton t ti bi thn thin 2.3.4. ..............................................................................................Chuyn i kiu48 48 52 59

2.4. Vi vn v s dng t kho const ...................................................................66 2.4.1. .................................................................................S dng bin kiu const 66 2.4.2. ........................................................... Truyn tham s kiu const cho hm 67 2.4.3. ................................................................................. i tng hng ca lp 68 2.4.4.Hm thnh phn const (hm thnh phn c khai bo const pha sau) 70 2.4.5.Con tr this kiu const (hm thnh phn c khai bo const pha trc)72

2.4.6. .................................................................................... Nghin cu lp String 73 2.4.7. ......................................................................... c thm v lp cc dy bit 78 2.5. Bi tp chng 2 ...............................................................................................................81

Chng 3: S k tha ................................................................................. 84 3.1. S tng ng trong k tha ......................................................................................84 3.1.1. ............................................................................................. Khi nim chung 3.1.2. ...................................................................................................... K tha n 3.1.3. ........................................................... Thnh phn protected trong k tha 3.1.4. ................................................................................................ K tha a mc 3.1.5. ............................................................................................. K tha phn cp 3.1.6. ........................................................................................................ K tha bi 3.1.7. .................................................................................... K tha kp (lai ghp) 3.1.8. ............................................................... Constructor trong cc lp k tha84 86 88 92 93 94 95 99

3.2. Con tr xc nh thnh phn ca lp v con tr xc nh i tng 102 3.2.1. .................................................................... Cc quy tc c php v con tr 102 3.2.2.Cc v d minh ho cch s dng con tr xc nh i tng v thnh phn (d liu v hm) ca lp ..........................................................................103 3.2.3. ........................................................................... Con tr xc nh i tng 105 3.3. Hm o v tng ng bi trong k tha .......................................................106 3.3.1. ................................................ Cc hm dch chuyn (Override function) 106 3.3.2. ................................. Con tr xc nh i tng trong quan h k tha 107 2

Nguyn Ch Trung 3.3.3. ................................................................Con tr hm o v tng ng bi 3.3.4. ................................................................. K tha lai ghp v lp c s o 3.3.5. .............................................................................Hm rng (Null Function) 3.3.6. .. Hm o thc s v lp tru tng (pure function & abstract class) 3.3.7. .......................................... Hm thn thin o v ton t o dch chuyn 3.4. Bi tp chng 3 .............................................................................................................116108 111 114 115 116

Chng 4: Lm vic vi Tp ..................................................................... 120 4.1. Cc Thao tc c bn vi tp...................................................................................120 4.1.1. ............................................................................................ c d liu t tp 120 4.1.2. .......................................................................................... Ghi d liu vo tp 122 4.2. Mt s vn khc lm vic vi tp ..................................................................125 4.2.1. ............................................................................................ M tp bng open 125 4.2.2. .......................................................................... Cc ch lm vic vi tp 125 4.2.3. ..................................................................................... c/ ghi tp nh phn 126 4.3. Bi tp chng 4 .............................................................................................................128

Ph lc 1: Lp mu v hm mu .............................................................. 130 Khi qut ................................................................................................................130 4.3.2. ........................................................................................................... Hm mu 130 4.3.3. ............................................................................................................. Lp mu 132 Ph lc 2: Gii thiu Mt s bi ton phn tch thit k hng i tng trn C++ .................................................................................... 137 4.3.1. .............................................................................. S lc 5 bc thc hin 137 4.3.2. ...................................................................... Xy dng lp hnh hc phng 137 4.3.3. ............................................................................................ Qun l cc l t 146 Ti liu tham kho ....................................................................................... 153

3

Nguyn Ch Trung LI NI U Lp trnh trn ngn ng C l mt mt v d v phng php tip cn lp trnh hng chc nng. Phng php ny tp trung vo thut ton chnh gii quyt bi ton t ra v c th phi phn r bi ton xut pht ny thnh cc bi ton con nh hn. Vic tm thut ton cho tng bi ton con thm ch li phi tip tc chia thnh cc bi ton con nh hn na v qu trnh l qu trnh lm mn dn, c ngha l vic phn chia thnh cc bi ton con s dng li cho n khi thu c tp cc bi ton con n gin nht, c th tm ngay ra li gii. Khi xy dng cc phn mm ln, phng php lp trnh hng chc nng gp kh khn trong vic cp nht v sa i, c ngha l vic thay i mt phn chc nng v d liu trong chng trnh c th lm nh hng n ton b h thng v mt nhiu cng sc iu chnh. Cn phi c mt hng tip cn khc trong lp trnh hn ch c nhng nhc im ca lp trnh truyn thng: trc tin phi ch trng n nhng i tng xut hin trong bi ton, tm cch c t i tng (gm thng tin v hnh vi) sao cho ph hp vi th gii thc. C ngha l thay v quan tm n chc nng, nhim v t ra, k thut lp trnh mi s t trng tm vo vic x l cc d liu thc hin cc chc nng . K thut lp trnh mi ny mang tn l k thut lp trnh hng i tng (Object Oriented Programing) v trn k thut ny nhiu trnh bin dch c thit k, trong c C++. Vic s dng C++ bao gm nhng thun li v nhng kh khn. Lp cc i tng ca C++ cho php ci t ring r giao din (interface) v th hin (implementation) v c th n vic th hin chi tit bn trong. R rng C++ h tr khi nim tru tng cng ging nh l mt s ngn ng khc h tr n c bit nh l Pascal, C . S thun li ca C++ l C++ c th s dng rng ri trong nhiu ngnh ngh, hc sinh c th nm bt c cc k nng l thuyt cng nh thc hnh v iu ny gip h c th tm kim vic lm d dng. Nhng s kh khn ca C++ l n khc xa ngn ng s phm v v vy cn phi ch v mt thc hnh c th t c k nng lp trnh nht nh. iu khng thun li th hai l C++ vn khng phi l ngn ng c nh v vy c cc chng trnh dch khc nhau. C++ m chng ta s s dng i cng vi ti liu ny l Turbo C++ version 3.0 ca Borland (1990 - 1992). Li cm n Tc gi xin by t lng bit n chn thnh ti: Ph gio s, tin s Nguyn Xun Huy (Vin Cng ngh thng tin); Gio s Phm Vn t (i hc giao thng); Tin s Dng T Cng (Hc vin k thut qun s); Tin s Ph c Ton (i hc s phm H Ni I); Ph gio s, tin s on Vn Ban (Vin Cng ngh thng tin) c nhng kin ng gp qu bu cun gio trnh c hon chnh v c cht lng hn.

4

Nguyn Ch Trung Tc gi cng xin chn thnh cm n s t chc, hp tc v gip nhit tnh ca Ban gim hiu, phng o to v t chuyn mn trng THKT Tin hc H Ni - ESTIH.

5

Nguyn Ch Trung M U SO SNH GIA LP TRNH HNG I TNG V LP TRNH HNG TH TC Lp trnh hng th tc Theo cch tip cn truyn thng ca lp trnh hng th tc th chng trnh c xem nh dy cc cng vic cn thc hin: Nhp d liu, X l d liu, Tnh ton, Lp bo co, In kt qu... Vy trng tm ca lp trnh hng th tc l phn r bi ton thnh cc hm chc nng theo k thut top-down. Bi ton c gii quyt bi mt s hm chnh. Cc hm chnh li c th phn chia thnh cc bi ton con - tc l cc hm chc nng nh hn na. Mt s hm c th gi thc hin (dng chung) mt s hm chc nng nh hn. Nh vy, cu trc cc hm ca mt chng trnh lp trnh hng th tc l cu trc phn cp cc hm:main

Hm1

Hm2

Hm3

Hm4 Hm5 Hm6 Hm7 Hm8

Vic ch ti cc hm trong chng trnh s khng quan tm nhiu n d liu. D liu ca ton b chng trnh c cc hm dng chung v bin i t hm ny sang hm khc. Bn thn trong cc hm cng c d liu ring.D liu chung D liu chung

Hm 1 D liu ring 1

Hm 2 D liu ring 2

Hm 3 D liu ring 3

Vy c trng ca lp trnh hng th tc l 1. Tp trung vo cng vic cn thc hin - thut ton. 2. Chng trnh c chia thnh cc hm nh. 3. Phn ln cc hm dng chung d liu. 4. D liu trong chng trnh chuyn ng t hm ny sang hm khc. 6

Nguyn Ch Trung 5. Hm bin i d liu t dng ny sang dng khc. 6. Thit k chng trnh theo k thut top-down Lp trnh hng i tng Lp trnh hng i tng t trng tm vo i tng v khng cho d liu chuyn ng trong h thng. D liu gn cht vo cc hm v th tc to thnh mt vng ring v khng cho cc hm bn ngoi truy nhp mt cch tu tin. Lp trnh hng i tng phn tch bi ton thnh cc thc th gi l i tng, sau xy dng cc hm xung quanh i tng . D liu ca i tng ch c th truy nhp c bi cc hm ca i tng. Ch c mt s hm ca i tng ny c th gi thc hin cc hm ca i tng khc biu th s trao i thng bo gia cc i tng.i tng A D liu Cc hm i tng B D liu Cc hm

i tng C D liu Cc hm

Nh vy c trng ca lp trnh hng i tng l: 1. Tp trung vo d liu thay cho hm. 2. Chia chng trnh thnh cc i tng. 3. D liu c thit k sao cho c t c i tng. 4. Cc hm c xy dng trn cc vng d liu ca i tng v c gn lin vi nhau trn cu trc d liu . 5. D liu c bao bc, che du khng cho cc hm ngoi lai truy nhp. 6. Cc i tng trao i thng bo vi nhau thng qua cc hm. 7. D liu v cc hm d dng b sung vo i tng. 8. Chng trnh c thit k theo k thut botom up.

7

Nguyn Ch Trung GII THIU NGN NG C++ Trong phn ny: vi mc ch so snh ngn ng C v C++ s lm r mt s c im mnh ca C++ so vi C, ng thi nhn mnh thm hoc gii thch chi tit mt s vn quan trng, thng gp khi lp trnh vi C++. Ch thch trong C v trong C++ Trc ht C++ c pht trin t C nn n vn s dng li tt c cc c php ngn ng nh C v b sung thm mt s c php mi. C++ a ra mt kiu ch thch mi tin ch thch trn mt dng nu dng k php // v cng tin vit trn nhiu dng lin tc nu dng cp k php /*... */ Ch thch trong C /* dong 1 chu thich cua C */ /* dong 2 chu thich cua C */ x=y=0; /*chu thich sau lenh */ Ch thch trong C++ /* Bat dau chu thich Dong 2 chu thich Ket thuc chu thich */ x=y=10; // chu thich sau lenh // co the chu thich tren 1 dong

Cc t kha mi C++ b sung vo C mt s t kha mi asm catch friend operator new inline protected virtual this class Php chuyn kiu bt buc Ngoi php chuyn kiu nh trong ngn ng C, C++ cn a ra php chuyn kiu mi. Xt v d sau y: int x=0; long z=(long)x; // chuyen kieu cua C long z=long(x); // chuyen kieu cua C++ Nh vy php chuyn kiu trong C++ c dng nh mt hm s chuyn kiu ang c gi. Cch chuyn kiu ny r rng va khoa hc va d dc. Khai bo bin Nhn chung phm vi hot ng ca bin ph thuc vo kiu ca bin v v tr khai bo ca bin trong chng trnh. public private cdecl pascal delete templete

8

Nguyn Ch Trung Ngn ng C i hi phi khai bo bin trc phm vi m cc bin ang s dng. Cch khai bo n gin nht trong C l khai bo bin ton cc ln trc tt c cc hm v khai bo bin cc b u thn tng hm. Trong C++, khc vi C, cho php mt cch khai bo bin mi, vi cch khai bo ny, mt bin c th khai bo v tr bt k min sao l trc khi s dng n, phm vi hot ng ca bin trong trng hp ny l trong khi ni bin c khai bo. V d 1.1 Khai bo sau y trong C ++ chp nhn nhng trong C l li v C yu cu khai bo bin trc lnh.clrscr(); int x;

V d 1.2void simple() { int n; // khai bao cuc bo for(int i=0;i