giao trinh lap trinh huong doi tuong

Upload: bui-nguyen-phuc

Post on 15-Jul-2015

77 views

Category:

Documents


3 download

TRANSCRIPT

Bi ging Lp trnh hng i tng BI GING LP TRNH HNG I TNG (OBJECT ORIENTED PROGRAMMING - OOP) CHNG 1. CC KHI NIM V LP TRNH HNG I TNG 1.1. Phng php lp trnh 1.1.1.Lp trnh tuyn tnh - L phng php c pht trin vo nhng ngy u ca ngnh khoa hc my tnh, khi cc chng trnh cn rt th s. - Mt chng trnh bao gm nhiu dng lnh c thc hin theo trt t tuyn tnh. Trong chng trnh khng c th tc do mt on lnh thng c chp lp li mi khi chng c dng trong chng trnh nhiu ln, chng trnh c khuynh hng rt di. Hn na nhng ngn ng lp trnh truyn tnh khng c kh nng kim sot phm vi nhn thy ca cc d liu. Mi d liu trong chng trnh u l d liu ton cc, c ngha l chng c th b sa i bt k phn no ca chng trnh. Vic d tm nhng thay i khng mong mun ca cc phn t d liu trong mt dy m lnh di v vng vo lm cho cc tho chng trnh vin rt tn thi gian. 1.1.2. Lp trnh cu trc - Khi ngnh khoa hc my tnh cng pht trin th cng nhiu ng dng trn my tnh c a vo phc v sn xut. Lc ny, cc chng trnh tr nn ln v phc tp hn. Khi , lp trnh tuyn tnh khng p ng c yu cu pht trin phn mm v lp trnh cu trc ra i. - Phng php ny c pht trin mnh m vo thp k 70. V bn cht, chng trnh c chia nh thnh nhng th tc ring r (hay cn gi l hm thc hin nhng cng vic ri rc trong mt qu trnh ln v phc tp). Cc th tc c thit k cng c lp cng tt, chng chuyn giao thng tin cho nhau bng cc i s vo-ra. Mi th tc t qun l bin a phng ca n v khng cho ai ngoi phm vi th tc c xm phm. Nh vy h thng c xem nh l mt tin trnh v phn tch n thnh nhiu tin trnh nh hn. - Quan im ca LTCT: Chng trnh = D liu + Gii thut - S tru tng ho (abstraction) chc nng l khi nim mi c a vo trong lp trnh c cu trc. Trong mt chng trnh c cu trc, ch cn bit mt th tc cho c th lm c mt cng vic g l . Cn lm th no m cng vic li thc hin c th khng quan trng, mt khi m th tc ny cn tin cy c th n c th c dng m khng cn bit l n phi lm sao hon thnh ng n chc nng ny. Tm li: Phng php lp trnh c cu trc c tnh trong sng do n t ra hiu qu khi trin khai bo tr mt chng trnh. Tuy nhin, khi lm vic trn nhiu d n ln th n bt u biu hin mt s nhc im. Trong mt s chng trnh, cu trc d liu c mt tm quan trng rt ln bi v ch cn c mt s thay i nh l ton b cc thao tc trn d liu phi thay i theo. D liu ca chng trnh c x l trong nhiu th

Ging vin: Trn Th Hng

Trang 1

