1
P TRÌNH HNG I TNG
PGS.TS. Trn ình Qu
KS. Nguyn Mnh Hùng
Các khái nim c bn ca Lp trình hng đi tng
Lp trình hng đi tng vi Java
2
GII THIU
Trong nhng nm gn đây, lp trình hng đi tng đã tr nên gn gi nh s ra đi liên tip
ca các ngôn ng lp trình hng đi tng. Sc mnh ca phng pháp lp trình hng đi
tng th hin ch kh nng mô hình hoá h thng da trên các đi tng thc t, kh nng
đóng gói và bo v an toàn d
liu, kh nng s dng li mã ngun đ tit kim chi phí và tài
nguyên; đc bit là kh nng chia s mã ngun trong cng đng lp trình viên chuyên nghip.
Nhng đim mnh này ha hn s thúc đy phát trin mt môi trng lp trình tiên tin cùng vi
nn công nghip lp ráp phn mm vi các th vin thành phn có sn.
Tài liu này nhm gii thiu cho các sinh viên m
t cái nhìn tng quan v phng pháp lp trình
hng đi tng cùng cung cp nhng kin thc, các k thut c bn cho phát trin các ng dng
ca mình da trên ngôn ng lp trình Java - mt trong nhng ngôn ng lp trình hng đi tng
thông dng nht hin nay.
Ni dung ca tài liu này bao gm hai phn chính:
• Phn th nht trình bày nhng khái nim và các vn đ c bn c
a lp trình hng đi
tng bao gm tng quan v cách tip cn hng đi tng và các khái nim đi tng,
lp, k tha, đóng gói, đa hình…
• Phn th hai trình bày chi tit phng pháp lp trình hng đi tng vi ngôn ng lp
trình Java.
Ni dung ca tài liu bao gm 6 chng:
Chng 1: Tng quan v cách tip cn hng đi tng. Trình bày s ti
n hoá ca cách tip
cn t lp trình truyn thng đn cách tip cn ca lp trình hng đi tng và xu
hng phát trin ca lp trình hng đi tng hin nay.
Chng 2: Nhng khái nim c bn ca lp trình hng đi tng. Trình bày các khái nim
c bn nh: đi tng, lp đi tng vi các thuc tính và phng thc, tính k th
a
và đa hình, tính đóng gói ca lp trình hng đi tng. Chng này cng gii thiu
tng quan mt s ngôn ng lp trình hng đi tng thông dng hin nay.
Chng 3: Ngôn ng Java. Gii thiu nhng khái nim và nhng quy c ban đu ca ngôn ng
lp trình Java: Cu trúc chng trình, cách biên dch, cách đt tên bin, kiu d liu,
các toán t và cu trúc lnh ca ngôn ng Java.
Ch
ng 4: K tha và đa hình trên Java. Trình bày các k thut lp trình hng đi tng da
trên ngôn ng Java: Khai báo lp, các thuc tính và phng thc ca lp; k thut
tha k, các lp tru tng, cài đt np chng và đa hình trên Java.
Chng 5: Biu din và cài đt các cu trúc d liu tru tng trên Java. Trình bày k thut
cài đt và s dng mt s cu trúc d li
u quen thuc trong Java: ngn xp, hàng đi,
danh sách liên kt, cây nh phân và đ th.
Chng 6: Lp trình giao din trên Java. Trình bày các k thut lp trình giao din trên Java:
Lp trình vi các giao din c bn trong th vin AWT, lp trình giao din vi Applet
và HTML, lp trình giao din nâng cao vi th vin SWING.
Tài liu này đc vit nhm phc v môn hc “Lp trình hng đi tng” ging dy tip theo
sau môn hc Ngôn ng
lp trình C++ và nh vy khi hc môn hc này sinh viên s d nm bt
đc nhng đc trng khác bit ca ngôn ng Java so vi C++.
3
Cun sách này còn có kèm theo mt đa CD cha toàn b mã các chng trình cài đt làm ví d
và bài tp trong cun sách.
Mc dù các tác gi đã có nhiu c gng trong quá trình biên son tài liu này, song không th
tránh khi nhng thiu sót. Rt mong nhn đc s đóng góp ý kin ca sinh viên và các bn
đng nghip.
4
PHN 1
NHNG KHÁI NIM C BN
CA LP TRÌNH HNG I TNG
5
CHNG 1
TNG QUAN V CÁCH TIP CN
HNG I TNG
Ni dung chng này nhm gii thiu mt cách tng quan v cách tip cn hng đi tng. Ni
dung trình bày bao gm:
• Gii thiu v cách tip cn ca lp trình truyn thng.
• Gii thiu cách tip cn ca lp trình hng đi tng.
• So sánh s khác bit gia hai cách tip cn này.
• Xu hng hin nay ca lp trình hng
đi tng
1.1 PHNG PHÁP TIP CN CA LP TRÌNH TRUYN THNG
Lp trình truyn thng đã tri qua hai giai đon:
• Giai đon s khai, khi khái nim lp trình mi ra đi, là lp trình tuyn tính.
• Giai đon tip theo, là lp trình hng cu trúc.
1.1.1 Lp trình tuyn tính
c trng c bn ca lp trình tuyn tính là t duy theo li tun t. Chng trình s đc thc
hin tun t t đu đn cui, lnh này k tip lnh kia cho đn khi kt thúc chng trình.
c trng
Lp trình tuyn tính có hai đc trng:
• n gin: chng trình đc tin hành đn gin theo li tun t, không phc tp.
• n lung: ch có mt lung công vic duy nht, và các công vic đc thc hin tun t
trong lung đó.
Tính cht
• u đim: Do tính đn gin, lp trình tuyn tính có u đim là chng trình đn gin, d
hiu. Lp trình tuyn tính đc ng dng cho các chng trình đn gin.
• Nhc đim: Vi các ng dng phc tp, ngi ta không th dùng lp trình tuyn tính đ
gii quyt.
Ngày nay, lp trình tuyn tính ch tn ti trong phm vi các modul nh nh
t ca các phng pháp
lp trình khác. Ví d trong mt chng trình con ca lp trình cu trúc, các lnh cng đc thc
hin theo tun t t đu đn cui chng trình con.
1.1.2 Lp trình cu trúc
Trong lp trình hng cu trúc, chng trình chính đc chia nh thành các chng trình con và
mi chng trình con thc hin mt công vic xác đnh. Chng trình chính s gi đn chng
trình con theo mt gii thut, hoc mt cu trúc đc xác đnh trong chng trình chính.
6
Các ngôn ng lp trình cu trúc ph bin là Pascal, C và C++. Riêng C++ ngoài vic có đc trng
ca lp trình cu trúc do k tha t C, còn có đc trng ca lp trình hng đi tng. Cho nên
C++ còn đc gi là ngôn ng lp trình na cu trúc, na hng đi tng.
c trng
c trng c bn nht ca lp trình cu trúc th hin mi quan h:
Chng trình = Cu trúc d liu + Gii thut
Trong đó:
• Cu trúc d liu là cách t chc d liu, cách mô t bài toán di dng ngôn ng lp
trình
• Gii thut là mt quy trình đ thc hin mt công vic xác đnh
Trong chng trình, gii thut có quan h
ph thuc vào cu trúc d liu:
• Mt cu trúc d liu ch phù hp vi mt s hn ch các gii thut.
• Nu thay đi cu trúc d liu thì phi thay đi gii thut cho phù hp.
• Mt gii thut thng phi đi kèm vi mt cu trúc d liu nht đnh.
Tính cht
• Mi chng trình con có th đc gi thc hin nhiu ln trong mt chng trình chính.
• Các chng trình con có th đc gi đn đ thc hin theo mt th t bt kì, tu thuc
vào gii thut trong chng trình chính mà không ph thuc vào th t khai báo ca các
chng trình con.
• Các ngôn ng lp trình cu trúc cung cp mt s cu trúc lnh điu khin ch
ng trình.
u đim
• Chng trình sáng sa, d hiu, d theo dõi.
• T duy gii thut rõ ràng.
Nhc đim
• Lp trình cu trúc không h tr vic s dng li mã ngun: Gii thut luôn ph thuc cht
ch vào cu trúc d liu, do đó, khi thay đi cu trúc d liu, phi thay đi gii thut,
ngha là phi vit li chng trình.
• Không phù hp vi các phn mm ln: t duy cu trúc vi các gii thut ch phù hp vi
các bài toán nh, n
m trong phm vi mt modul ca chng trình. Vi d án phn mm
ln, lp trình cu trúc t ra không hiu qu trong vic gii quyt mi quan h v mô gia
các modul ca phn mm.
Vn đ
Vn đ c bn ca lp trình cu trúc là bng cách nào đ phân chia chng trình chính thành các
chng trình con cho phù hp vi yêu cu, chc nng và mc đích ca mi bài toán.
Thông thng, đ phân rã bài toán trong lp trình cu trúc, ngi ta s dng phng pháp thit k
trên xung (top-down).
7
Phng pháp thit k trên xung (top-down)
Phng pháp thit k top-down tip cn bài toán theo hng t trên xung di, t tng quan đn
chi tit. Theo đó, mt bài toán đc chia thành các bài toán con nh hn. Mi bài toán con li
đc chia nh tip, nu có th, thành các bài toán con nh hn na.
Quá trình này còn đc gi là quá trình làm mn dn. Quá trình làm mn dn s dng li khi các
bài toán con không cn chia nh thêm na. Ngha là khi mi bài toán con đu có th gii quyt
bng mt ch
ng trình con vi mt gii thut đn gin.
Ví d, s dng phng pháp top-down đ gii quyt bài toán là xây mt cn nhà mi. Khi đó, ta
có th phân rã bài toán theo các bc nh sau:
• mc th nht, chia bài toán xây nhà thành các bài toán nh hn nh: làm móng, đ ct,
đ trn, xây tng, lp mái.
• mc th hai, phân rã các công vic mc th nht: vic làm móng nhà có th phân rã
tip thành các công vic: đào móng, gia c
nn, làm khung st, đ bê tông. Công vic đ
ct đc phn rã thành …
• mc th ba, phân rã các công vic ca mc th hai: vic đào móng có th phân chia tip
thành các công vic: đo đc, cm mc, chng dây, đào và kim tra móng. Vic gia c nn
đc phân rã thành …
Quá trình phân rã có th dng mc này, bi vì các công vic con thu đc là: đo đc, cm mc,
chng dây, đào… có th thc hi
n đc ngay, không cn chia nh thêm na.
Lu ý:
• Cùng s dng phng pháp top-down vi cùng mt bài toán, nhng có th cho ra nhiu
kt qu khác nhau. Nguyên nhân là do s khác nhau trong tiêu chí đ phân rã mt bài toán
thành các bài toán con.
Ví d, vn áp dng phng pháp top-down đ gii quyt bài toán xây nhà, nhng nu s dng
mt cách khác đ phân chia bài toán, ta có th thu đc kt qu khác bit so vi phng pháp ban
đu:
• mc th nht, chia bài toán xây nhà thành các bài toán nh h
n nh: làm phn g, làm
phn st, làm phn bê tông và làm phn gch.
• mc th hai, phân rã các công vic mc th nht: vic làm g có th chia thành các
công vic nh: x g, gia công g, to khung, lp vào nhà. Vic làm st có th chia nh
thành…
Rõ ràng, vi cách làm mn th này, ta s thu đc mt kt qu khác hn vi cách thc đã thc
hin phn trên.
1.2 PHNG PHÁP TIP CN HNG I TNG
1.2.1 Phng pháp lp trình hng đi tng
Xut phát t hai hn ch chính ca phng pháp lp trình cu trúc:
• Không qun lí đc s thay đi d liu khi có nhiu chng trình cùng thay đi mt bin
chung. Vn đ này đc bit nghiêm trng khi các ng dng ngày càng ln, ngi ta không
th kim soát đc s truy nhp đn các bin d liu chung.
8
• Không tit kim đc tài nguyên con ngi: Gii thut gn lin vi cu trúc d liu, nu
thay đi cu trúc d liu, s phi thay đi gii thut, và do đó, phi vit li mã chng
trình t đu.
khc phc đc hai hn ch này khi gii quyt các bài toán ln, ngi ta xây dng mt
phng pháp tip cn mi, là phng pháp lp trình h
ng đi tng, vi hai mc đích chính:
• óng gói d liu đ hn ch s truy nhp t do vào d liu, không qun lí đc.
• Cho phép s dng li mã ngun, hn ch vic phi vit li mã t đu cho các chng trình.
Vic đóng gói d liu đc thc hin theo phng pháp tru tng hoá đi tng thành lp t
thp lên cao nh
sau:
• Thu thp các thuc tính ca mi đi tng, gn các thuc tính vào đi tng tng ng.
• Nhóm các đi tng có các thuc tính tng t nhau thành nhóm, loi b bt các thuc
tính cá bit, ch gi li các thuc tính chung nht. ây đc gi là quá trình tru tng hoá
đi tng thành lp.
• óng gói d liu ca các đi tng vào lp tng ng. Mi thu
c tính ca đi tng tr
thành mt thuc tính ca lp tng ng.
• Vic truy nhp d liu đc thc hin thông qua các phng thc đc trang b cho lp.
Không đc truy nhp t do trc tip đn d liu.
• Khi có thay đi trong d liu ca đi tng, ta ch cn thay đi các phng thc truy nhp
thuc tính ca lp, mà không c
n phi thay đi mã ngun ca các chng trình s dng
lp tng ng.
Vic cho phép s dng li mã ngun đc thc hin thông qua c ch k tha trong lp trình
hng đi tng. Theo đó:
• Các lp có th đc k tha nhau đ tn dng các thuc tính, các phng thc ca nhau.
• Trong lp dn xut (lp đc k th
a) có th s dng li các phng thc ca lp c s
(lp b lp khác k tha) mà không cn thit phi cài đt li mã ngun.
• Ngay c khi lp dn xut đnh ngha li các phng thc cho mình, lp c s cng không
b nh hng và không phi sa li bt kì mt đon mã ngun nào.
Ngôn ng l
p trình hng đi tng ph bin hin nay là Java và C++. Tuy nhiên, C++ mc dù
cng có nhng đc trng c bn ca lp trình hng đi tng nhng vn không phi là ngôn ng
lp trình thun hng đi tng. Java tht s là mt ngôn ng lp trình thun hng đi tng.
c trng
Lp trình hng đi tng có hai đc trng c bn:
• óng gói d liu: d liu luôn đc t chc thành các thuc tính ca lp đi tng. Vic
truy nhp đn d liu phi thông qua các phng thc ca đi tng lp.
• S dng li mã ngun: vic s dng li mã ngun đc th hin thông qua c ch
k
tha. C ch này cho phép các lp đi tng có th k tha t các lp đi tng khác. Khi
đó, trong các lp k tha, có th s dng các phng thc (mã ngun) ca các lp b k
tha, mà không cn phi đnh ngha li.
9
u đim
Lp trình hng đi tng có mt s u đim ni bt:
• Không còn nguy c d liu b thay đi t do trong chng trình. Vì d liu đã đc đóng
gói vào các đi tng. Nu mun truy nhp vào d liu phi thông qua các phng thc
cho phép ca đi tng.
• Khi thay đi cu trúc d liu ca mt đi tng, không cn thay đi các
đi mã ngun ca
các đi tng khác, mà ch cn thay đi mt s hàm thành phn ca đi tng b thay đi.
iu này hn ch s nh hng xu ca vic thay đi d liu đn các đi tng khác
trong chng trình.
• Có th s dng li mã ngun, tit kim tài nguyên. Vì nguyên tc k tha cho phép các
lp k tha s d
ng các phng thc đc k tha t lp khác nh nhng phng thc
ca chính nó, mà không cn thit phi đnh ngha li.
• Phù hp vi các d án phn mm ln, phc tp.
1.2.2 Phng pháp phân tích và thit k hng đi tng
Mt vn đ c bn đt ra cho phng pháp hng đi tng là t mt bài toán ban đu, làm sao
đ thu đc mt tp các đi tng, vi các chc nng đc phi hp vi nhau, đáp ng đc yêu
cu ca bài toán đt ra?
Phng pháp phân tích thit k hng đi tng ra đi nhm tr li cho câu hi này. Mc đích là
xây dng mt tp các l
p đi tng tng ng vi mi bài toán, phng pháp này tin hành theo
hai pha chính:
Pha phân tích: Chuyn đi yêu cu bài toán t ngôn ng t nhiên sang ngôn ng mô hình.
Pha thit k: Chuyn đi đc t bài toán di dng ngôn ng mô hình sang mt mô hình c
th có th cài đt đc.
Hai pha phân tích và thit k này bao gm nhiu bc khác nhau:
• Mô t bài toán
• c t yêu cu
• Trích chn đi tng
•
Mô hình hoá lp đi tng
• Thit k tng quan
• Thit k chi tit.
Bc 1: Mô t bài toán
Bài toán ban đu đc phát biu di dng ngôn ng t nhiên, bao gm:
• Mc đích, chc nng chung
• Các yêu cu v thông tin d liu
• Các yêu cu v chc nng thc hin
10
Bc 2: c t yêu cu
Các yêu cu đc hình thc hoá lên mt mc cao hn bng cách s dng ngôn ng kiu kch bn
(scenario) đ mô t. Trong mt kch bn, mi chc nng, mi hot đng đc mô t bng mt
kch bn, bao gm:
• Các tác nhân tham gia vào kch bn.
• Vai trò ca mi tác nhân trong kch bn.
• Th t các hành đng mà mi tác nhân thc hin: khi nào thc hi
n, tác đng vào tác nhân
nào, thông tin nào đc trao đi.
Quá trình trên đc tin hành vi tt c các chc nng yêu cu ca h thng.
Bc 3: Trích chn đi tng
Bc này s tin hành đ xut các đi tng có th có mt trong h thng:
• Da vào các kch bn đc mô t trong bc hai, chn ra các tác nhân có xut hin đ đ
xut thành các đi tng.
• La chn các đi tng bng cách loi b các tác nhân bên ngoài h thng, các tác nhân
trùng lp.
• Cui cùng, ta thu đc tp các đi tng ca h thng.
Bc 4: Mô hình hoá lp đi tng
Bc này tin hành tru tng hoá đi tng thành các lp:
• Thu thp tt c các thuc tính ca mi đi tng va thu thp đc, da vào yêu cu v
thông tin trong yêu cu h thng (t bc 1).
• Thu thp các hành đng mà mi đi tng cn thc hin, da vào các kch bn mà đi
tng tng ng có tham gia (trong bc 2).
• Nhóm các đi tng t
ng t nhau, hoc có nhiu thuc tính gn ging nhau.
• Loi b mt s thuc tính cá bit, riêng t ca mt s đi tng trong nhóm.
• Mô hình mi nhóm đi tng còn li thành lp: Các thuc tính chung ca các đi tng
thành thuc tính ca lp, các hành đng ca các đi tng thành phng thc ca lp.
Kt qu thu đc mt tp các lp đi tng ban
đu ca h thng.
Bc 5: Thit k tng quát
Bc này s tin hành thit k v mô, ngha là thit k mi quan h gia các lp trong h thng:
• Xác đnh s đ tha k, nu có, gia các lp: Nu hai lp có mt s thuc tính chung, thì
tách các thuc tính chung làm thành mt lp c s, và hai lp ban đu đu dn xut t lp
c s đó. Thông thng, lp các tru tng (chung nh
t) s làm lp c s, lp càng c th,
càng chi tit thì làm lp dn xut (lp con, cháu).
• Xác đnh tng tác, nu có, gia các lp: Da vào các kch bn đc mô t trong bc 2,
hai tác nhân có tng tác vi nhau thì hai lp tng ng bc này cng có tng tác vi
nhau.
Kt qu thu đc ca bc này là mt s đ quan h bên ngoài gia các lp trong h thng.
11
Bc 6: Thit k chi tit
Bc này s thc hin thit k mc vi mô, ngha là thit k kin trúc bên trong ca mi lp đi
tng:
• T chc d liu ca lp theo các thuc tính. Qui đnh phm vi truy nhp cho tng thuc
tính.
• Thit k chi tit cách c x ca lp đi tng thông qua các phng thc ca lp: Xác
đnh kiu d liu tr
v, kiu tham s ca phng thc, mô t thut toán chi tit cho tng
phng thc, nu cn.
Kt qu thu đc ca bc này là mt tp các lp vi thit k chi tit kin trúc bên trong.
Sau các bc phân tích thit k hng đi tng t mt yêu cu ca bài toán ban đu, ta thu đc
mt mô hình h thng hng đi tng chi tit:
• Có cái nhìn t
ng quan, v mô v h thng bng mô hình thit k tng quan, ch rõ s lng
các lp đi tng, mi quan h k tha và quan h tng tác gia các lp đi tng trong
h thng.
• Có cái nhìn chi tit, vi mô v h thng bng mô hình thit k chi tit. Mô hình này ch rõ
bên trong mi lp đi tng: các thuc tính, các phng thc vi kiu tr v và ki
u tham
s, thut toán chi tit cho mi phng thc.
Sau pha phân tích và thit k hng đi tng, ta thu đc đc t h thng di dng mô hình các
lp: quan h gia các lp và kin trúc bên trong ca mi lp. ây s là đu vào cho pha tip theo,
pha lp trình hng đi tng, nh chúng ta đã bit.
1.3 SO SÁNH HAI CÁCH TIP CN
Phng pháp tip cn hng đi tng có bn cht hoàn toàn khác vi phng pháp tip cn
truyn thng (phng pháp tip cn hng cu trúc) trên nhiu mt:
• Phng pháp mô hình bài toán khác nhau.
• c trng khác nhau v đóng gói
• u / nhc đim khác nhau.
• Lnh vc ng dng khác nhau.
Khác nhau v phng pháp mô hình
Hai phng pháp này khác nhau hoàn toàn cách tip cn và mô hình bài toán, phng pháp
hng đi tng tin hành theo phng pháp t di lên trên, t thp lên cao, t c th đn tru
tng. Trong khi đó, phng pháp cu trúc tip cn theo phng pháp t trên xung di, t tng
quan đn chi tit:
• Phng pháp hng đi tng bt đu bng nhng đi tng c th, tp hp các thu
c
tính ca tng đi tng. Sau đó, nhóm các đi tng tng t nhau thành nhóm, loi b
các thuc tính quá cá bit, ch gi li các thuc tính chung nht, nhóm thành lp. Cho nên,
quá trình hình thành lp là quá trình đi t thp lên cao, t c th mc thp đn tru
tng hoá mc cao.
12
• Trong khi đó, phng pháp hng cu trúc li đi theo chiu ngc li. Phng pháp này
bt đu t mt bài toán tng quan, mc khái quát cao, chia nh dn và làm mn dn cho
đn khi thu đc mt tp các bài toán con, nh hn, c th hn, chi tit hn.
Khác nhau v đc trng đóng gói
Hai phng pháp tip cn này cng có nhng đc trng hoàn toàn khác nhau:
• Phng pháp hng đi tng có đc trng là d liu đc đóng gói đ hn ch truy nhp
t do trc tip vào d liu. Th hai là cho phép s dng li mã ngun đ tit kim tài
nguyên và công sc lp trình.
• Trong khi đó, đc trng ca phng pháp cu trúc là cu trúc d liu và gii thu
t và mi
quan h ph thuc cht nh ca gii thut vào cu trc d liu.
Khác nhau v u nhc đim
Hai phng pháp này cng có nhng u nhc đim trái ngc nhau:
• Phng pháp hng đi tng có u đim là bo v đc d liu tránh b truy nhp trc
tip t do t bên ngoài, tit kim đc tài nguyên và công sc lp trình do có th dùng li
mã ngun. Tuy nhiên, phng pháp này li khá phc tp, khó theo dõi đc lung d liu
và hn na, gii thut không phi là v
n đ trng tâm ca phng pháp này.
• Trái li, phng pháp hng cu trúc li có u đim là t duy gii thut rõ ràng, d theo
dõi lung d liu, chng trình đn gin và d hiu. Tuy nhiên, không bo v đc an
toàn d liu trong chng trình. Hn na, hn ch ln nht là s ph thuc cht ch ca
gii thut vào cu trúc d li
u, khin cho khi thay đi cu trúc d liu, thng phi thay
đi gii thut, và do đó, phi vit li mã cho chng trình.
Khác nhau v lnh vc áp dng
Do s khác nhau v các đc trng và s khác nhau v u nhc đim, cho nên hai phng pháp
này cng có s khác nhau đáng k trong lnh vc áp dng:
• Phng pháp hng đi tng thng đc áp dng cho các bài toán ln, phc tp, có
nhiu lung d liu khác nhau, không th qun lí đc bng phng pháp cu trúc. Khi
đó, ngi ta dùng phng pháp hng đi tng đ tn dng kh
nng bo v d liu
tránh b truy nhp t do. Hn na, tn dng kh nng dùng li mã ngun ca phng pháp
này đ tit kim tài nguyên và công sc.
• Trong khi đó, phng pháp cu trúc thng phù hp vi các bài toán nh, có lung d liu
rõ ràng, cn phi t duy gii thut rõ ràng và ngi lp trình vn có kh nng t qun lí
đc mi truy nhp
đn các d liu ca chng trình.
1.4 XU HNG PHÁT TRIN CA LP TRÌNH HNG I TNG
Lp trình hng thành phn
Xut phát t lp trình hng đi tng, t duy lp trình hng thành phn (component-oriented
programming) theo ý tng:
• Gii quyt bài toán bng cách xây dng mt tp các thành phn (component) có tính đc
lp tng đi vi nhau. Mi thành phn đm nhim mt phn công vic nht đnh.
13
• Sau đó, ngi ta ghép các thành phn vi nhau đ thu đc mt phn mm tho mãn mt
tp các yêu cu xác đnh.
Vi lp trình hng thành phn, ngi ta có th tin hành lp trình theo phng pháp sau:
• Xây dng mt th vin các thành phn, mi thành phn thc hin mt công vic xác đnh.
• Khi cn phát trin mt phn mm c th, ngi ta ch c
n chn nhng thành phn có sn
trong th vin đ ghép li vi nhau. Ngi lp trình ch phi phát trin thêm các thành
phn mình cn mà cha có trong th vin.
Phng pháp này có nhng u đim rt ln:
• Lp trình viên có th chia s vi nhau nhng thành phn mình đã xây dng cho nhiu
ngi khác dùng chung.
• Khi cn, lp trình viên có th lp ghép các thành phn có sn khác nhau đ to thành các
ch
ng trình có chc nng khác nhau. Tt c ch cn da trên công ngh lp ghép thành
phn, tit kim đc rt nhiu công sc lp trình.
Trong xu hng lp trình hng thành phn, mt s phng pháp lp trình khác đã ny sinh và
đang phát trin mnh m:
• Lp trình hng agent (agent-oriented programming)
• Lp trình hng aspect (aspect-oriented programming)
Lp trình hng agent
Lp trình hng agent có th xem là mt mc tru tng cao hn ca lp trình hng thành phn.
Trong đó, các agent là các thành phn có kh nng hot đng đc lp, t ch đ hoàn thành công
vic ca mình. Hn na, các agent có kh nng ch đng liên lc vi các agent khác đ có th
phi hp, cng tác hay cnh tranh nhau đ hoàn thành nhim v.
Lp trình hng agent có hai đc trng c bn:
• Th nht là kh nng t ch ca mi agent đ hoàn thành nhim v riêng ca nó.
• Th hai là tính t chc xã hi gia các agent, cho phép các agent phi hp, cng tác, cnh
tranh nhau đ hoàn thành nhim v chung ca toàn h thng.
Lp trình hng aspect
Lp trình hng aspect cng là mt xu hng ca lp trình hng thành phn. Theo đó, mi thành
phn có nhim v hoàn thành theo mt lung công vic hoc mt khía cnh ca vn đ. Sau đó,
tng hp các thành phn ca các lung khác nhau, ta thu đc gii pháp cho bài toán ca mình.
Lp trình hng aspect có đc trng c bn:
• Tính đóng gói theo lung công vic, hoc đóng gói theo khía cnh ca vn đ.
• Tính đn điu theo lung, trong mt lung công vic, các nhim v đc thc hin liên
tip nhau, tun t nh trong lp trình tuyn tính.
TNG KT CHNG 1
Ni dung chng 1 đã trình bày các vn đ tng quan liên quan đn phng pháp tip cn hng
đi tng trong lp trình:
• Các phng pháp tip cn truyn thng: lp trình tuyn tính và lp trình cu trúc.
14
• Phng pháp tip cn hng đi tng vi hai đc trng c bn: óng gói d liu và s
dng li mã ngun.
• Lp trình hng đi tng, phng pháp phân tích và thit k h thng hng đi tng.
• So sánh s khác bit ca phng pháp hng đi tng vi các phng pháp truyn thng
trên các khía cnh: Cách tip cn bài toán, đc trng, u nhc đim và lnh vc áp dng
ca mi phng pháp.
• Hin nay, lp trình hng thành phn, lp trình hng agent và lp trình hng aspect tin
hoá t lp trình hng đi tng đang là xu hng phát trin mnh m.
15
CHNG 2
NHNG KHÁI NIM C BN CA
LP TRÌNH HNG I TNG
Ni dung chng này tp trung trình bày các khái nim c bn ca lp trình hng đi tng:
• i tng
• Lp đi tng
• Vic tru tng hoá đi tng theo chc nng
• Tru tng hoá đi tng theo d liu
• K tha
• óng gói
• a hình
• Phng pháp cài đt lp đi tng
•
Gii thiu mt s ngôn ng lp trình hng đi tng thông dng hin nay.
2.1 CÁC KHÁI NIM C BN
2.1.1 i tng
Trong lp trình hng đi tng, tt c các thc th trong h thng đu đc coi là các đi tng
c th. i tng là mt thc th hot đng khi chng trình đang chy.
Ví d:
1. Trong bài toán qun lí buôn bán xe hi ca mt ca hàng kinh doanh, mi chic xe đang
có mt trong ca hàng đc coi là mt đi tng. Chng hn, mt chic xe nhãn hiu
“Ford”, màu tr
ng, giá 5000$ là mt đi tng.
2. Trong bài toán qun lí nhân viên ca mt vn phòng, mi nhân viên trong vn phòng đc
coi là mt đi tng. Chng hn, nhân viên tên là “Vinh”, 25 tui làm phòng hành chính
là mt đi tng.
Mt đi tng là mt thc th đang tn ti trong h thng và đc xác đnh bng ba yu t:
• nh danh đi tng: xác đnh duy nht cho mi đi tng trong h thng, nh
m phân bit
các đi tng vi nhau.
• Trng thái ca đi tng: là s t hp ca các giá tr ca các thuc tính mà đi tng đang
có.
• Hot đng ca đi tng: là các hành đng mà đi tng có kh nng thc hin đc.
Trng thái hin ti ca đi tng qui đnh tính cht đc trng ca đi tng. Ví d, nhân viên
trong ví d trên có trng thái là:
• Tên là Vinh
• Tui là 25
• V trí làm vic là phòng hành chính.
16
Trong khi đó, trng thái ca chic xe trong ca hàng là:
• Nhãn hiu xe là Ford
• Màu sn xe là trng
• Giá bán xe là 5000$
Mi đi tng s thc hin mt s hành đng. Ví d, đi tng xe hi có kh nng thc hin
nhng hành đng sau:
• Khi đng.
• Dng li.
• Chy.
biu din đi tng trong lp trình hng đ
i tng, ngi ta tru tng hoá đi tng đ to
nên khái nim lp đi tng.
2.1.2 Lp đi tng
Trong lp trình hng đi tng, đi tng là mt thc th c th, tn ti trong h thng. Trong
khi đó, lp là mt khái nim tru tng, dùng đ ch mt tp hp các đi tng có mt trong h
thng.
Ví d:
1. Trong bài toán qun lí buôn bán xe hi ca mt ca hàng kinh doanh, mi chic xe đang
có mt trong ca hàng đc coi là mt đi tng. Nh
ng khái nim “Xe hi” là mt lp
đi tng dùng đ ch tt c các loi xe hi ca ca hàng.
2. Trong bài toán qun lí nhân viên ca mt vn phòng, mi nhân viên trong vn phòng đc
coi là mt đi tng. Nhng khái nim “Nhân viên” là mt lp đi tng dùng đ ch
chung chung các nhân viên ca vn phòng.
Lu ý:
• Lp là mt khái nim, mang tính tru tng, dùng đ biu din mt tp các
đi tng.
• i tng là mt th hin c th ca lp, là mt thc th tn ti trong h thng.
Lp đc dùng đ biu din đi tng, cho nên lp cng có thuc tính và phng thc:
• Thuc tính ca lp tng ng vi thuc tính ca các đi tng.
• Phng thc ca lp tng ng v
i các hành đng ca đi tng.
Ví d, lp xe ô tô đc mô t bng các thuc tính và phng thc:
Lp Xe ô tô
Thuc tính:
Nhãn hiu xe
Màu xe
Giá xe
Công sut xe (mã lc)
Phng thc:
Khi đng xe
Chy xe
17
Dng xe
Tt máy
Lu ý:
Mt lp có th có mt trong các kh nng sau:
• Hoc ch có thuc tính, không có phng thc.
• Hoc ch có phng thc, không có thuc tính.
• Hoc có c thuc tính và phng thc, trng hp này là ph bin nht.
• c bit, lp không có thuc tính và phng thc nào là các lp tru tng. Các lp này
không có đi tng tng ng.
Lp và i tng
Lp và đi tng, mc dù có mi liên h tng ng ln nhau, nhng bn cht li khác nhau:
• Lp là s tru tng hoá ca các đi tng. Trong khi đó, đi tng là mt th hin ca
lp.
• i tng là mt thc th c th, có thc, tn ti trong h thng. Trong khi đó, lp là mt
khái nim tru tng, ch
tn ti dng khái nim đ mô t các đc tính chung ca mt s
đ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.
Nói chung, lp là khái nim tn t
i khi phát trin h thng, mang tính khái nim, tru tng.
Trong khi đó, đi tng là mt thc th c th tn ti khi h thng đang hot đng.
2.1.3 Tru tng hoá đi tng theo chc nng
Tru tng hoá đi tng theo chc nng chính là quá trình mô hình hoá phng thc ca lp
da trên các hành đng ca các đi tng. Quá trình này đc tin hành nh sau:
• Tp hp tt c các hành đng có th có ca các đi tng.
• Nhóm các đi tng có các hot đng tng t nhau, loi b bt các hot đng cá bit, to
thành mt nhóm chung.
• Mi nhóm đi tng đ
xut mt lp tng ng.
• Các hành đng chung ca nhóm đi tng s cu thành các phng thc ca lp tng
ng.
Ví d, trong bài toán qun lí ca hàng bán ô tô. Mi ô tô có mt trong ca hàng là mt đi tng.
Mc dù mi chic xe có mt s đc đim khác nhau v nhãn hiu, giá xe, màu sc… nhng có
chung các hành đng ca mt chic xe ô tô là:
• Có th khi đng máy.
•
Có th chy.
• Có th dng li.
• Có th tt máy.
18
Ngoài ra, mt s ít xe có th thc hin mt s hành đng cá bit nh:
• Có th giu đèn pha
• Có th t bt đèn pha
• Có th t đng phát tín hiu báo đng.
Tuy nhiên, không phi xe nào cng thc hin đc các hành đng này. Cho nên ta loi b các
hành đng cá bit ca mt s xe, ch gi li các hành đng chung nht, đ mô hình thành các
phng thc c
a đi tng xe ô tô tng ng vi các hành đng chung nht ca các xe ô tô.
Lp Xe ô tô
Phng thc:
Khi đng xe
Chy xe
Dng xe
Tt máy
2.1.4 Tru tng hoá đi tng theo d liu
Tru tng hoá đi tng theo d liu chính là quá trình mô hình hoá các thuc tính ca lp da
trên các thuc tính ca các đi tng tng ng. Quá trình này đc tin hành nh sau:
• Tp hp tt c các thuc tính có th có ca các đi tng.
• Nhóm các đi tng có các thuc tính tng t nhau, loi b bt các thuc tính cá bit, to
thành mt nhóm chung.
• Mi nhóm đi tng đ xu
t mt lp tng ng.
• Các thuc tính chung ca nhóm đi tng s cu thành các thuc tính tng ng ca lp
đc đ xut.
Ví d, trong bài toán qun lí ca hàng bán ô tô. Mi ô tô có mt trong ca hàng là mt đi tng.
Mc dù mi chic xe có mt s đc đim khác nhau v nhãn hiu, giá xe, màu sc… nhng có
chung các thuc tính ca mt chic xe ô tô là:
• Các xe đu có nhãn hiu.
•
Các xe đu có màu sc
• Các xe đu có giá bán
• Các xe đu có công sut đng c
Ngoài ra, mt s ít xe có th có thêm các thuc tính:
• Có xe có th có dàn nghe nhc
• Có xe có th có màn hình xem ti vi
• Có xe có lp kính chng nng, chng đn…
Tuy nhiên, đây là các thuc tính cá bit ca mt s đi tng xe, nên không đc đ xut thành
thuc tính ca lp ô tô. Do đó, ta mô hình lp ô tô vi các thuc tính chung nht ca các ô tô.
19
Lp Xe ô tô
Thuc tính:
Nhãn hiu xe
Màu xe
Giá xe
Công sut xe (mã lc)
u đim ca vic tru tng hóa
Nhng u đim ca vic tru tng hóa là:
• Tp trung vào vn đ cn quan tâm
• Xác đnh nhng đc tính thit yu và nhng hành đng cn thit
• 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ô t 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.
2.1.5 Khái nim k tha
Xét trng hp bài toán qun lí nhân s và sinh viên ca mt trng đi hc. Khi đó, ta có hai lp
đi tng chính là lp Nhân viên và lp Sinh viên:
Lp Nhân viên
Thuc tính:
Tên
Ngày sinh
Gii tính
Lng
Phng thc:
Nhp/xem tên
Nhp/xem ngày sinh
Nhp/xem gii tính
Nhp/xem lng
Lp Sinh viên
Thuc tính:
Tên
Ngày sinh
Gii tính
Lp
Phng thc:
Nhp/xem tên
Nhp/xem ngày sinh
Nhp/xem gii tính
Nhp/xem lp
Ta nhn thy rng hai lp này có mt s thuc tính và phng thc chung: tên, ngày sinh, gii
tính. Tuy nhiên, không th loi b các thuc tính cá bit đ gp chúng thành mt lp duy nht, vì
các thuc tính lng nhân viên và lp ca sinh viên là cn thit cho vic qun lí. Vn đ ny sinh
nh sau:
• Ta phi vit mã trùng nhau đn hai ln cho các phng thc: nhp/xem tên, nhp/xem
ngày sinh, nhp/xem gii tính. Rõ rang điu này rt tn công s
c.
• Nu khi có s thay đi v kiu d liu, chng hn kiu ngày sinh đc qun lí trong h
thng, ta phi sa li chng trình hai ln.
20
tránh rc ri do các vn đ ny sinh nh vy, lp trình hng đi tng s dng k thut k
tha nhm nhóm các phn ging nhau ca các lp thành mt lp mi, sau đó cho các lp ban đu
k tha li lp đc to ra. Nh vy, mi lp tha k (lp dn xut, lp con) đu có các thuc tính
và phng th
c ca lp b tha k (lp c s, lp cha).
Quay li vi bài toán qun lí trng đi hc, các thuc tính và phng thc chung gia lp Nhân
viên và lp Sinh viên là:
• Tên,
• Ngày sinh,
• Gii tính,
• Nhp/xem tên,
• Nhp/xem ngày sinh
• Nhp/xem gii tính.
Ta tách phn chung này thành mt lp mc tru tng cao hn, lp Ngi. Lp Ngi s làm
l
p cha ca lp Nhân viên và lp Sinh viên. Khi đó, các lp tr thành:
Lp Ngi
Thuc tính:
Tên
Ngày sinh
Gii tính
Phng thc:
Nhp/xem tên
Nhp/xem ngày sinh
Nhp/xem gii tính
Lp Nhân viên k tha t lp Ngi
Thuc tính:
Lng
Phng thc:
Nhp/xem lng
Lp Sinh viên k tha t lp Ngi
Thuc tính:
Lp
Phng thc:
Nhp/xem lp
Nh vy, s k tha trong lp trình hng đi tng:
• Cho phép lp dn xut có th s dng các thuc tính và phng thc ca lp c s tng
t nh s dng các thuc tính và phng thc ca mình.
• Cho phép vic ch cn cài đt phng thc mt lp c s, mà có th s dng đc tt
c các lp dn xut.
• Cho phép tránh s cài đt trùng l
p mã ngun ca chng trình.
• Cho phép ch phi thay đi mt ln khi cn phi thay đi d liu ca các lp.
2.1.6 Khái nim đóng gói
Xét ví d bài toán qun lí nhân viên vn phòng vi lp Nhân viên nh sau:
21
Lp Nhân viên
Thuc tính:
Tên
Ngày sinh
Gii tính
Phòng ban
H s lng
Phng thc:
Tính lng nhân viên
Khi đó, cách tính lng cho nhân viên là khác nhau đi vi mi ngi:
<Tin lng> = <H s lng> * <Lng c bn> * <T l phn trm>
Trong đó, t l phn trm là khác nhau cho mi phòng ban, ví d:
• Phòng k hoch là 105%
• Phòng hành chính là 100%
• Phòng nhân s là 110%
Khi đó, tu vào thuc tính phòng ban khác nhau mà ta phi dùng công thc t l khác nhau đ tính
lng cho mi nhân viên.
Tuy nhiên, cách tính c th này là công vic bên trong ca phng thc tính tin lng ca lp
Nhân viên. Vi mi ng dng, khi to mt đi tng c th ca lp nhân viên, ta ch c
n truyn
các tham s thuc tính cho đi tng, sau đó gi phng thc tính tin lng cho đi tng nhân
viên đó, ta s bit đc tin lng ca nhân viên. Cách gi phng thc tính tin lng là hoàn
toàn ging nhau cho tt c các đi tng nhân viên ca vn phòng.
S ging nhau v cách s dng phng thc cho các đi tng ca cùng mt lp, mc dù bên
trong phng thc có các cách tính toán khác nhau v
i các đi tng khác nhau, đc gi là tính
đóng gói d liu ca lp trình hng đi tng. Nh vy, tính đóng gói d liu ca lp trình
hng đi tng:
• Cho phép che du s cài đt chi tit bên trong ca phng thc. Khi s dng ch cn gi
các phng thc theo mt cách thng nht, mc dù các phng thc có th đc cài đt
khác nhau cho các trng hp khác nhau.
• Cho phép che du d liu bên trong ca đi tng. Khi s dng, ta không bit đc thc
s bên trong đi tng có nhng gì, ta ch thy đc nhng gì đi tng cho phép truy
nhp vào.
• Cho phép hn ch ti đa vic sa li mã chng trình. Khi phi thay đi công thc tính
toán ca mt phng thc, ta ch cn thay đi mã bên trong ca phng thc, mà không
phi thay đi các ch
ng trình gi đn phng thc b thay đi.
2.1.7 Khái nim đa hình
Tr li vi ví d v qun lí trng đi hc, vi hai lp Nhân viên và lp Sinh viên, đu k tha t
lp Ngi. Khi đó, ta thêm vào mi lp mt phng thc show():
• Phng thc show ca lp Ngi s gii thiu tên và tui ca ngi đó.
22
• Phng thc show ca lp Nhân viên s gii thiu nhân viên đó có tin lng là bao nhiêu
• Phng thc show ca lp Sinh viên s gii thiu là sinh viên đó đang hc lp nào.
Lp Ngi
Thuc tính:
Tên
Ngày sinh
Gii tính
Phng thc:
Nhp/xem tên
Nhp/xem ngày sinh
Nhp/xem gii tính
show
Lp Nhân viên k tha t lp Ngi
Thuc tính:
Lng
Phng thc:
Nhp/xem lng
show
Lp Sinh viên k tha t lp Ngi
Thuc tính:
Lp
Phng thc:
Nhp/xem lp
show
Khi đó, nu trong h thng có các đi tng c th tng ng vi ba lp, thì:
• Khi ta gi hàm show t đi tng ca lp Ngi, s nhn đc tên và tui ca ngi đó.
• Khi ta gi phng thc show t đi tng ca lp Nhân viên, s nhn đc s tin lng
ca nhân viên đó.
• Khi ta gi phng th
c show t đi tng ca lp Sinh viên, ta s bit đc lp hc ca
sinh viên đó.
Vic ch cn gi cùng mt phng thc, nhng t các đi tng khác nhau, s cho k qu khác
nhau đc gi là tính đa hình trong lp trình hng đi tng. Nh vy, tính đa hình trong lp
trình hng đi tng:
• Cho phép các lp đc đnh ngha các phng thc trùng nhau: cùng tên, cùng s
lng
và kiu tham s, cùng kiu tr v. Vic đnh ngha phng thc trùng nhau ca các lp k
tha nhau còn đc gi là s np chng phng thc.
• Khi gi các phng thc trùng tên, da vào đi tng đang gi mà chng trình s thc
hin phng thc ca lp tng ng, và do đó, s cho các kt qu khác nhau.
2.2 SO SÁNH LP VÀ CU TRÚC
Trong phn này, chúng ta s tin hành so sánh Class (Lp) và Structure (Cu trúc) trên nhiu khía
cnh khác nhau:
• Mc khái nim
• Mc đích và chc nng
• V u và nhc đim
23
So sánh mc khái nim
mc khái nim, Lp và cu trúc hoàn toàn khác nhau:
• Lp là khái nim ch có trong lp trình hng đi tng; nó đc dùng đ biu din mt
tp các đi tng tng t nhau.
• Trong khi đó, Cu trúc là khái nim ch tn ti trong lp trình cu trúc, không phi là mt
khái nim ca lp trình hng đi tng. Vì trong lp trình hng đi tng, tt c các
thc th
đu đc coi là mt đi tng, ngha là nó phi là mt th hin c th ca mt lp
nào đó. Do đó, trong lp trình hng đi tng, không có khái nim Cu trúc.
So sánh v mc đích và chc nng
V mc đích, Lp và Cu trúc đu có chung mt mc đích ban đu, đó là nhóm mt tp hp các
d liu li vi nhau đ x lí đng b và thng nht: Cu trúc nhóm các d liu hay phi đi kèm
vi nhau li thành mt nhóm cho d x lí. Tng t, Lp là tp hp mt s thuc tính chung ca
đi tng đ x lí.
Tuy nhiên, Lp và C
u trúc cng có mt s khác bit trên khía cnh này:
• Lp ngoài mc đích nhóm các thuc tính d liu ca đi tng, còn nhóm các hot đng
ca đi tng thành các phng thc ca Lp.
• Trong khi đó, mc dù cng có th cung cp các hàm trong Cu trúc, nhng mc đích chính
ca Cu trúc ch là nhóm d liu thành cu trúc cho d x lí.
So sánh v u nhc đim
Vì có cùng mc đích là nhóm các d liu li vi nhau đ x lí, cho nên Lp cà Cu trúc có cùng
u đim là làm chng trình gn gàng, x lí đng b và thng nht.
Tuy nhiên, Lp còn có mt s u đim mà Cu trúc không có:
• Lp có kh nng bo v d liu tránh b truy nhp t do t bên ngoài. Các chng trình
bên ngoài ch có th truy nhp vào d liu ca đi tng thông qua các phng thc do
Lp cung cp, không th t do truy nhp. Trong khi đó, Cu trúc mc du đã nhóm d liu
vi nhau nhng không có kh nng bo v d liu: Các chng trình bên ngoài vn có th
truy nhp t do vào các thành phn ca Cu trúc.
• Lp có kh nng đóng gói đ hn ch ti đa thay đi khi phi sa li mã chng trình. Khi
có s thay đi, ch c
n thay đi mã ca mt phng thc, các chng trình bên ngoài s
dng phng thc đó đu không phi thay đi. Trong khi đó, nu thay đi mt thành phn
ca Cu trúc, ta phi thay đi mã ca tt c các chng trình s dng thành phn đó ca
Cu trúc.
• Lp có th đc k tha bi mt Lp khác, điu này làm tng kh nng s d
ng li mã
ngun ca chng trình. Trong khi đó, Cu trúc hoàn toàn không có c ch k tha, cho
nên nhiu khi phi vit li nhng đon mã ging nhau nhiu ln. iu này va tn công
sc, va không an toàn khi có s thay đi mt trong nhng đon mã ging nhau đó.
24
2.3 THÀNH PHN PRIVATE VÀ PUBLIC CA LP
bo v d liu tránh b truy nhp t do t bên ngoài, lp trình hng đi tng s dng các t
khoá quy đnh phm vi truy nhp các thuc tính và phng thc ca lp. Mt cách tng quát, lp
trình hng đi tng chia ra hai mc truy nhp các thành phn lp:
• Private: Truy nhp trong ni b lp.
• Protected: Thành phn đc bo v, đc hn ch truy nhp nh
thành phn private (s
đc trình bày sau).
• Public: Truy nhp t do t bên ngoài.
Thành phn private
Thành phn private là khu vc dành riêng cho lp, không chia s vi bt kì lp khác t bên ngoài.
Thành phn private ch cho phép truy nhp trong phm vi ni b lp: T phng thc vào các
thuc tính hoc gia các phng thc ca lp vi nhau. Các thành phn private không th truy
nhp t bên ngoài lp, cng nh t đi tng khác.
Trong mt lp, thông thng các thành phn sau s đc đt vào khu vc private ca lp:
• T
t c các thuc tính d liu ca lp. Các thuc tính d liu ca lp đc đt vào vùng
private nhm bo v chúng, tránh s truy nhp t do t bên ngoài.
• Các phng thc trung gian, đc s dng nh các bc tính toán đm cho các phng
thc khác. Các phng thc trung gian đc đt vào vùng private đ thc hin vic đóng
gói trong lp trình hng đi tng: Các đi tng, chng trình bên ngoài không cn, và
không th bit cách tính toán c th bên trong ca lp.
Thành phn public
Thành phn public là khu vc mà Lp có th chia s vi tt c các chng trình và đi tng bên
ngoài. Thành phn public có th đc truy nhp t bên trong ln bên ngoài lp:
• Bên trong lp: t phng thc lp vào các thuc tính d liu ca lp, hoc gia các
phng thc ca lp vi nhau.
• Bên ngoài lp: T chng trình bên ngoài hoc các đi tng khác vào các phng thc
ca lp.
Trong m
t lp, thông thng các thành phn sau s đc đt vào vùng chia s public ca lp:
• Các phng thc đ nhp/xem (set/get) các thuc tính d liu ca lp. Các phng thc
này s cho phép các đi tng bên ngoài truy nhp vào các thuc tính d liu ca lp mt
cách gián tip.
• Các phng thc cung cp chc nng hot đng, cách c x ca đi tng đi vi môi
tr
ng bên ngoài. Các phng thc này th hin chc nng ca các đi tng lp.
2.4 MT S NGÔN NG LP TRÌNH HNG I TNG
Ni dung phn này s trình bày mt s ngôn ng lp trình hng đi tng thông dng hin nay:
• Ngôn ng lp trình C++
• Ngôn ng lp trình ASP.NET và C#.NET
25
• Ngôn ng lp trình Java
2.4.1 C++
C++, ra đi vào gia nhng nm 1980, là mt ngôn ng lp trình hng đi tng đc m rng
t ngôn ng lp trình cu trúc C. Cho nên, C++ là ngôn ng lp trình na hng đi tng, na
hng cu trúc.
Nhng đc trng hng đi tng ca C++
• Cho phép đnh ngha lp đi tng.
• Cho phép đóng gói d liu vào các lp đi tng. Cho phép đnh ngha phm vi truy nhp
d liu ca lp bng các t khoá phm vi.
• Cho phép k tha lp vi các kiu k tha khác nhau tu vào t khoá dn xut.
• Cho phép lp k tha s dng các phng thc ca lp b k th
a (trong phm vi quy
đnh).
• Cho phép đnh ngha chng phng thc trong lp k tha.
Nhng vi phm hng đi tng ca C++
Nhng vi phm này là do kt qu k tha t ngôn ng C, mt ngôn ng lp trình thun cu trúc.
• Cho phép đnh ngha và s dng các bin d liu t do.
• Cho phép đnh ngha và s dng các hàm t do.
• Ngay c khi d liu đc đóng gói vào lp, d liu vn có th truy nhp trc tip nh d
liu t do bi các hàm bn, l
p bn (friend) trong C++.
2.4.2 ASP.NET và C#.NET
Các ngôn ng lp trình .NET (còn đc gi là .NET Frameworks) ca MicroSoft ra đi vào cui
nhng nm 1990 đ cnh tranh vi ngôn ng lp trình Java. .NET là mt ngôn ng hoàn toàn
hng đi tng, hn na, nó còn cung cp mt giao din lp trình đ ho thân thin và đp mt
vi truyn thng lp trình kéo th ca MicroSoft.
Mt s đc đim ca ngôn ng .NET:
• Là mt ngôn ng hoàn toàn hng đ
i tng: Tt c các thành phn, các thc th trong
chng trình đu đc mô hình di dng mt lp nht đnh. Không có d liu t do và
hàm t do trong chng trình.
• Cung cp giao din lp trình đ ho: lp trình viên ch cn kéo và th các đi tng đ ho
cho ng dng ca mình.
• Cho phép lp trình viên t to ra các th vin UserControl ca mình. ây là mt th vi
n
bao gm các thành phn đc ngi dùng t thit k giao din, vit mã ngun, đóng gói
và có th s dng li trong nhiu ng dng khác nhau, tu theo chc nng ca các thành
phn.