You are on page 1of 12

Chng 6.

Lp trnh hng i tng






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

You might also like