Bi ging Lp trnh hng i tng tc khc nhau v vy khi pht trin hoc thay i d liu ca chng trnh cn phi iu chnh cc th tc c lin quan (mt cng vic vt v v nhm chn). Hn na n cn gim i tnh modul ho cng vic. Bi v trong mt d n, mi thnh vin phi m nhim mt s th tc. Khi mt thnh vin trong nhm c s thay i v kiu d liu dng chung trong h thng, cng ko theo vic cc thnh vin khc phi vit li cc th tc c lin quan. Phng php lp trnh hng i tng khc phc nhc im ny 1.1.3. Lp trnh hng i tng - Khi nim hng i tng c xy dng trn nn tng ca khi nim lp trnh c cu trc v s tru tng ho d liu. S tru tng ho d liu (Data Abstraction) c ngha l cc cu trc d liu v cc phn t c th c s dng m khng cn n cc chi tit c th m ngi ta xy dng. V d, cc s thc du phy ng c tru tng ho trong tt c cc ngn ng lp trnh, chng ta khng cn n biu din nh phn c th ca mt s thc khi gn mt gi tr cho n, cng khng cn phi bit nhng thay i ca php nhn nh phn khi nhn cc s thc. iu quan trng l cc s thc vn lm ng v hiu c. - im cn bn ca phng php lp trnh HT l thit k h thng xoay quanh d liu ca n. Ngha l, lc ny cc thao tc x l ca h thng c gn lin vi d liu. Chnh s gn kt gia d liu v cc hm x l m kh nng modul ho cao hn bi v khi d liu ca mt i tng thay i th ch c cc hm x l ca i tng thay i m thi. R rng, lc ny ta c th thy c mt u im r rt ca phng php lp trnh hng i tng so vi lp trnh c cu trc. S ng gi d liu v hm x l vo mt khi c gi l i tng. - hiu r hn v phng php ny lp trnh ny, xt bi ton quan h gia nh vi yu cu lm th no th hin c cc mi quan h gia cc thnh vin trong mt gia nh trn my tnh v c th tr li c cu hi dng tng qut: A v B c quan h nh th no trong gia nh ? vi A v B l hai c th bt k. 1.2. Bi ton quan h gia nh - Trong x hi, mi ngi u c mt gia nh, trong tn ti nhiu mi quan h gia nh kh phc tp nh ng, b, cha, m, c, ch, bc,...Thng thng th hin cc mi quan h ny ngi ta biu din bng mt s cy, v d c th biu din quan h trong mt gia nh vi ba th h nh sau:

Mr.Thng

Ms.Nga

Mr.Quang

Ms.Vn

Mr.Tun

Ms.Hng

Mss.Trang Mr.Hng Ging vin: Trn Th Hng

Miss.Mai Trang 2

Bi ging Lp trnh hng i tng Hnh 1.1.Cy quan h trong mt gia nh 1.2.1.Tip cn theo theo phng php LTCT - u tin l phi xy dng mt cu trc d liu th hin c cy quan h trn. Xt qua c v l n gin nhng khng hon ton n gin bi v i hi ngi lp trnh phi rt thnh tho s dng con tr, phi xy dng c gii thut cp nht thng tin trn cy quan h, Cc gii thut ny tng i phc tp i vi cu trc d liu ca bi ton trn. Yu cu ca bi ton l tr li c cc cu hi dng nh Hng v Mai c quan h nh th no ?. Cu tr li ca chng trnh phi l Hng l anh con c ca Mai. c th thc hin c nh vy, r rng cn phi xy dng c gii thut tm c mi quan h gia hai nt trn cy quan h. Mt vn phc tp hn l tn gi cho cc mi quan h gia nh Vit nam rt phong ph, v vy rt kh vt cn ht cc mi quan h c th c trn cy quan h. Hn na khi cn pht trin, chng trnh phi qun l c nhiu gia nh cng mt lc v cc gia nh ny c mi quan h thng gia vi nhau. Hnh 1.2. l s quan h c pht trin t s trn minh ho cho vn ny. Mr.Thn g Ms.Nga Mr.Thn h Ms.Lan

Mr.Quan gg

Ms.Vn

Mr.Tun

Ms.Hn g

Mr.Hn g

Mss.Tran g

Miss.M ai

Hnh 1.2.M rng quan h gia nh - Mt cu hi t ra l: Liu vi cu trc d liu c c m bo gii quyt c vn ny khng ?. R rng cu tr li l khng. S quan h trn hnh v s phi m t quan h ca mt gia nh. Ch vi cht t thay i v cu trc d liu cng dn n mt lot vn i hi phi vit li cc gii thut ca chng trnh. 1.2.2. Tip cn theo LTHT - Bi ton quan h gia nh c xem xt di mc qun l tp cc i tng Con ngi. bit mi quan h gia nh ca mi c th, cn th hin mt s quan h c bn nh cha, m, anh em, con ci, v chng ca c th . Nh vy, mi i tng con ngi ca bi ton c cc thuc tnh ring, ni ln cha, m, anh em,.... ca h l ai. Ngoi ra cng cn c mt thuc tnh na cho bit tn c th l g ?. Nh vy, chng ta c th m t mt lp cc i tng con ngi nh sau:

