Chng ny gii thiu nhng khi nim c bn trong lp trnh hng i tng. Cc khi nim c bn nh lp, i tng, thuc tnh, phng thc, thng ip, v quan h ca chng s c tho lun trong phn ny. Thm vo l s trnh by ca nhng c im quan trng trong lp trnh hng i tng nh tnh bao gi, tnh tha k, tnh a hnh,.. nhm gip ngi hc c ci nhn tng qut v lp trnh hng i tng. 6.1. Gii thiu Hng i tng (object orientation) cung cp mt kiu mi xy dng phn mm. Trong kiu mi ny, cc i tng (object) v cc lp (class) l nhng khi xy dng trong khi cc phng thc (method), thng ip (message), v s tha k (inheritance) cung cp cc c ch ch yu.
Lp trnh hng i tng (OOP- Object-Oriented Programming) l mt cch t duy mi, tip cn hng i tng gii quyt vn bng my tnh. Thut ng OOP ngy cng tr nn thng dng trong lnh vc cng ngh thng tin.
Khi nim 6.1
Lp trnh hng i tng (OOP) l mt phng php thit k v pht trin phn mm da trn kin trc lp v i tng.
Nu bn cha bao gi s dng mt ngn ng OOP th trc tin bn nn nm vng cc khi nim ca OOP hn l vit cc chng trnh. Bn cn hiu c i tng (object) l g, lp (class) l g, chng c quan h vi nhau nh th no, v lm th no cc i tng trao i thng ip (message) vi nhau, vng vng.
OOP l tp hp cc k thut quan trng m c th dng lm cho vic trin khai chng trnh hiu qu hn. Qu trnh tin ha ca OOP nh sau:
Lp trnh tuyn tnh Lp trnh c cu trc S tru tng ha d liu Lp trnh hng i tng Chng 6: Lp trnh hng i tng 76 6.2. Tru tng ha (Abstraction) Tru tng ha l mt k thut ch trnh by nhng cc c im cn thit ca vn m khng trnh by nhng chi tit c th hay nhng li gii thch phc tp ca vn . Hay ni khc hn n l mt k thut tp trung vo th cn thit v pht l i nhng th khng cn thit.
V d nhng thng tin sau y l cc c tnh gn kt vi con ngi: Tn Tui a ch Chiu cao Mu tc
Gi s ta cn pht trin ng dng khch hng mua sm hng ha th nhng chi tit thit yu l tn, a ch cn nhng chi tit khc (tui, chiu cao, mu tc, ..) l khng quan trng i vi ng dng. Tuy nhin, nu chng ta pht trin mt ng dng h tr cho vic iu tra ti phm th nhng thng tin nh chiu cao v mu tc l thit yu.
S tru tng ha khng ngng pht trin trong cc ngn ng lp trnh, nhng ch mc d liu v th tc. Trong OOP, vic ny c nng ln mc cao hn mc i tng. S tru tng ha c phn thnh s tru tng ha d liu v tru tng ha chng trnh.
Khi nim 6.2
Tru tng ha d liu (data abstraction) l tin trnh xc nh v nhm cc thuc tnh v cc hnh ng lin quan n mt thc th c th trong ng dng ang pht trin.
Tru tng ha chng trnh (program abstraction) l mt s tru tng ha d liu m lm cho cc dch v thay i theo d liu.
6.3. i tng (object) Cc i tng l cha kha hiu c k thut hng i tng. Bn c th nhn xung quanh v thy c nhiu i tng trong th gii thc nh: con ch, ci bn, quyn v, cy vit, tivi, xe hi ...Trong mt h thng hng i tng, mi th u l i tng. Mt bng tnh, mt trong bng tnh, mt biu , mt bng bo co, mt con s hay mt s in thoi, mt tp tin, mt th mc, mt my in, mt cu hoc mt t, thm ch mt k t, tt c chng l nhng v d ca mt i tng. R rng chng ta vit mt chng trnh hng i tng cng c ngha l chng ta ang xy dng mt m hnh Chng 6: Lp trnh hng i tng 77 ca mt vi b phn trong th gii thc. Tuy nhin cc i tng ny c th c biu din hay m hnh trn my tnh.
Mt i tng th gii thc l mt thc th c th m thng thng bn c th s, nhn thy hay cm nhn c. Tt c cc i tng trong th gii thc u c trng thi (state) v hnh ng (behaviour). V d:
Trng thi Hnh ng Con ch Tn Mu Ging Vui sng Sa Vy tai Chy n Xe p Bnh rng Bn p Dy xch Bnh xe Tng tc Gim tc Chuyn bnh rng
Cc i tng phn mm (software object) c th c dng biu din cc i tng th gii thc. Chng c m hnh sau khi cc i tng th gii thc c c trng thi v hnh ng. Ging nh cc i tng th gii thc, cc i tng phn mm cng c th c trng thi v hnh ng. Mt i tng phn mm c bin (variable) hay trng thi (state) m thng c gi l thuc tnh (attribute; property) duy tr trng thi ca n v phng thc (method) thc hin cc hnh ng ca n. Thuc tnh l mt hng mc d liu c t tn bi mt nh danh (identifier) trong khi phng thc l mt chc nng c kt hp vi i tng cha n.
OOP thng s dng hai thut ng m sau ny Java cng s dng l thuc tnh (attribute) v phng thc (method) c t tng ng cho trng thi (state) hay bin (variable) v hnh ng (behavior). Tuy nhin C++ li s dng hai thut ng d liu thnh vin (member data) v hm thnh vin (member function) thay cho cc thut ng ny.
Xt mt cch c bit, ch mt i tng ring r th chnh n khng hu dng. Mt chng trnh hng i tng thng gm c hai hay nhiu hn cc i tng phn mm tng tc ln nhau nh l s tng tc ca cc i tng trong trong th gii thc.
Khi nim 6.3
i tng (object) l mt thc th phn mm bao bc cc thuc tnh v cc phng thc lin quan.
K t y, trong gio trnh ny chng ta s dng thut ng i tng (object) ch mt i tng phn mm. Hnh 6.1 l mt minh ha ca mt i tng phn mm: Chng 6: Lp trnh hng i tng 78 Hnh 6.1 Mt i tng phn mm
Mi th m i tng phn mm bit (trng thi) v c th lm (hnh ng) c th hin qua cc thuc tnh v cc phng thc. Mt i tng phn mm m phng cho chic xe p s c cc thuc tnh xc nh cc trng thi ca chic xe p nh: tc ca n l 10 km trn gi, nhp bn p l 90 vng trn pht, v bnh rng hin ti l bnh rng th 5. Cc thuc tnh ny thng thng c xem nh thuc tnh th hin (instance attribute) bi v chng cha ng cc trng thi cho mt i tng xe p c th. Trong k thut hng i tng th mt i tng c th c gi l mt th hin (instance). Khi nim 6.4
Mt i tng c th c gi l mt th hin (instance).
Hnh 6.2 minh ha mt xe p c m hnh nh mt i tng phn mm:
Hnh 6.2 i tng phn mm xe p
i tng xe p phn mm cng c cc phng thc thng li, tng nhp p hay l chuyn i bnh rng. N khng c phng thc thay i tc v tc ca xe p c th tnh ra t hai yu t s vng quay v bnh rng hin ti. Nhng phng thc ny thng thng c bit nh l cc phng thc th hin (instance method) bi v chng tc ng hay thay i trng thi ca mt i tng c th.
Chng 6: Lp trnh hng i tng 79 6.4. Lp (Class)
Trong th gii thc thng thng c nhiu loi i tng cng loi. Chng hn chic xe p ca bn ch l mt trong hng t chic xe p trn th gii. Tng t, trong mt chng trnh hng i tng c th c nhiu i tng cng loi v chia s nhng c im chung. S dng thut ng hng i tng, chng ta c th ni rng chic xe p ca bn l mt th hin ca lp xe p. Cc xe p c mt vi trng thi chung (bnh rng hin ti, s vng quay hin ti, hai bnh xe) v cc hnh ng (chuyn bnh rng, gim tc). Tuy nhin, trng thi ca mi xe p l c lp v c th khc vi cc trng thi ca cc xe p khc. Trc khi to ra cc xe p, cc nh sn xut thng thit lp mt bng thit k (blueprint) m t cc c im v cc yu t c bn ca xe p. Sau hng lot xe p s c to ra t bn thit k ny. Khng hiu qu nu nh to ra mt bn thit k mi cho mi xe p c sn xut.
Trong phn mm hng i tng cng c th c nhiu i tng cng loi chia s nhng c im chung nh l: cc hnh ch nht, cc mu tin nhn vin, cc on phim, Ging nh l cc nh sn xut xe p, bn c th to ra mt bng thit k cho cc i tng ny. Mt bng thit k phn mm cho cc i tng c gi l lp (class).
Khi nim 6.5
Lp (class) l mt thit k (blueprint) hay mt mu ban u (prototype) nh ngha cc thuc tnh v cc phng thc chung cho tt c cc i tng ca cng mt loi no .
Mt i tng l mt th hin c th ca mt lp.
Tr li v d v xe p chng ta thy rng mt lp Xedap l mt bng thit k cho hng lot cc i tng xe p c to ra. Mi i tng xe p l mt th hin ca lp Xedap v trng thi ca n c th khc vi cc i tng xe p khc. V d mt xe p hin ti c th l bnh rng th 5 trong khi mt chic khc c th l bnh rng th 3.
Lp Xedap s khai bo cc thuc tnh th hin cn thit cha ng bnh rng hin ti, s vng quay hin ti, .. cho mi i tng xe p. Lp Xedap cng khai bo v cung cp nhng thi cng cho cc phng thc th hin cho php ngi i xe p chuyn i bnh rng, phanh li, chuyn i s vng quay, .. nh Hnh 6.3.
Chng 6: Lp trnh hng i tng 80
Hnh 6.3 Khai bo cho lp Xedap
Sau khi bn to ra lp xe p, bn c th to ra bt k i tng xe p no t lp ny. Khi bn to ra mt th hin ca lp, h thng cp pht b nh cho i tng v tt c cc thuc tnh th hin ca n. Mi th hin s c vng nh ring cho cc thuc tnh th hin ca n. Hnh 6.4 minh ha hai i tng xe p khc nhau c to ra t cng lp Xedap:
Hnh 6.4 Hai i tng ca lp Xedap
Ngoi cc thuc tnh th hin, cc lp c th nh ngha cc thuc tnh lp (class attribute). Mt thuc tnh lp cha ng cc thng tin m c chia s bi tt c cc th hin ca lp. V d, tt c xe p c cng s lng bnh rng. Trong trng hp ny, nh ngha mt thuc tnh th hin gi s lng bnh rng l khng hiu qu bi v tt c cc vng nh ca cc thuc tnh th hin ny u gi cng mt gi tr. Trong nhng trng hp nh th bn c th nh ngha mt thuc tnh lp cha ng s lng bnh rng ca xe p.Tt c cc th hin ca lp Xedap s chia thuc tnh ny. Mt lp cng c th khai bo cc phng thc lp (class methods). Bn c th triu gi mt phng thc lp trc tip t lp nhng ngc li bn phi triu gi cc phng thc th hin t mt th hin c th no .
Chng 6: Lp trnh hng i tng 81
Hnh 6.5 Lp v th hin ca lp
Khi nim 6.6
Thuc tnh lp (class attribute) l mt hng mc d liu lin kt vi mt lp c th m khng lin kt vi cc th hin ca lp. N c nh ngha bn trong nh ngha lp v c chia s bi tt c cc th hin ca p. l
Phng thc lp (class method) l mt phng thc c triu gi m khng tham kho ti bt k mt i tng no. Tt c cc phng thc lp nh hng n ton b lp ch khng nh hng n mt lp ring r no. 6.5. Thuc tnh (Attribute)
Cc thuc tnh trnh by trng thi ca i tng. Cc thuc tnh nm gi cc gi tr d liu trong mt i tng, chng nh ngha mt i tng c th.
Khi nim 6.7
Thuc tnh (attribute) l d liu trnh by cc c im v mt i tng. Mt thuc tnh c th c gn mt gi tr ch sau khi mt i tng da trn lp y c to ra. Mt khi cc thuc tnh c gn gi tr chng m t mt i tng. Mi i tng ca mt lp phi c cng cc thuc tnh nhng gi tr ca cc thuc tnh th c th khc nhau. Mt thuc tnh ca i tng c th nhn cc gi tr khc nhau ti nhng thi im khc nhau.
Chng 6: Lp trnh hng i tng 82 6.6. Phng thc (Method) Cc phng thc thc thi cc hot ng ca i tng. Cc phng thc l nhn t lm thay i cc thuc tnh ca i tng.
Khi nim 6.8
Phng thc (method) c lin quan ti nhng th m i tng c th lm. Mt phng thc p ng mt chc nng tc ng ln d liu ca i tng (thuc tnh). Cc phng thc xc nh cch thc hot ng ca mt i tng v c thc thi khi i tng c th c to ra.V d, cc hot ng chung ca mt i tng thuc lp Ch l sa, vy tai, chy, v n. Tuy nhin, ch khi mt i tng c th thuc lp Ch c to ra th cc phng thc sa, vy tai, chy, v n mi c thc thi.
Cc phng thc mang li mt cch nhn khc v i tng. Khi bn nhn vo i tng Ca ra vo bn trong mi trng ca bn (mi trng th gii thc), mt cch n gin bn c th thy n l mt i tng bt ng khng c kh nng suy ngh. Trong tip cn hng i tng cho pht trin h thng, Ca ra vo c th c lin kt ti phng thc c gi s l c th c thc hin. V d, Ca ra vo c th m, n c th ng, n c th kha, hoc n c th m kha. Tt c cc phng thc ny gn kt vi i tng Ca ra vo v c thc hin bi Ca ra vo ch khng phi mt i tng no khc.
6.7. Thng ip (Message)
Mt chng trnh hay ng dng ln thng cha nhiu i tng khc nhau. Cc i tng phn mm tng tc v giao tip vi nhau bng cch gi cc thng ip (message). Khi i tng A mun i tng B thc hin cc phng thc ca i tng B th i tng A gi mt thng ip ti i tng B.
V d i tng ngi i xe p mun i tng xe p thc hin phng thc chuyn i bnh rng ca n th i tng ngi i xe p cn phi gi mt thng ip ti i tng xe p.
i khi i tng nhn cn thng tin nhiu hn bit chnh xc thc hin cng vic g. V d khi bn chuyn bnh rng trn chic xe p ca bn th bn phi ch r bnh rng no m bn mun chuyn. Cc thng tin ny c truyn km theo thng ip v c gi l cc tham s (parameter).
Chng 6: Lp trnh hng i tng 83 Mt thng ip gm c:
i tng nhn thng ip Tn ca phng thc thc hin Cc tham s m phng thc cn
Khi nim 6.9
Mt thng ip (message) l mt li yu cu mt hot ng.
Mt thng ip c truyn khi mt i tng triu gi mt hay nhiu phng thc ca i tng khc yu cu thng tin. Khi mt i tng nhn c mt thng ip, n thc hin mt phng thc tng ng. V d i tng xe p nhn c thng ip l chuyn i bnh rng n s thc hin vic tm kim phng thc chuyn i bnh rng tng ng v thc hin theo yu cu ca thng ip m n nhn c. 6.8. Tnh bao gi (Encapsulation) Trong i tng xe p, gi tr ca cc thuc tnh c chuyn i bi cc phng thc. Phng thc changeGear() chuyn i gi tr ca thuc tnh currentGear. Thuc tnh speed c chuyn i bi phng thc changeGear() hoc changRpm().
Trong OOP th cc thuc tnh l trung tm, l ht nhn ca i tng. Cc phng thc bao quanh v che giu i ht nhn ca i tng t cc i tng khc trong chng trnh.Vic bao gi cc thuc tnh ca mt i tng bn trong s che ch ca cc phng thc ca n c gi l s ng gi (encapsulation) hay l ng gi d liu.
c tnh ng gi d liu l tng ca cc nh thit cc h thng hng i tng. Tuy nhin, vic p dng trong thc t th c th khng hon ton nh th. V nhng l do thc t m cc i tng i khi cn phi phi by ra mt vi thuc tnh ny v che giu i mt vi phng thc kia. Ty thuc vo cc ngn ng lp trnh hng i tng khc nhau, chng ta c cc iu khin cc truy xut d liu khc nhau.
Khi nim 6.10
ng gi (encapsulation) l tin trnh che giu vic thc thi chi tit ca mt i tng. Mt i tng c mt giao din chung cho cc i tng khc s dng giao tip vi n. Do c tnh ng gi m cc chi tit nh: cc trng thi Chng 6: Lp trnh hng i tng 84 c lu tr nh th no hay cc hnh ng c thi cng ra sao c th c che giu i t cc i tng khc. iu ny c ngha l cc chi tit ring ca i tng c th c chuyn i m hon ton khng nh hng ti cc i tng khc c lin h vi n. V d, mt ngi i xe p khng cn bit chnh xc c ch chuyn bnh rng trn xe p thc s lm vic nh th no nhng vn c th s dng n. iu ny c gi l che giu thng tin.
Khi nim 6.11
Che giu thng tin (information hiding) l vic n i cc chi tit ca thit k hay thi cng t cc i tng khc.
6.9. Tnh tha k (Inheritance) H thng hng i tng cho php cc lp c nh ngha k tha t cc lp khc. V d, lp xe p leo ni v xe p ua l nhng lp con (subclass) ca lp xe p. Nh vy ta c th ni lp xe p l lp cha (superclass) ca lp xe p leo ni v xe p ua.
Khi nim 6.12
Tha k (inheritance) ngha l cc hnh ng (phng thc) v cc thuc tnh c nh ngha trong mt lp c th c tha k hoc c s dng li bi lp khc.
Khi nim 6.13
Lp cha (superclass) l lp c cc thuc tnh hay hnh ng c tha hng bi mt hay nhiu lp khc.
Lp con (subclass) l lp tha hng mt vi c tnh chung ca lp cha v thm vo nhng c tnh ring khc.
Cc lp con tha k thuc tnh v hnh ng t lp cha ca chng. V d, mt xe p leo ni khng nhng c bnh rng, s vng quay trn pht v tc ging nh mi xe p khc m cn c thm mt vi loi bnh rng v th m n cn thm mt thuc tnh l gearRange (loi bnh rng).
Cc lp con c th nh ngha li cc phng thc c tha k cung cp cc thi cng ring bit cho cc phng thc ny. V d, mt xe p leo ni s cn mt phng thc c bit chuyn i bnh rng.
Chng 6: Lp trnh hng i tng 85 Cc lp con cung cp cc phin bn c bit ca cc lp cha m khng cn phi nh ngha li cc lp mi hon ton. y, m lp cha c th c s dng li nhiu ln.
6.10.Tnh a hnh (Polymorphism) Mt khi nim quan trng khc c lin quan mt thit vi truyn thng ip l a hnh (polymorphism). Vi a hnh, nu cng mt hnh ng (phng thc) ng dng cho cc i tng thuc cc lp khc nhau th c th a n nhng kt qu khc nhau.
Khi nim 6.14
a hnh (polymorphism) ngha l nhiu hnh thc, hnh ng cng tn c th c thc hin khc nhau i vi cc i tng/cc lp khc nhau.
Chng ta hy xem xt cc i tng Ca S v Ca Ci. C hai i tng c mt hnh ng chung c th thc hin l ng. Nhng mt i tng Ca Ci thc hin hnh ng c th khc vi cch m mt i tng Ca S thc hin hnh ng . Ca Ci khp cnh ca li trong khi Ca S h cc thanh ca xung. Tht vy, hnh ng ng c th thc hin mt trong hai hnh thc khc nhau. Mt v d khc l hnh ng hin th. Ty thuc vo i tng tc ng, hnh ng y c th hin th mt chui, hoc v mt ng thng, hoc l hin th mt hnh.
a hnh c s lin quan ti vic truyn thng ip. i tng yu cu cn bit hnh ng no yu cu v yu cu t i tng no. Tuy nhin i tng yu cu khng cn lo lng v mt hnh ng c hon thnh nh th no.
Bi tp cui chng 6 6.1 Trnh by cc nh ngha ca cc thut ng: Lp trnh hng i tng Tru tng ha i tng Lp Thuc tnh Phng thc Thng ip
Chng 6: Lp trnh hng i tng 86 6.2 Phn bit s khc nhau gia lp v i tng, gia thuc tnh v gi tr, gia thng ip v truyn thng ip.
6.3 Trnh by cc c im ca OOP.
6.4 Nhng li ch c c thng qua tha k v bao gi.
6.5 Nhng thuc tnh v phng thc c bn ca mt ci my git.
6.6 Nhng thuc tnh v phng thc c bn ca mt chic xe hi.
6.7 Nhng thuc tnh v phng thc c bn ca mt hnh trn.
6.8 Ch ra cc i tng trong h thng rt tin t ng ATM.
6.9 Ch ra cc lp c th k tha t lp in thoi, xe hi, v ng vt. Chng 6: Lp trnh hng i tng 87