Chng 1
LP TRÌNH HNG I TNG
Mc tiêu
Kt thúc chng, hc viên có th:
nh ngha Lp trình hng i tng (Object-oriented Programming).
Nhn thc v Tru tng hóa D liu (Data Abstraction).
nh ngha mt Lp (Class).
nh ngha mt i tng (Object).
Nhn thc đc s khác bit gia Lp và i tng.
Nhn thc đc s cn thit đi vi Thit lp (Construction) và Hy
(Destruction).
nh ngha tính Bn vng (Persistence).
Hiu bit v tính Tha k (Inheritance).
nh ngha tính a hình (Polymorphism).
Lit kê nhng thun li ca phng pháp hng i tng.
1.1 Gii thiu v Lp trình hng i tng (Object-oriented Programming)
Lp trình hng i tng (OOP) là mt phng pháp thit k và phát trin phn mm.
Nhng ngôn ng OOP không ch bao gm cú pháp và mt trình biên dch (compiler) mà
còn có mt môi trng phát trin toàn din. Môi trng này bao gm mt th vin đc
thit k tt, thun li cho vic s dng các đi tng.
i vi mt ngôn ng lp trình h tr OOP thì vic trin khai k thut lp trình hng
đi tng s d dàng hn. K thut lp trình hng đi tng ci tin vic phát trin các
h thng phn mm. K thut y đ cao nhân t chc nng (fucntionality) và các mi
quan h d liu.
OOP là phng thc t duy mi đ gii quyt vn đ bng máy tính. đt kt qu, lp
trình viên phi nn vn đ thành mt thc th quen thuc vi máy tính. Cách tip cn
hng đi tng cung cp mt gii pháp toàn vn đ gii quyt vn đ.
Hãy xem xét mt tình hung cn đc trin khai thành mt h thng trên máy vi tính:
vic mua bán xe hi. Vn đ vi tính hóa vic mua bán xe hi bao gm nhng gì?
Nhng yu t rõ ràng nht liên quan đn vic mua bán xe hi là:
1) Các kiu xe hi (model).
2) Nhân viên bán hàng.
3) Khách hàng.
Nhng hot đng liên quan đn vic mua bán:
1) Nhân viên bán hàng đa khách hàng tham quan phòng trng bày.
2) Khách hàng chn la mt xe hi.
3) Khách hàng đt hóa đn.
4) Khách hàng tr tin.
5) Chic xe đc trao cho khách hàng.
Mi vn đ đc chia ra thành nhiu yu t, đc gi là các i tng (Objects) hoc
các Thc th (Entities). Chng hn nh ví d trên, khách hàng, xe hi và nhân viên bán
hàng là nhng đi tng hoc thc th.
Lp trình viên luôn luôn c gng to ra nhng kch bn (scenarios) tht quen thuc vi
nhng tình hung đi sng thc. Bc th nht trong đng hng này là làm cho máy
tính liên kt vi nhng đi tng th gii thc.
Tuy nhiên, máy tính ch là mt c máy. Nó ch thc hin nhng công vic đc lp trình
mà thôi. Vì th, trách nhim ca lp trình viên là cung cp cho máy tính nhng thông tin
theo cách thc mà nó cng nhn thc đc cùng nhng thc th nh chúng ta nhn thc.
ó chính là lãnh vc ca k thut hng đi tng. Chúng ta s dng k thut hng đi
tng đ ánh x nhng thc th chúng ta gp phi trong đi sng thc thành nhng thc
th tng t trong máy tính.
Phát trin phn mm theo k thut lp trình hng đi tng có kh nng gim thiu s
ln ln thng xy ra gia h thng và lãnh vc ng dng.
Lp trình hng đi tng đ cp đn d liu và th tc x lý d liu theo quan đim là
mt đi tng duy nht. Lp trình hng đi tng xem xét d liu nh là mt thc th
hay là mt đn v đc lp, vi bn cht riêng và nhng đc tính ca thc th y. Bây gi
chúng ta hãy kho sát nhng hn t ‘đi tng’ (object), ‘d liu’ (data) và ‘phng
thc’ (method).
Có nhiu loi đi tng khác nhau. Chúng ta có th xem các b phn khác nhau trong
mt c quan là các đi tng. in hình là mt c quan có nhng b phn liên quan đn
vic qun tr, đn vic kinh doanh, đn vic k toán, đn vic tip th … Mi b phn có
nhân s riêng, các nhân s đc trao cho nhng trách nhim rõ ràng. Mi b phn cng
có nhng d liu riêng chng hn nh thông tin cá nhân, bng kim kê, nhng th thc
kinh doanh, hoc bt k d liu nào liên quan đn chc nng ca b phn đó. Rõ ràng là
mt c quan đc chia thành nhiu b phn thì vic qun tr nhân s và nhng hot đng
doanh nghip d dàng hn. Nhân s ca c quan điu khin và x lý d liu liên quan
đn b phn ca mình.
Chng hn nh b phn k toán chu trách nhim v lng bng đi vi c quan. Nu
mt ngi đn v tip th cn nhng chi tit liên quan đn lng bng ca đn v mình,
ngi y ch cn liên h vi b phn k toán. Mt ngi có thm quyn trong b phn k
toán s cung cp thông tin cn bit, nu nh thông tin y có th chia s đc. Mt ngi
không có thm quyn t mt b phn khác thì không th truy cp d liu, hoc không th
thay đi làm h hng d liu. Ví d này minh chng các đi tng là hu dng trong
vic phân cp và t chc d liu.
Hình 1.1 Minh ha cu trúc ca mt c quan đin hình.
Khái nim v đi tng có th đc m rng đn hu ht các lãnh vc đi sng, và hn
na, đn th gii lp trình. Bt k ng dng nào đu có th đc đnh ngha theo hn t
thc th hoc đi tng đ to ra tin trình x lý mô phng theo tin trình x lý mà con
ngi ngh ra.
Phng pháp gii quyt ‘top-down’ (t trên xung) cng còn đc gi là ‘lp trình hng
cu trúc’ (structured programming). Nó xác đnh nhng chc nng chính ca mt chng
trình và nhng chc nng này đc phân thành nhng đn v nh hn cho đn mc đ
thp nht. Bng k thut này, các chng trình đc cu trúc theo h thng phân cp các
module. Mi mt module có mt đu vào riêng và mt đu ra riêng. Trong mi module,
s điu khin có chiu hng đi xung theo cu trúc ch không có chiu hng đi lên.
Phng pháp OOP c gng qun lý vic tha k phc tp trong nhng vn đ đi thc.
làm đc vic này, phng thc OOP che giu mt vài thông tin bên trong các đi
tng. OOP tp trung trc ht trên d liu. Ri gn kt các phng thc thao tác trên d
liu, vic này đc xem nh là phn tha k ca vic đnh ngha d liu. Bng 1.1 minh
ha s khác bit gia hai phng pháp:
Phng pháp Top-Down OOP
Chúng ta s xây dng mt khách sn. Chúng ta s xây dng mt tòa nhà 10 tng
vi nhng dãy phòng trung bình, sang
trng, và mt phòng hp ln.
Chúng ta s thit k các tng lu, các phòng
và phòng hp.
Chúng ta s xây dng mt khách sn vi
nhng thành phn trên.
Bng 1.1 Mt ví d v hai phng pháp gii quyt OOP và Structured
Phòng Nhân s Phòng K toán
Phòng Kinh doanh
Hình 1.1
1.2 Tru tng hóa d liu (Data Abstraction)
Khi mt lp trình viên phi phát trin mt chng trình ng dng thì không có ngha là
ngi y lp tc vit mã cho ng dng y. Trc ht, ngi y phi nghiên cu ng dng
và xác đnh nhng thành phn to nên ng dng. K tip, ngi y phi xác đnh nhng
thông tin cn thit v mi thành phn.
Hãy kho sát chng trình ng dng cho vic mua bán xe hi nói trên. Chng trình phi
xut hóa đn cho nhng xe hi đã bán cho khách hàng. xut mt hóa đn, chúng ta
cn nhng thông tin chi tit v khách hàng. Vy bc th nht là xác đnh nhng đc tính
ca khách hàng.
Mt vài đc tính gn kt vi khách hàng là:
Tên.
a ch.
Tui.
Chiu cao.
Màu tóc.
T danh sách k trên, chúng ta xác đnh nhng đc tính thit yu đi vi ng dng. Bi
vì chúng ta đang đ cp đn nhng khách hàng mua xe, vì th nhng chi tit thit yu là:
Tên.
a ch.
Còn nhng chi tit khác (chiu cao, màu tóc …) là không quan trng đi vi ng dng.
Tuy nhiên, nu chúng ta phát trin mt ng dng h tr cho vic điu tra ti phm thì
nhng thông tin chng hn nh màu tóc là thit yu.
Bên cnh nhng chi tit v khách hàng, nhng thông tin sau cng cn thit:
Kiu xe đc bán.
Nhân viên nào bán xe.
Bên cnh nhng đc tính ca khách hàng, xe hi và nhân viên bán hàng, chúng ta cng
cn lit kê nhng hành đng đc thc hin.
Công vic xut hóa đn đòi hi nhng hành đng sau:
Nhp tên ca khách hàng.
Nhp đa ch ca khách hàng.
Nhp kiu xe.
Nhp tên ca nhân viên bán xe.
Xut hóa đn vi đnh dng đòi hi.
Khung thông tin bên di cho thy nhng thuc tính và nhng hành đng liên quan đn
mt hóa đn:
Các thuc tính
Tên ca khách hàng
a ch ca khách hàng
Kiu xe bán
Nhân viên bán xe
Các hành đng
Nhp tên
Nhp đa ch
Nhp kiu xe
Nhp tên nhân viên bán xe
Xut hóa đn
Tip theo, chúng ta mun ng dng tính toán tin hoa hng cho nhân viên bán hàng.
Nhng thuc tính liên kt vi nhân viên bán hàng có tng quan vi ng dng này là:
Tên.
S lng xe bán đc.
Tin hoa hng.
Nhng hành đng đòi buc đi vi công vic này là:
Nhp tên nhân viên bán xe.
Nhp s lng xe bán đc.
Tính tin hoa hng kim đc.
Nhng thuc tính
Tên
S lng xe bán đc
Tin hoa hng
Nhng hành đng
Nhp tên
Nhp s lng xe bán đc
nh ngha
S tru tng hóa d liu là tin trình xác đnh và nhóm các thuc tính và các hành
đng liên quan đn mt thc th đc thù, xét trong mi tng quan vi ng dng đang
p
hát trin.
Tính tin hoa hng
Nh th, vic tru tng hóa d liu tra đt ra câu hi ‘âu là nhng thuc tính và nhng
hành đng cn thit cho mt vn đ đt ra?’
1.2.1 Nhng thun li ca vic Tru tng hóa
Nhng thun li ca vic Tru tng hóa là:
Tp trung vào vn đ.
Xác đnh nhng đc tính thit yu và nhng hành đng đòi hi.
Gim thiu nhng chi tit không cn thit.
Vic tru tng hóa d liu là cn thit, bi vì không th mô phng tt c các hành đng
và các thuc tính ca mt thc th. Vn đ mu cht là tp trung đn nhng hành vi ct
yu và áp dng chúng trong ng dng.
Chng hn nh khách hàng hoc nhân viên bán hàng cng có th thc hin nhng hành
đng sau:
Ngi y đi li.
Ngi y nói chuyn.
Tuy nhiên, nhng hành đng này không liên quan đn ng dng. Vic tru tng hóa d
liu s loi b chúng.
1.3 Lp (Class)
Trong ng dng mua bán xe, chúng ta đã xác đnh các thuc tính và các hành đng cn
có đ xut mt hóa đn cho mt khách hàng.
Các hành đng và các thuc tính này là chung cho mi khách hàng mua xe. Ví th, chúng
có th đc nhóm li trong mt thc th đn nht gi là mt ‘lp’.
Hãy kho sát lp có tên là ‘khách hàng’ di đây. Lp này bao gm mi thuc tính và
hành đng đòi hi đi vi mt khách hàng.
Lp Khách hàng
Tên khách hàng
a ch khách hàng
Kiu xe đc bán
Nhân viên bán xe
Nhp tên
Nhp đa ch
Nhp kiu xe đc bán
Nhp tên nhân viên bán xe
Xut hóa đn
Mt lp là mt mô hình khái nim v mt thc th. Nó mang tính cách tng quát ch
không mang tính cách đc thù.
Khi đnh ngha mt lp, chúng ta mun phát biu rng mt lp s phi có mt tp hp
các thuc tính và các hành đng riêng. Chng hn nh mt đnh ngha lp di đây:
Lp Con ngi
Tên
Chiu cao
Màu tóc
Vit
Nói
Lp này đnh ngha thc th ‘Con ngi’. Mi thc th thuc kiu ‘Con ngi’ s đu có
nhng đc tính và nhng hành đng nh đã đc đnh ngha.
Mt khi mt lp đã đc đnh ngha, chúng ta bit đc nhng thuc tính và nhng hành
đng ca nhng thc th ‘trông ging’ nh lp này. Vì th, t bn cht mt lp là mt
nguyên mu (prototype).
Mt ví d khác v mt lp liên quan đn vic mua bán xe hi nh sau:
Lp Nhân viên bán hàng
Tên
S lng xe bán đc
Tin hoa hng
Nhp tên
Nhp s lng xe bán đc
Tính tin hoa hng
Lp trên đnh ngha các thuc tính và các hành đng đc trng cho mi nhân viên bán xe
hi.
nh ngha
Mt lp đnh ngha mt thc th theo nhng thuc tính và nhng hành đng chung.
Hoc
N
hng thuc tính và nhng hành đng chung ca mt thc th đc nhóm li đ to nên
mt đn v duy nht gi là mt lp.
Hoc
Mt lp là mt s xác đnh cp chng loi ca các thc th ging nhau.
1.4 i tng (Object)
Mt lp là mt nguyên mu phác ha nhng thuc tính và nhng hành đng kh th ca
mt thc th. có th s dng thc th mà lp đnh ngha, chúng ta phi to mt ‘đi
tng’ t lp đó.
Lp là mt khái nim, còn đi tng là mt mu thc đc đnh ngha bi lp.
Hãy kho sát lp ‘Khách hàng’ đc đnh ngha trên. Lp này đnh ngha mi thuc tính
và hành đng gn lin vi mt khách hàng.
Khi mt ngi mua mt xe hi mt ca hàng, ca hàng y có mt khách hàng mi.
Vào thi đim y, mt đi tng ging nh lp ‘Khách hàng’ đc to ra. i tng này
s phi có nhng giá tr thc đi vi các thuc tính ‘Tên’, ‘a ch’, ‘Kiu xe’ …
Chng hn nh mt khách hàng có tên là ‘Mark’, sng ‘London’ đã mua mt xe kiu
‘Honda Civic’ t nhân viên bán hàng tên là ‘Tom’. Nh th, ‘Mark’ là mt đi tng ca
kiu ‘Khách hàng’.
Mt đi tng là mt thc th c th (thông thng bn có th s chm, xem thy và cm
nhn).
K t lúc mt đi tng hin hu, nhng thuc tính ca nó là nhng giá tr xác đnh, và
nhng hành đng đc đnh ngha cho đi tng này đc thc thi.
Trong mi mt đi tng, các khía cnh sau đây đc xác đnh rõ:
Tình trng (state).
Thái đ (behavior).
Chân tính (identity).
nh ngha
Mt đi tng là mt trng hp ca mt lp.
Hình 1.2 trình bày hai đi tng đi thc.
Mi đi tng có nhng đc tính riêng mô t đi tng y là gì, hoc hành đng ra sao.
Chng hn nh nhng thuc tính ca mt đi tng ‘Con ngi’ s là:
Tên.
Tui.
Trng lng.
Nhng thuc tính ca mt đi tng ‘Xe hi’ s là:
Màu sc.
Kiu xe.
Nm.
Mt đi tng cng thc hin mt s hành đng. Mt xe hi có kh nng thc hin
nhng hành đng sau:
Khi đng.
Ngng.
Chuyn đng.
chuyn đi gia các đi tng lp trình và các đi tng đi thc, cn phi kt hp
các thuc tính và các hành đng ca mt đi tng.
Con ngi
Tên: Jack
Tui: 28
Trng lng: 65 kgs
Hành đng:
i
N
ói
Suy ngh
Xe hi
Kiu: Ferrari
Màu:
N
m: 1995
Hành đng:
Khi đng
N
gng
Chuyn đng
Hình 1.2: Mt đi tng Con ngi và mt đi tng Xe hi
1.4.1 Thuc tính
Chúng ta xác đnh các thuc tính và các hành đng đ đnh ngha mt lp.
Mt khi các thuc tính đc gán cho các giá tr, chúng mô t mt đi tng. Hãy kho sát
lp sau:
Các thuc tính ca lp Khách hàng
Tên ca khách hàng
a ch ca khách hàng
Kiu xe đc bán
Nhân viên đã bán xe
Khi thuc tính ‘Tên’ đc gán cho giá tr ‘Mark’ thì nó mô t mt đi tng xác đnh
đc to t lp ‘Khách hàng’.
Nh th, các thuc tính nm gi các giá tr d liu trong mt đi tng, chúng đnh ngha
mt đi tng đc thù.
Bi vì mt lp là mt nguyên mu cho nên các thuc tính trong mt lp không th nm
gi các giá tr. Mt thuc tính có th đc gán mt giá tr ch sau khi mt đi tng da
trên lp y đc to ra.
có th lu gi nhng chi tit ca mt khách hàng, mt trng hp (đi tng) ca lp
‘Khách hàng’ phi đc to ra. Các thuc tính ca mt đi tng hin hu ch khi đi
tng y đc to ra.
Mi đi tng ca mt lp phi có cùng các thuc tính.
Kho sát ví d sau:
nh ngha
Mt thuc tính là mt đc tính mô t mt đi tng.
Các thuc tính ca lp Con ngi
Tên
Chiu cao
Màu tóc
i tng đc to t lp Con ngi
Mark
6 ft. 1 in.
Blac
k
=
=
=
1.4.2 Hot đng (Operation)
Các hành đng kh thi, nh đc đnh ngha trong mt lp, đc gi là ‘các hot đng’.
Các hot đng xác đnh các hành đng đc đòi hi ca mt đi tng đc to ra t mt
lp. Chng hn nh chúng ta không th đòi hi mt hot đng ‘Mua mt xe hi khác’ ca
mt đi tng đc to ra t lp ‘Khách hàng’.
Mt lp ch là mt nguyên mu. Vì th, trong mt lp mt hot đng ch đc đnh
ngha. Còn vic áp dng hot đng y ch xy ra ni các đi tng riêng r. Chng hn
nh hot đng ‘Nhp Tên’ mà lp “Khách hàng’ đnh ngha có th đc thc hin ni
mt đi tng nào đó.
Tp hp các hot đng đc yêu cu cho tt c các đi tng trong mt lp.
1.4.3 Phng thc (Method)
Các hot đng đnh ngha các hành đng kh thi có th đc yêu cu ca mt đi tng.
Mt phng thc là s thc thi thc t ca mt hot đng.
Các phng thc xác đnh cách thc thao tác trên các d liu ca mt đi tng. Bi vì
phng thc là s thc thi thc t mt hot đng, cho nên nó có th đc áp dng cho
mt đi tng. Mt phng thc là mt thut toán tng bc (step-by-step) xác đnh điu
gì đc thc hin khi hot đng y đc yêu cu.
Hãy kho sát nhng hot đng chung ca mt thc th thuc loi ‘Con ngi’: i, Nói.
Ch khi mt đi tng c th ca loi ‘Con ngi’ đc to ra thì các hành đng ‘i’,
‘Nói’ mi đc thc thi.
1.4.4 Thông đip (Message)
yêu cu mt hot đng c th nào đó đc thc hin, mt thông đip đc gi ti đi
tng, thông đip này đnh ngha hot đng.
nh ngha
Mt hot đng là mt dch v đc đòi hi ca mt đi tng.
nh ngha
Phng thc là mt s xác đnh v cách thc mt hot đng đc yêu cu đc thc
thi.
nh ngha
Mt thông đip là mt li yêu cu mt hot đng.
Khi mt đi tng nhn đc mt thông đip, nó thc hin mt phng thc tng ng.
Chng hn, mt đi tng đc to t lp ‘Khách hàng’ đ nhp tên ca ngi s dng.
Khi đi tng nhn đc thông đip, nó tìm và thc thi phng thc ‘Nhp tên’.
Trong trng hp mt công ty, mi b phn đc coi là mt đi tng. Nhng thông tin
đc chuyn ti và đc đón nhn t mi b phn (hoc qua thông báo liên b phn,
hoc qua nhng ch th ming) to nên nhng thông đip gia các đi tng. Nhng ch
th này có th đc chuyn dch thành nhng li gi hàm trong mt chng trình.
Trong hình 1.3, ‘Kinh doanh’ và ‘K toán’ là hai b phn khác nhau trong mt công ty.
Hai b phn này đc coi là hai đi tng khác nhau. Thông tin đc truyn đi và đc
đón nhn gia các b phn to nên các thông đip gia các đi tng.
1.4.5 S kin (Event)
Mt s kin là mt s vic xy ra cho mt đi tng ti mt thi đim. đáp ng li s
kin y, đi tng s thc hin mt hoc nhiu phng thc.
Nói cách khác, mt s kin là mt tác nhân mà đi tng này gây ra cho mt đi tng
khác. Chng hn nh click chut trái trên mt nút.
hiu rõ hn các s kin, hãy kho sát ví d sau t đi thc:
‘Mt ngi s thét lên khi b thc bng mt vt nhn’.
‘Thc’ là s kin gây ra s phn ng là ‘thét lên’.
Trong máy tính, mt ngi s dng nhn mt nút trên bàn phím là mt s kin chung. S
phn hi đi vi s kin này là vic hin th ký t tng ng trên màn hình.
Phòng
Kinh doanh
Phòng
K toán
Mc ln
g
?
$2000
Hình 1.3 Các đi tng gi thông đip cho nhau
1.5 Lp và i tng
Có mt s khác bit thc s gia mt lp và mt đi tng. Cn nhn thc rõ s khác
bit này.
Mt lp đnh ngha mt thc th, trong khi đó mt đi tng là mt trng hp ca thc
th y.
i tng là mt mô hình thc, trong khi lp là mt mô hình khái nim - đnh ngha tt
c các thuc tính và các phng thc đc đòi hi ca mt đi tng.
Tt c các đi tng thuc v cùng mt lp có cùng các thuc tính và các phng thc.
Mt lp là mt nguyên mu ca mt đi tng. Nó xác đnh các hành đng kh thi và các
thuc tính cn thit cho mt nhóm các đi tng đc thù.
1.6 Thit lp (Construction) và Hy (Destruction)
1.6.1 Thit lp
Mt lp ch cung cp nhng đnh ngha v các thuc tính và các phng thc kh thi.
Các thuc tính và các phng thc có th đc truy cp ch khi mt đi tng da trên
mt lp đc to ra.
Khi mt đi tng mi đc to, các thuc tính ca nó tr nên hin thc và có th đc
gán giá tr. Tng t, các phng thc đc đnh ngha cng đc áp dng.
Mi mt lp có mt hàm thit lp.
Kho sát li trng hp ca hàng bán xe hi. Ngay t lúc đu ch đnh ngha các lp. Cho
đn khi mt khách hàng mua mt xe hi ti ca hàng thì mt đi tng mi ging nh
lp ‘Khách hàng’ mi đc to.
Khi đi tng này đc to, mt s khong trng b nh đc cp phát cho nhng thuc
tính ca nó đ lu tr các giá tr đc gán cho các thuc tính y (‘Tên’, ‘a ch’ …).
Hàm thit lp thc hin vic cp phát này. Vào lúc này, mi thuc tính và phng thc
ca đi tng sn sàng đ s dng.
nh ngha
Thit lp là mt tin trình hin thc hóa mt đi tng.
Hàm thit lp là mt phng thc đc bit phi đc gi trc khi s dng bt k
p
hng thc nào trong mt lp. Hàm Thit lp khi to các thuc tính, và cp phát b
nh trong máy tính khi cn thit.
Tng t nh trng hp mt hc sinh nhp hc ti mt trng hc. Khi mt hc sinh
nhp hc, mt vài hành đng đc thc hin đ nhn hc sinh y vào trng. ó là:
Xp lp cho hc sinh y.
Ghi tên hc sinh y vào danh sách.
Xp ch ngi.
ây là nhng hành đng đng lot đc thc hin ngay lúc bt nhp hc. Chúng tng t
vi nhng hành đng mà hàm thit lp ca mt đi tng thc hin.
1.6.2 Hy
Khi mt đi tng không còn cn thit na thì nó s b hy b.
S lãng phí tài nguyên, chng hn nh b nh, nu nh tip tc đ cho mt đi tng tn
ti mt khi nó không còn cn thit.
Mt khi mt đi tng b hy thì các thuc tính ca nó không th đc truy cp, cng
nh không mt phng thc nào có th đc thc thi.
Chng hn, trong trng hp bán xe hi, mt khi nhân viên bán hàng b ngh, nhng chi
tit ca ngi y không còn liên h. Vì th, đi tng tng ng s b hy. iu này gii
phóng b nh đã cp phát cho nhân viên bán hàng y. Khong trng này gi đây có th
đc tái s dng.
Hãy xem xét ví d v trng hc trên đây. Khi mt hc sinh thôi hc, tên ca hc sinh y
b loi ra khi danh sách, và khong trng đc gii phóng có th đc tái cp phát.
Các hành đng đng lot này tng t vi công vic ca hàm hy đi vi mt đi tng.
1.7 Tính Bn vng (Persistence)
Hãy kho sát trng hp bán xe hi. Nhng chi tit ca khách hàng đc lu tr ngay
khi xe hi đã đc phân phi.Vic duy trì d liu vn cn thit cho đn khi d liu đc
chnh sa hoc hy b chính thc.
nh ngha
Hàm Hy là mt phng thc đc bit đc dùng đ hy b mt đi tng.
Tin trình Hy tiêu hy mt đi tng và gii phóng khong trng b nh mà hàm
thit lp đã cp phát cho nó. Hàm Hy cng trit tiêu kh nng truy cp đn đi tng
y.
Ca hàng bán xe lu tr chi tit khách hàng vào mt file. Nhng chi tit này s tn ti
trong file cho đn khi chúng b hy, hoc bn thân file b hy.
Chúng ta đng chm tính bn vng mi ngày. Hãy xem vic sáng tác mt bài th. Bài th
là d liu tn ti trong tâm trí ca nhà th. Bao lâu nhà th còn tn ti thì by lâu bài th
còn tn ti. Nu bài th mun tn ti ngay c sau khi nhà th qua đi thì nó phi đc
vit ra giy.
Bài th đc vit ra giy to nên s bn vng. Bài th s tn ti bao lâu vn bn y còn
đc duy trì. Bài th y không còn tn ti khi t giy y b xé rách, hoc ch ngha b
xóa đi.
1.8 Tính óng gói d liu
Tin trình tru tng hóa d liu h tr cho vic xác đnh nhng thuc tính và nhng
phng thc thit yu.
Thông thng, các đi tng s dng nhng thuc tính và nhng phng thc không
đc đòi hi bi ngi s dng đi tng.
Chng hn nh trong trng hp lp ‘Khách hàng’. Lp y có mt phng thc xut hóa
đn. Gi s rng khi hóa đn đc xut, mt trong nhng chi tit đc in ra trên hóa đn
là ngày phân phi. Tuy nhiên chúng ta không bit thuc tính nào qua đó chúng ta có th
xác đnh thông tin này.
Ngày phân phi đc phát sinh bên trong đi tng, và đc hin th trên hóa đn. Nh
th ngi s dng không nhn thc v cách thc mà ngày phân phi đc hin th.
Ngày phân phi có th đc x lý theo mt trong nhng cách sau:
ó là mt giá tr đc tính toán - Chng hn, 15 ngày k t ngày đt hàng.
ó là mt giá tr c đnh – Xe hi đc phân phi vào ngày mùng 2 mi tháng.
i tng s dng nhng thuc tính và nhng phng thc mang tính ni b. Bi vì
nhng thuc tính và nhng phng thc có th đc che khut khi tm nhìn. Các đi
tng khác và nhng ngi s dng không nhn thc đc các thuc tính và / hoc các
phng thc nh th có tn ti hay không. Tin trình che giu các thuc tính, các phng
thc, hoc các chi tit ca vic thi hành đc gi là ‘đóng gói’ (encapsulation).
nh ngha
Tính Bn vng là kh nng lu tr d liu ca mt đi tng ngay c khi đi tng
y không còn tn ti.
Vic đóng gói phân tách nhng khía cnh có th truy cp t bên ngoài vi nhng khía
cnh ch đc s dng trong ni b ca đi tng.
im thun li ca vic đóng gói là có th to ra bt k thuc tính hay phng thc cn
thit đ đáp ng đòi hi công vic khi xây dng mt lp. Mt khác, ch nhng thuc tính
và / hoc nhng phng thc có th đc truy cp t bên ngoài lp là trông thy.
Mt ví d khác v vic đóng gói là lp ‘Nhân viên bán hàng’ đã đc đnh ngha trên.
Khi phng thc tính tin hoa hng đc thc thi, ngi s dng không bit chi tit ca
vic tính toán. Tt c nhng gì h bit ch là tng s tin hoa hng mà h phi tr cho
nhân viên bán hàng.
Mt trng hp v đóng gói mà chúng ta gp trong đi sng hng ngày là vic giao dch
kinh doanh mt ca hàng. Khách hàng yêu cu sn phm X. H đc trao cho sn
phm X, và h phi tr tin cho sn phm y. Sau khi khách hàng yêu cu sn phm,
ngi bán hàng thc hin nhng hành đng sau:
Kim tra mt hàng trên k hàng.
Gim s lng mt hàng trong bng kim kê sau khi bán.
Tuy nhiên, khách hàng không đc bit nhng chi tit này.
1.9 Tính tha k
Hãy kho sát các lp sau:
Lp Sinh viên Lp Nhân viên Lp Khách hàng
Tên Tên Tên
a ch a ch a ch
im môn 1 Lng Kiu xe đã bán
im môn 2 Chc v Nhp tên
Nhp tên Nhp tên Nhp đa ch
Nhp đa ch Nhp đa ch Nhp kiu xe
Nhp đim Nhp chc v Xut hóa đn
Tính tng đim Tính lng
Trong tt c ba lp, chúng ta thy có mt vài thuc tính và hot đng chung. Chúng ta
mun nhóm nhng thuc tính và nhng hot đng y li, và đnh ngha chúng trong mt
lp ‘Ngi’.
nh ngha
óng gói là tin trình che giu vic thc thi nhng chi tit ca mt đi tng đi vi
ngi s dng đi tng y.
Lp Ngi
Tên
a ch
Nhp tên
Nhp đa ch
Ba lp ‘Sinh viên’, ‘Nhân viên’ và ‘Khách hàng’ to nên lp ‘Ngi’. Nói cách khác, ba
lp y có tt c các thuc tính và các phng thc ca lp ‘Ngi’, ngoài ra chúng còn
có nhng thuc tính và nhng phng thc riêng.
Chúng ta cn phi đnh ngha lp ‘Ngi’ và s dng nó trong khi đnh ngha các lp
‘Sinh viên’, ‘Nhân viên’ và ‘Khách hàng’.
Chúng ta xây dng mt lp ‘Ngi’ vi nhng thuc tính và nhng hot đng nh đã
trình bày hình trên. K tip, chúng ta xây dng lp ‘Khách hàng’ bao gm lp ‘Ngi’
cng vi nhng thuc tính và nhng phng thc riêng.
Chúng ta có th đnh ngha các lp ‘Sinh viên’ và ‘Nhân viên’ theo cùng cách thc trên.
Nh th, c ba lp ‘Khách hàng’, ‘Sinh viên’ và ‘Nhân viên’ đu chia s nhng thuc
tính và nhng phng thc mà lp ‘Ngi’ cung cp.
Lp Sinh viên Lp Nhân viên Lp Khách hàng
im môn 1
im môn 2
Nhp đim
tính tng đim
Lng
Chc v
Nhp chc v
Tính lng
Kiu xe bán đc
Nhp kiu xe
Xut hóa đn
Theo ngôn ng hng đi tng, lp ‘Khách hàng’ đc gi là tha k lp ‘Ngi’.
Có hai khái nim quan trng khác liên kt vi tính tha k. Lp ‘Khách hàng’ là lp
‘Ngi’ cng thêm cái khác. Nh th, lp ‘Khách hàng’ có tt c các thuc tính và các
phng thc đc đnh ngha trong lp ‘Ngi’ cng vi các thuc tính và các hot đng
ca riêng nó.
Trong ví d này, lp ‘Khách hàng’ đc gi là ‘lp con’ (subclass).
nh ngha
Tính tha k cho phép mt lp chia s các thuc tính và các phng thc đc đnh
ngha trong mt hoc nhiu lp khác.
nh ngha
Lp tha hng t mt lp khác đc gi là Subclass.
Trong ví d trên, lp ‘Ngi’ đc coi là ‘lp trên’ (superclass).
Hãy xem xét ví d v lp ‘Các đng vt’ hình 1.4. ‘Các đng vt’ là lp trên cùng mà
các lp khác k tha. Chúng ta có mt dãy các lp trung gian – ‘Côn trùng’, ‘Hu nh’,
‘Bò sát’, ‘Lng c’ - mà dãy các lp di k tha.
Các lp ‘Côn trùng’, ‘Hu nh’, ‘Bò sát’, ‘Lng c’ là nhng lp con ca lp trên ‘Các
đng vt’. Nh th, nhng lp này có tt c nhng thuc tính và các hot đng ca lp
‘Các đng vt’, cng thêm nhng thuc tính và nhng phng thc ca riêng chúng.
Lp ‘Hu nh’ là lp mà các lp ‘Con ngi’ và ‘Khác con ngi’ tha k. Nh th, các
lp ‘Con ngi’ và ‘Khác con ngi’ là các lp con ca lp trên ‘Hu nh’.
1.9.1 Tính a Tha k
Trong tt c các ví d trên, mt lp tha k ch t mt lp. Ngay c trong ví d tha k
v các loi phng tin di chuyn, mi lp con ch có mt lp cha. Trng hp nh th
gi là ‘tha k đn’ (single inheritance).
Trong ‘đa tha k’, mt lp con tha k t hai hay nhiu lp cha.
Hãy kho sát ví d sau:
nh ngha
Mt Superclass là mt lp mà các đc tính ca nó đc mt lp khác tha hng.
Côn trùng
Các đng vt
Hu nh Bò sát Lng c
Con ngi Khác con ngi
Hình 1.4 Tính tha k
Trong hình trên, chúng ta đã xây dng mt lp ‘V mt hình’, lp này tha hng ba lp:
‘ng thng’, ‘ng tròn’, ‘Hình nh’. Nh th lp ‘V mt hình’ kt hp chc nng
ca ba lp trên thêm vào chc nng đc đnh ngha bên trong nó.
Lp ‘V mt hình’ là mt ví d v tính đa tha k.
Có th s dng tính đa tha k đ xây dng mt lp mi, lp này dn xut chc nng ca
nó t mt vài lp khác. Nh th, xét theo góc cnh ca ngi s dng lp mi này, ch
cn mt lp mà cung cp tt c các chc nng. Nh vy, h không cn phi s dng
nhiu đi tng khác nhau.
S thun li quan trng nht ca tính tha k là nó thúc đy vic tái s dng mã chng
trình.
Trong ví d trên, chúng ta có ba lp ‘ng thng’, ‘ng tròn’ và ‘Hình nh’. Gi
thit rng ba ngi khác nhau xây dng ba lp này riêng bit. Bây gi, ngi s dng cn
xây dng mt lp đ v đng thng, v đng tròn cng nh hin th hình nh. Vì th
h tìm kim xem có lp nào đáp ng mt hoc tt c các yêu cu đó. Nu có nhng lp
cung cp chc nng tha yêu cu thì ngi s dng s tha k nhng lp đó đ to mt
lp mi.
Gi đây ngi s dng ch còn phi vit mã chng trình cho nhng đc tính cha có sau
tin trình tha k. Ngi s dng có th s dng chính ba lp trên. Tuy nhiên, s tha k
cung cp mt bó nhng chc nng hn đn trong mt lp.
1.10 Tính a hình
Trong mt chng trình có cu trúc (a structured program), mt phng thc ch ng
dng cho mt đi tng. Chng hn xét toán t ‘Cng’. Toán t này ch tính tng ca hai
s nguyên. Khi truyn hai giá tr 2 và 3 thì nó hin th 5. Chúng ta không th có mt loi
toán t ‘Cng’ đ tính tng ca hai giá tr vn bn (text) ‘Hello!’ và ‘How are you?’ đ
có đc chui vn bn kt qu ‘Hello! How are you?’
Trong h thng hng đi tng thì tình hung mô t trên là kh th.
=++
Lp ng thng
Khi đim
im tn
V đng thng
Lp ng tròn
Bán kính
Tâm đim
V đng tròn
Lp Hình nh
Hình nh
V hình nh
Lp V mt hình
N
hn hình v
V hình
nh ngha
Tính đa hình cho phép mt phng thc có các tác đng khác nhau trên nhiu loi
đi tng khác nhau.
Vi tính đa hình, nu cùng mt phng thc ng dng cho các đi tng thuc các lp
khác nhau thì nó đa đn nhng kt qu khác nhau. Bn cht ca s vic chính là phng
thc này bao gm cùng mt s lng các tham s.
Tính đa hình là mt trong nhng đc tính quan trng nht ca h thng hng đi tng.
Mt ví d khác là phng thc hin th. Tùy thuc vào đi tng tác đng, phng thc
y có th hin th mt chui, hoc v mt đng thng, hoc hin th mt hình nh. Hãy
kho sát hình sau:
Hình trên cho thy rng ‘V’ là mt phng thc đc chia s gia các lp con ca lp
‘Hình th’. Tuy nhiên, phng thc V đc ng dng cho hình hp s khác vi hình
êlip.
Tính đa hình h tr tính đóng gói.
Xét trên mc đ ngi s dng, h ch cn mt phng thc ‘V’ ca lp ‘Hình th’.
Còn cách thc mà phng thc ‘V’ đc thc thi cho các trng hp khác nhau thì h
không cn bit.
1.11 Nhng thun li ca Phng pháp hng i tng
Lp trình hng đi tng đòi hi mt s chuyn hng quan trng trong t duy ca các
lp trình viên. Phng pháp này làm cho tc đ phát trin các chng trình mi nhanh
hn, và nu đc s dng cách đúng đn phng pháp này s ci tin vic duy trì, vic
tái s dng và vic đánh giá phn mm.
Nhng đim thun li ca phng pháp hng đi tng là:
Phng pháp này tin hành tin trình phân tích, thit k và phát trin mt vn đ
trong khuôn kh nhng khái nim và thut ng thuc lãnh vc ng dng. Vì th,
có mt s tng hp cao nht gia vic phát trin ng dng và vn đ thc t.
Lp: Hình th
Các phng thc:
V
Di chuyn
Khi to
Các lp con
Hình 1.5: Lp ‘Hình th’ và các lp con
Chng hn nh trong trng hp bán xe hi, mi giai đon ca vic phân tích,
thit k và phát trin ng dng, luôn luôn có ting nói ca khách hàng, ca nhân
viên bán hàng …
Phng pháp này h tr vic chia s bên trong mt ng dng.
Phng pháp này h tr vic tái s dng các đi tng khi các ng dng mi
đc phát trin. ây là s thun li rt quan trng xét trong khía cnh gim thiu
chi phí có ý ngha lâu dài.
Chng hn nh hành vi ca khách hàng mt khi đc mô hình hóa trong mt ng
dng thì có th đc s dng li cho nhng ng dng liên h có bao gm mô hình
khách hàng.
Phng pháp này gim thiu các li và nhng vn đ liên quan đn vic bo trì
ng dng do kh nng tái s dng các đi tng.
Phng pháp này tng tc tin trình thit k và phát trin, mt ln na đây là kt
qu ca vic tái s dng các đi tng.
Tóm tt bài hc
Lp trình hng i tng là mt cách t duy mi đ gii quyt vn đ vi máy
vi tính. Thay vì n lc đa vn đ vào trong khuôn kh quen thuc vi máy vi
tính, phng pháp hng đi tng tìm kim mt gii pháp toàn vn cho mt vn
đ.
S tru tng hóa d liu là tin trình xác đnh và nhóm các thuc tính và các
phng thc liên quan đn mt thc th đc thù, trong tng quan vi mt ng
dng.
Mt lp đnh ngha mt thc th theo nhng thuc tính và nhng phng thc
chung.
Mt đi tng là mt trng hp ca mt lp.
Mt lp đnh ngha mt thc th, còn đi tng là thc th hin thc.
Tin trình hin thc hóa mt đi tng đc gi là Thit lp (Construction).
Tin trình hy b mt đi tng đc gi là Hy (Destruction).
Tính bn vng là kh nng lu tr d liu ca mt đi tng vt quá thi gian
tn ti ca đi tng đó.
Vic đóng gói là tin trình che giu vic thc thi chi tit ca mt đi tng đi
vi ngi s dng đi tng y.
Tính tha k là c ch cho phép mt lp chis s các thuc tính và các phng
thc đc đnh ngha trong mt hoc nhiu lp khác.
Tính đa hình là mt thuc tính cho phép mt phng thc có các tác đng khác
nhau trên nhiu đi tng khác nhau.
Phng pháp hng đi tng đa ra tin trình phân tích, thit k và phát trin
ng dng trong khuôn kh các khái nim và các thut ng thuc lãnh vc ng
dng.
Kim tra s tin b
1. S tru tng hóa d liu đng ngha vi s che giu d liu. úng/Sai
2. nh ngha s Tru tng hóa d liu.
3. Vic đóng gói d liu che giu nhng chi tit thc thi đi vi nhng đi tng
khác. úng/Sai
4. Tính đa hình cho phép chúng ta to nhng đi tng khác vi cùng mt tên.
úng/Sai
5. Mi mt đi tng có mt _____________ và ____________ đc xác đnh rõ.
6. Tt c các đi tng ca mt lp đu có cùng mt tp hp các thuc tính.
úng/Sai
7. Mt đi tng đnh ngha mt thc th, trong khi mt lp là thc th c th.
úng/Sai
8. nh ngha tính a hình.
Bài tp
1. Thit k các thành phn và các hành đng khi mt khách hàng thc hin mt giao
dch ATM (Automatic Teller Machine).
2. Lit kê nhng thuc tính và nhng phng thc cn có đ v mt hình đa giác.