Ging vin: Trn Th Hng

Trang 3

Bi ging Lp trnh hng i tng

Con ngi Tn? Cha? M? Anh em? Con ci? V/chng? - Nu ch nh vy th chng khc g mt cu trc hay mt bn ghi trong cu trc d liu c s dng trong phng php lp trnh cu trc. Vn y l phng php LTHT xem cc mi quan h trong gia nh c hnh thnh mt cch t nhin do cc s kin c th trong cuc sng to nn. V d: Khi ngi ph n sinh con, a con c ta sinh ra s c m l c ta v b l chng c ta, ng thi anh chng phi c cp nht c thm a con ny. Nhng a con trc ca c ta s c thm a em v a b c thm nhng ngi anh hoc ngi ch. D dng thy rng c hai s kin chnh tc ng n mi quan h gia nh l s sinh con ca ng ph n v hn nhn gia hai c th khc gii trong x hi. Cc s kin ny gn lin vi nhng a con trong bi ton. iu ny c ngha l khi ni n mt s kin no th phi ch ra n c pht sinh bi ngi no. V d: Khi ni n s kin sinh con th phi bit ngi no sinh. Khi mt s kin ca mt ngi no xy ra (v d nh sinh con) th cc thuc tnh ca chnh c ta s b thay i, ng thi thuc tnh ca mt s i tng lin quan cng c th thay i. Qu trnh ng gi gia cc s kin v thuc tnh to ra i tng khi nim c bn ca lp trnh hng i tng. Mt m t chung cho cc i tng con ngi ca bi ton c gi l mt lp v c minh ho nh sau: Con ngi Tn? Cha? M? Anh em? Con ci? V/chng? Sinh con Ci Sau khi gn kt cc i tng trn, vn l to ra mt s quan h gia nh nh th no. V d: Gi thit l c hai i tng l ng Thng v b Nga, quan h gia nh c m t nh sau:

Ging vin: Trn Th Hng

Trang 4

Bi ging Lp trnh hng i tng

Mr.Thn g

Ms.Nga

Miss.Vn

Mr.Tun

Cc s kin to ra cy quan h trn c th c m t theo trt t sau: Thng.ci(Nga) Nga.sinh con (gai, Vn) Nga.sinh con (trai, Tun) Cc s kin vit theo c php sau: i tng to ra s kin. S kin (thng s km theo s kin). - Nh vy d thy rng chng ta khng cn phi quan tm n cch to ra mt cu trc cy quan h nh th no bn trong d liu ca chng trnh m vn c th cung cp d liu bi ton cho chng trnh thng qua cc s kin nh trn. - Tr li vn chnh ca bi ton l tr li cc cu hi v mi quan h gia nh nh th no khi tip cn bi ton theo phng php ny. tr li c cu hi tng qut X v Y c quan h gia nh nh th no? ta cn tr li cc cu hi nh nh X c phi l anh ca Y khng?, X c phi l ng ni ca Y khng? v.v... Cu hi c th nhn t gc i tng X nh: i tng c phi l anh ca Y khng?, i tng c phi l ng ni ca Y khng v.v... Nh vy cu hi lc ny chuyn v i tng c tr li. Cc i tng lc ny cn c cc phng thc tr li cc cu hi nh vy, v by gi mt lp i tng con ngi c minh ho nh sau: Con ngi Tn? Cha? M? Anh em? Con ci? V/chng? Sinh con Ci L anh L ng ni ...... Ging vin: Trn Th Hng Trang 5

Bi ging Lp trnh hng i tng

Ta xem xt cc i tng tr li cc cu hi nh th no? Chng hn X tr li cu hi i tng c phi l anh ca Y khng?. tr li, ch cn kim tra xem Y c phi l anh m trong thuc tnh ca n lu gi khng. Tng t i vi cc cu hi quan h gn nh l em, l ch, l b, l m,... Cn cc cu hi nh i tng c phi l ng ni ca Y khng?. tr li, ta phi da vo kt qu tr li ca cc cu hi v cc quan h gn hn. bit c X ng l ng ni ca Y th phi ch ra mt ngi Z no m X l b ca Z v Z l b ca Y. Nu khng ch ra c Z th X l khng phi l ng ni ca Y. Vic tm kim Z tng i n gin bi v chng trnh qun l tp cc i tng con ngi do tm Z trong tp i tng con ngi. Tm li cc vn ca bi ton c gii quyt khi tip cn phng php lp trnh hng i tng. D thy ngay l bi ton c phn tch rt gn vi thc t v t nhin. 1.3. Lp trnh hng i tng - LTHT t trng tm vo i tng, yu t quan trng trong vic pht trin chng trnh v khng cho php d liu bin ng t do trong h thng. D liu c gn vi cc hm thnh cc vng ring m ch cc hm tc ng ln v cm cc hm bn ngoi truy nhp ti mt cch tu tin. - LTHT cho php phn tch bi ton thnh cc thc th gi l cc i tng v sau xy dng cc d li cng cc hm xung quanh cc i tng . - LTHT c cc c tnh ch yu sau: 1. Tp trung vo d liu thay cho cc hm. 2. Chng trnh c chia thnh cc i tng 3. Cc cu trc d liu c thit k sau cho c t c i tng. 4. Cc hm thao tc trn cc vng d liu ca i tng c gn vi cu trc d liu . 5. D liu c ng gi li, c che du v khng cho php cc hm ngoi c truy nhp t do. 6. Cc i tng tc ng v trao i thng tin vi nhau qua cc hm. 7. C th d dng b sung d liu v cc hm mi vo i tng no khi cn thit. Mt s khi nim trong lp trnh HT 1.3.1. i tng (Object) - i tng l s kt hp gia d liu v th tc (hay cn gi l phng thc-method) thao tc trn d liu . C th a ra cng thc phn nh bn cht k thut ca lp trnh hng i tng nh sau: i tng = D liu + Phng thc

Ging vin: Trn Th Hng

Trang 6

Bi ging Lp trnh hng i tng 1.3.2. Lp (Class) - Lp l mt khi nim mi trong LTHT. l mt tp cc i tng c cu trc d liu v cc phng thc ging nhau (hay ni cch khc l mt tp cc i tng cng loi). Nh vy khi c mt lp th s bit c mt m t cu trc d liu v phng thc ca cc i tng thuc lp . Mi i tng s l mt th hin c th ca lp . Trong lp trnh, chng ta c th coi mt lp nh l mt kiu, cn cc i tng s l cc bin c kiu ca lp. 1.3.3. Nguyn tc ng gi - Trong LTCT ta thy rng cc hm hay cc th tc c s dng m khng cn bit n ni dung c th ca n. Ngi s dng ch cn bit chc nng ca hm cng nh cc tham s cn truyn gi hm chy m khng cn quan tm n nhng lnh c th bn trong n. Ngi ta gi l s ng gi v chc nng. - Trong LTHT khng nhng cc chc nng c ng gi m c d liu cng c ng gi. Vi mi i tng, ta khng th truy nhp trc tip vo cc thnh phn d liu ca n m phi thng qua cc thnh phn chc nng (cc phng thc) lm vic . - Chng ta s thy s ng gi thc s v d liu ch c trong cc ngn ng LTHT thun khit-pure theo ngha cc ngn ng c thit k ngay t u ch cho LTHT. i vi cc ngn ng lai-hybrid c xy dng trn cc ngn ng khc ban u cha phi l hng i tng nh C++ vn c nhng ngoi l nht nh vi phm nguyn tc ng gi d liu. 1.3.4. Tnh k tha (inheritance) - Mt khi nim quan trng ca LTHT l s k tha. S k tha cho php nh ngha mt lp mi trn c s cc lp tn ti, tt nhin c b sung nhng phng thc hay cc thnh phn d liu mi. Kh nng k tha cho php s dng li mt cch d dng cc modul chng trnh m khng cn mt thay i cc modul . R rng y l mt im mnh ca LTHT so vi LTCT. V d: Xt bi ton qun l vic thu hc ph v pht hc bng ca cc sinh vin trong mt khoa gm 3 h: H s phm, h c nhn, hc nhn ti chc, ngi ta qun l theo cc thuc tnh sau: - H s phm: Lp hc, h v tn, ngy sinh, hc k, TB, mc hc bng. - H c nhn: Lp hc, h v tn, ngy sinh, hc k, TB, mc hc bng, mc hc ph. - H ti chc: Lp hc, h v tn, ngy sinh, hc k, mc hc ph. Hy xy dng chng trnh cho php: - Cui mi hc k, ngi qun l sinh vin nhp vo cc thng tin cho cc h. - Tnh tng hc bng phi pht cho mi lp trn mi hc k (i vi h SP v h CN). - Tnh tng hc ph phi thu ca mi lp trn mi hc k(i vi h CN v h TC).

Ging vin: Trn Th Hng

Trang 7

Bi ging Lp trnh hng i tng - In danh sch pht hc bng cho tng lp (i vi h SP v h CN) v danh sch thu hc ph ca mi lp (i vi h CN v h TC). Thng thng gii quyt bi ton ny ngi ta thng to ra 3 cu trc d liu tng ng vi 3 h. Trn mi cu trc d liu ngi ta phi vit cc hm nhp d liu, hm in d liu. Ngi ta cng phi vit hai hm tnh tng hc bng cho 2 h SP v h CN, v vit hai hm tnh tng hc ph cho hai h CN v h ti chc. R rng vi cch phn tch lp trnh trn, ta phn tch cc cu trc d liu mt cch c lp, khng c lin h vi nhau. Nhng trong thc t, cc sinh vin ny u c qun l cng mt s thuc tnh nh nhau: Lp hc, h v tn, ngy sinh, hc k v sau mi h c b sung thm mt s thuc tnh mi. Do ta c th s dng tnh k tha li nh sau m hnh sau. Khi s dng m hnh k tha ta c th d dng s dng li cc hm c m khng cn vit li nhng hm . iu quan trng hn l khi b sung hoc thay i cc thuc tnh, cc hm lp c s th cc thuc tnh hay cc hm cng s t ng thay i trn cc lp k tha m khng cn thay i cc lp k tha. Chnh v iu ny lm cho cc chng trnh lp trnh theo hng i tng d dng bo tr hn khi lp trnh cu trc. SV - Lp - H v tn - Ngy sinh - Hc k - Nhp d liu - In d liu

K tha

K tha

SVSP - TB - Hc bng - Nhp d liu - In d liu - Tnh tng hc bng

SVTC - Hc ph - Nhp d liu - In d liu - Tnh tng hc ph

K tha SVCN - Nhp d liu - In d liu - Tnh tng hc bng - Tnh tng hc ph

K tha

Ging vin: Trn Th Hng

Trang 8

Bi ging Lp trnh hng i tng 1.3.5. Tnh a hnh (polymorphime) - Tnh a hnh xut hin khi c khi nim k tha. Gi s chng ta c mt k tha lp hnh t gic v lp hnh tam gic k tha t lp hnh a gic (hnh tam gic v hnh t gic s c y cc thuc tnh v tnh cht ca hnh a gic). Lc ny mt i tng thuc lp hnh tam gic hay t gic u c th hiu rng n l mt hnh a gic. Mt khc vi mi a gic ta c th tnh din tch ca n. Nh vy lm th no m mt a gic c th s dng ng cng thc tnh din tch ph hp vi n l hnh tam gic hay t gic. Ta gi l tnh a hnh.

Ging vin: Trn Th Hng

Trang 9

Bi ging Lp trnh hng i tng CHNG II. MT S C IM M RNG CA C++ 2.1.Ton t xut, nhp Trong C++ cung cp cc ton t xut, nhp thun li bng cc ton t. s dng cn khai bo thm vo chng trnh tp . 2.1.1. Ton t xut (