DOAN VAN BAN
LAP TRINH HUONG DOI TUONG
VOI JAVA
(Tai ban lan thé nhét: ¢é hiéu chinh va bé sung)
NHA XUAT BAN KHOA HOC VA KY THUAT
HA NOI- 2005LOI NO! DAU
Cae phuong phip hudng déi tugng, dae bi¢t la lép trink huéng déi tégng duge xy
dyng dua trén nhiéu khai nim méi va duge hé trg béi nhiéu céng cy, ngdn ngt lap
trinh (J, [8]) rat manh gitip cho viée tao ra nhiing phin mém tng dung cd chat
lugng cao, ngay cang dap ting tot hon yéu cdu eda ngudi sti dung.
Ngén new Java do gang Sun (httpyfiava.sun.com) phat trién tii dau nhing nam 90
da tro thank ngén ngi 1§p trink hudng déi tuong rat duge va chudng trong nhitng
nim gn diy nhd mét sd dae diém hét stte thich hgp véi mang Internet, hién da va
dang duge ding phé bién trén toan thé gidi nhiim dap Gng cdc yeu cau phat trién cae
tng dung trén mang phue vy cho nhiéu nguéi sii dung véi nhiing mdi truéng the
hién phn mém khac nhau, Java la mét ngén ngit lap trink hoin chink duce thiél ke
theo cich tiép edn huéng d6i tugng va k¢ this, sti dung lai cd nding edlp ela nhing
ngdn ngi lap trinh trude n6.
Vé mat cu phap, Java rift gidng véi C%, mot ngin ngii lap winh hudng adi tugng
ding phé bign mhat hign nay, nhung logi di mét so tinh kha dang (frcilities) qua
manh nhung khé va it dang, hode thita vé mat ngén ngit [1] nhut: logi bé ké thita
nhiéu lép, vi chting cé thé tao ra nhtng luge dé dai ligu dang a6 thi va la nguyén
nhan chink 6 thé gay ra sit phtte tap va khéng dm bdo tinh nhat quan, tink dung
dn trong quan hé théng tin ((10), [11); Java khéng cho phép thao tie sO hoe trén
kiéu con trd vi day 1A ngudn gée cita nhitng “con bo” rt khé phat hidn ra khi bién
dich, v.v... Myc dich chinh cba Java Ik: don gidn, than thién, hiding dét neong va
cach tan nhdm tao ra nhiing phn mém ting dung de lap edi moi trudng svt dung
(7), (8).
Cuén sach nay gidi thiéu vé lap trinh huéng déi tueng su dung agin ngit lap trinh
Java, Néi dung chinh cita cudn sich duge trinh bay trong mudi chudng.
Chuong I rink bay khéi quat each tiép can hudng chéie nang vi Hip tink huéng doi
tugng. Ngén ngit mé hinh héa hé thong UML [2] duge sit dung dé x
nigm cd ban eta lap trinh hudng déi tugng. Chung II gidi thigu chu trinh phat trién
caa cie chvsng tinh Java. qua tinh dich, théng dich véi JVM (Java Virtual
Machine) va cae thé loai chuong trinh ung dung, nhét la Gag dung nlving (applet)
cia Java. Chidng IIT va chuong IV trink bay nhitng khai migm co sd nhat eta mot
ngén ngif lap trinh va néu cfch xay dung, t6 chute ldp cdc déi Lung trong cde chutong
tink ting dung. Cac lénh diéu khién ding thue hién ehyong trinh, die bigt la ed ché
it ly ngoai 16 hé tr¢ dé tao ra nhiing chong trinh hoat dong tot trong moi tinh
hhudhe, thich ting duge véi moi didu kin trén cd sd kiém sodt duge ede 16i, cae tinhhuéng c6 thé xdy ra, dude gidi thigu chi tst 6 chudng V. Chugng V1 dé chp dén mot
36 lép co 83 nhit cla Java va cdc Kiéu effu trae dit ligu phé dung nu kiéu tuyén tap
(Collection), kiéu. tap hop (Sob), kida danh sch (List), v.v, Vain d6 phét trién nhitng
ing dyng applet va si dung giao dign dé hoa eta Windows (AWT) dudi dang cae
trang Web véi nhiu vi dy mink ha duge gidi thigu 4 chong VIL. Chutong VIL gidi
thiéu ede lp xit ly ede ludng dit ligu vao/ra chudn vi nhGng vin dé c6 té chite, doe,
ghi lén cfc loai tép di ligu. Chuong 1X trinh bay van dé ket néi ede co si dit ligu voi
JDBC nh&m tyo ra nhiing hé théng phdn mém tich hgp tix mhiéu loai hé théng théng
in Khde hau trén mang, Lan tai ban nay duge b8 sung thém chudng X sii thigu
ese thanh phén cha Swing, cho phép tgo ra nhéing phan mém ma ben “thay va cam
han duge”, Trong cae chudng ¢6 nbiéu vi du 1 ning ehutng trink hoan ehinh,
minh hoa cho cach sit dung nhting khai nigm d3 néu 6 trén.
Cudn sich due bién soan dya trén kinh nghiém gidng day giao trinh phan tich,
thiét ké va lap trinh huéng déi tung ela tac gid trong nhiéu nam tai cic khoa
cao hoc, dai hoc eta DH Quée Gia Ha Noi, DH Bach Khoa Ha N@i, DH Khoa Hoe
Hud, v.v. Cudn sdeh 06 thé ding lam giao trinh hoe tip, tai eu tham khdo cho einh
vyibn ode bé Ky su, cit nhan, hoc vin cao hoe CNTT va vée ban quan tm dn van dé
lap trinh huéng ddi tung 4é phat trién nhitng tng dung dgc 1p véi méi trudng, hay
dé xAy dung cdc Web Site trén mang.
Tae gid bay td long biét an chan thank téi ede ban déng nghiép trong Phong cic HE
chéng phan mém tich hgp, de biét cém on TS. Dang Thanh Phu, Vien Cong nghé
Thong tin, TT KHTN & CNQG, PTS.TS. Dé Dite Gido, Khoa Cong nghé, DH QG HN
da dong vién, g6p § va gid 43 dé hoan chinh ngi dung cuén sch niy. Xin cdm ga
Nha xudit ban Khoa hoc va Ky thuat di ‘é tr¢ va tao didu kien dé cudn sach dude tai
ban.
Mie da rat cd ging nhung tai ligu nay chée chén khéng trank khdi nhdng sai sot.
Chuing toi rét mong nan duige cde ¥ kién dong gop cha ban doc aé 06 chinh ly kip
thoi.
Thu gép § xin giti vé: Nha xudt bén Khoa hoe va Ky thual 70 ‘Trén Hung Dao Ha
Noi
Ha Néi, thdng 5 ndm 2005
Tée gidCHUONG
GIO! THIEU VE LAP TRINH
HUONG DOI TUONG
———— EE
1.1, CAC CACH TIEP CAN TRONG LAP TRINH
Phudng phap lap trinh truyén théng ching ta vin 4p dung dé 1A ép trink 66 céu
tric. Phidng phap lap trinh nay thyc hign theo each tiép cn Audng chite nang dita
chit yu do viée phan tach ede chiée ndng chink cia bai toan thanh nhing chite nang
don gidn hon va thu hign lam mijn dan tir trén xudng (top-down). Theo cach tiép can
hudng chic nang, chung trinh duge xem nbut 1a m§t tap cae ham chite nang, trong
dé dit ligu va céc ham 1a tach rdi nhau. Déi véi nhimg hé thdng 1én, phe hop, db
phite tap cla chudng trinh tang lén, sé phu thudc cua né vao cdc kiéu dit mA no xit ly
cing tang theo. Cac kiéu di ligu duge xu ly trong nhiéu chite nang bén trong chung
trinh ¢6 cau trac, va khi cd su thay déi vé kiéu dif ligu thi cing phai thuc hién thay
déi 4 moi noi ma dif liéu dé dude si dung. Mét nbuge diém nita cia lap trinh hudng
chtte nang 1a khi cé nhidu ngudi tham gia xdy dung chuong trinh, mdi ngudi duge
giao viét mét sd chic nang (ham) riéng biét nhung lai phai sit dung chung dit lig
Khi cé nbu edu can thay déi da ligu s@ anh hudng rat 16n dén cong viée cha nbiéu
nguti, v.v.
Phuong phap lap trinh ma ngay,nay ching ta nghe ndi téi nhiéu dé 1a lép érink
huténg déi tong. Lap trinh huéng déi tugng dua trén nén tang la cae déi tong. Dei
tugng (thue thé) duge xay dung trén co sé gin dit liéu vdi cae phép toan sé thé hién
duce ding cach ma chung ta suy nghi, bao quat vé ching trong thé gidi thye [33, [4].
Chang han, 4 t6 cé banh xe, di chuyén duge va huéng cilia né thay déi duge bang cach
thay adi tay lai, Tuong tu, cay 1A loai thyc vat c6 than gé va la. Cay khdng phai 1a 8
t6 va nhiing gi thuc hién duge véi 6 té sé khéng 1am duge vdi cay.
Lap trinh huéng déi tugng cho phép chung ta két hop nhiing tri thite bao quat vé cae
qua trinh thuc té véi nhiing khai niém triu tugng dude sit dung trong may tinh.
Chuang trinh hay hé théng huéng déi tugng duge xem nhu 1a tap cac lép déi tugng
tuGng tac véi nhau dé thuc hién cdc yéu c&u cha bai toan dat ra.6 Lp trinh huéng déi tugng véi Java
Nhu vay, hin nay chang ta c6 hai céch tiép can co ban dé phat trién cdc hé théng
phan mém: dé 1a each tiép cfm hudng chic nang (Function-Oriented) va hudng déi
tung (Object-Oriented). Ca hai céch tiép edn nay déu ap dung mot nguyén ly chung
dé ma hinh héa hé théng (dé hiéu hé théing) 1A thy hign “chia dé tré’, phan chia bai
toan thanh nhang don vi tuong déi den gian ma co thé dé dang quan ly duge ching
mat cach c6 hidu qua.
Dé hiéu rd va ap dung higu qua nhitng phudng phap lap trinh can lita chon, ching ta
‘a phan bidt nhéing dc tung eo ban nbét, dénh gia nhiing mat manh, mat yéu cha
chting.
1.1.1, LAP TRINH HUGNG CHUC NANG (THU TUG)
Nhting ngon ngii lap trink bac cao truyén théng nhu COBOL, FORTRAN, PASCAL,
C vv... duge goi chung JA ngén ngit lap trinh hung chite ndng. Theo cach tiép can
hwdng chic nang thi hé théng phdn mém duge xem nhu la day eae cing viée
(chite nang) cin thuc hién nu nhap dit ligu, tinh tofin, xt ly, lap bao edo va in an
két qua viv... Mi cong vide dé 86 duge thyc hign bai mot s6 him nat dinh, Nhu vay
trong tam cita edch tiép cain nay la cde ham chite néng. Cu tric cia chutong trink
duce xy dung theo each tiép can huéng chide nang cé dang nhu binh 1.1
‘Chusng trinh ehinh
MAIN
Ce OT
Ham Ham_2 Ham 3
v Y¥ v
Ham_4 Ham_5 Ham_6
sat
Ham_7 Ham_8 Ham_9
Hinh 1.1. Cae trite eda chisong trinh hudng chicc nang.
Lap trinh huéng chite ning (LTHCN) sik dung Ay thudt phan ra ede chile nang (hams
theo céch tiép can top-down dé to ra fu trie phan edp. Chitong trink duce xay
dung theo cach tiép can huéng chit nang thye chat 1A tap cde chicong trink con (cd
thé xem nhw 1a cac ham) ma theo dé may tinh can thuc hién dé hoan thanh nhiing
nhiém vy dit ra cua hé thong.
Khi dat trong tam vio cac ham thi dir ligu, nhiing cai ma cdc ham sit dung dé thyc
hign e6ng vide efia minh lai tré thinb thé yu, Cai gi s@ xdy ra déi wéi da hie va ganChuong |, Gidi thigu vé 1p trinh huéng déi tudng 7
dit Tigu vdi cae ham nhu thé nao? cing nhiéu vain dé khée cén phai gidi quyét khi
ching ta mun xay dung cde phuong phap pha hgp dé phat trign nhing hé théng
phan mém gidi quyét nhimg yéu cAu dat ra cia thuc té. Hon nita, hé thdng luén 1a
mét thé théng nhat, do vay ede ham trong mét chuong trinh phdi cé lién hé, trao déi
duge vdi nhau. Nhu ching ta da biét, cée ham (cde bo phan chit nang) chi co thé
trao déi duge véi nhau thing qua cde tham sé, nghia la phdi sé dung bién chung
(global). Mai ham cé thé cé ving di ligu riéng con goi 18 di? ligu cuc 66 (local). Méi
quan hé gitia di ligu va ham trong chuong trinh hudng chite nang duce mé ta trong
hinh 1.2.
Dit isu chung Dirtigu chung
(Global) (Giobai}
¥ x y |
Ham Ham_2 Ham_3
Dirligu ring Dir leu rleng Dir ligu riang
(Local) (local) (Local)
Hiuh 1.2. Quan hé gitta dit ligu va ham trong LTHCN.
Nhiéu ham cé thé truy nhap, si dung dif lig chung, lam thay dot gid iri cia ching
va vi udy rat khé kiém sodt. Nhat 1a déi véi cde chuong trinh I6n, phitc tap thi van dé
cang tré nén khé khan hon. Khi ching ta mudn thay ddi, bé sung edu tric di liéu
dang chung cho mét s6 ham thi chung ta phai thay déi hdu nhu tat cd cdc ham lién
quan dén dit ligu dé, Nhat 1 déi véi nbing chuong trinh, dy an tin hoc Ién, phite tap
doi boi nhiéu ngudi, nhiéu nhém tham gia thi nhiing thay déi cia nhimg bién du li¢u
chung sé dnh hwdng tdi tat cd nhitng ai 06 lién quan tdi ching.
Mét dae tinh nita cia each tiép can huéng chite nang dé nhan thay 1a tink md (open)
cilia hé théng kém. Tha nbAt, vi dita chink udo chite nding ma trong thie té thi nhiém
vu eda hé théng lai hay thay déi nén khi dé mudn ehe hé théng dap tmg cdc yeu cau
thi phai thay déi lai cau tric cia hé thong, nghia la phai thiét ké, lap trinh lai hé
thong, Thi hai, viée st dung cdc bién dit ligu chung trong chung trinh lam cho cite
nhom chtic nang phy thugc vio nhau vé c&u true dit liu nén cing han ché tinh md
cua hé théng. Trong thie té, ed cau té chite cha moi té chite thudng it thay déi hon 1a
chiie nang, nhiém vu phai thuc hién.
Mat kha, cach tiép can huéng chttc nang lai téch dif liéu khdi chite ndng xt ly nén
van dé che gidu, bao vé théng tin trong hé théng 1A kém, nghia 1A van dé an todn, an
ninh dit ligu Ja vat phic tap.
Ngoai ra cach tiép can hudng chttc nang cang khéng hé try viée si? dung lai va. ke8 Lap trinh huéng déi tugng voi Java
thita nén chat lugng va gia thanh eda cc phdn mém rat khé duge cai thién. Nhiing
tré ngai ma ching ta da néu 4 trén sé lam cho mé hinh duge xy dung theo cach tiép
can hudéng chtic nang khéng mé ta duge day dh, trung thc hé théng trong thuc té
1.1.2. LAP TRINH HUONG BOI TUQNG
Nguge lai, ap trinh huéng déi wtgng (LTHDT) dat trong tam vao ode dot avone, yéu
té quan trong trong qua trink phat trién chutong trinh va n6 khong cho phép dit Hieu
tach biét, chuyén déng tu do trong hé thong. Dit ligu duge gan chat vdi céc ham
thanh phan va chting duge t6 chuc, quan ly truy nhap theo nhiéu mie khac nhau.
LTHDT cho phép chting ta phan tich bai toan thanh (gp ede thc thé duige gui Ta cdc
lop déi tweng, saw d6 xay dung céc dit ligu thanh phin eiing véi cc ham thanh phan
thao tée trén cdc dit ligu dé vA trac déi véi nbing déi tong khéc dé thye hign nhuing
nhiém vu duge giao
Mot chusng trink, mét hé thong duge xem nhu li mét tap cac Isp dat tugng vA ee di
tugng 46 trao déi vdi nhau thong qua viée giti vA nhan ac thong digp (message), do
vay mot chusng trinh hudng déi tugng thye su cé thé hoan toan khéng cin sit dung
bién chung [1], [3].
Lap trinh hudng déi tugng dua chit yéu vao cde déi twang, nén khi 6 nhu cdu thay
di thi chi can thay déi d mat sé 1p cd lién quan, hode c6 thé bd sung mat sé Iép mdi
trén cd sé ké thiva va st dung lai nhiéu nhat cé thé. Mat khac, nhu trén da phan
tich, mot chuong trinh hudng déi tugng cé thé khong sit dung hoac han ché st dung
eae bién chung, do vay dé dang tao ra duge nhiing hé thing c6 tinh m@ cao hon.
Cu ché bao boo, che gidu théng tin cha phuong phap huéng déi tugng gidp tao ra
duge nhing hé thong an todn, an ninh cao hon eéch tiép em hung chic nang.
Hon nita, phuong phap huéng déi tung con hé tro réit manh nguyén ly si dung lai
nhidu nhét c6 thé va tao ra moi kha nang dé ké thita. nhiing lép da due thiét ké, lap
trinh tét dé nhanh chéng tao ra duge nhting phan mém cé chat Iuong, gid thanh ré
han va dap tng cde yéu cdu cha ngudi su dung.
1.2. NHUNG KHAI NIEM CO BAN CUA LAP TRINH HUONG DOI
TUGNG
Dé tién Igi va pha hdp vdi xu thé phat trién hién nay cia céng nghé théng tin, ching
ta 06 eit dung UML (Unified Modelling Language (21, (7) 4¢ dae ta nhimg khai
nigm co ban cia lap trinh huéng di Si tugng théng qua Rational Rose
(httpwww.xationalcom) , UML la ngén ngit m6 hinh hoa hink thite, thong nhat vaChuong |. GiGi thiéu vé lap trinh huéng déi tugng g
trye quan. Phan 1dn cdc thang tin trong mé hinh dude thé hién bai cc ky higu d}
hou, biéu dé thé hién méi quan hé gida cdc thinh phan cia hé théng mot cach thong
nat va 06 logic chat ché.
UML duge sit diang dé déic td, xay dung va lam tai lide cho cée tic phar (Artifacts),
cde két qud cia cia ede pha phén tich, thiét ké vd lép trink hung doi tugng dudi
dang cdc biéu dé, ban mau hay cac trang Web.
UML 18 ngén ngit chudn cong nghiép dé lap ké hogeh chi tiét phat trién phan mém.
Hién nay nhiéu hang sam xuat phan mém lén nhu: Microsoft, IBM, HP, Oracle,
Digital Equipment Corp., Texas Instruments, Rational Software, v.v., sit dung UML
nhu la chudn cho ngén ngit mé hinh héa hé théng phan mém.
Phuong phap hudéng déi tugng duge xay dying dya trén mt tap cac khai nigém co 8d:
Déi tugng (object),
Lép doi tugng (class),
‘Tritu tuong héa di li¢u (Data Abstraction),
Bao boe va che gidu théng tin (Encapsulation and Information Hiding),
M6 rong, ké thita giiia cdc Lép (Inheritance),
Da xa vi nap chéng (Polymorphism and Overloading),
Lién két dng (Dynamic Binding),
wae ge ww
‘Truyén thong digp (Message Passing).
1.2.4. BOI TUGNG
Doi tung 1A khai niém cd 6, quan trong nhét cla cdch tiép can hudng déi tugng.
Doi tugng la thye thé cba hé thong, cia CSDL va duge xdc dinh théng qua dinh danh
ID WDentifier) cha ching. Mai déi tugng 06 tép cde dae trung bao gém ca cc phan
tAi san thudng la ede dif liéu thanh phén hay cae thuéc tinh mé ta cdc tinh chat va
cdc phiténg thitc, cde thao tae trén ede dit lidu dé xdc dinh hanh vi cua déi tugng do.
Déi tugng 1a nhiing thuc thé duge xc dinh trong thiii gian hé théng huéng déi tugng
hoat déng. Nhu vay déi tuang c6 thé biéu dién cho ngudi, vat, hay mgt bang di liéu
hoac bat ky m6t hang thuc nao dé edn xit ly trong chudng trinh, Déi tudng cing cé
thé 1A cdc di iéu dude dinh nghia béi ngudi sit dung (ngudi lap trink) nhtt vector,
danh sach, cae record vv... Nhiém vy caa LTHDT 1a ph4n tich bai toan thanh cée
di tutang vA xde dinh duge ban chat cia sy trao déi thong tin gitta chung. Déi tugng
trong chifong trinh can phai duge chon sao cho né thé hién duge mét cach gan nhat
véi nhting the thé c6 trong hé thing thyc.
Whu vay, doi tugng duge dinh nghia mét cach tritu tugng nhut 14 mot khai nigm, mot10 Lap trinh huéng déi tuong véi Java
cdu tréc yop chung ca phan dét liéu (thug tinh) vdi ce ham (phudng thiic) thao tae
trén nhitug dit liéu dé va cé thé trao déi véi nhig doi tugng khac. Theo quan diém
cia ngubi lap tink [3], déi tang duige xem nhuc la ving b6 nhd due phan chia trong
méy tinh aé btu trif dit liéu vd tap ede ham tec déng trén dit liéu gin vét ching, Bai
vi cate vang phan hoach bé nhé 14 dc lap vi nha nén ede di tugng c6 thé sik dung
bai nhiéu chuong trinh khae nhau mA khong amb hudng lan nhau.
4.2.2. LOP BOI TUGNG
Lép la ban mau hay mét kiéu chung cho t&t c& nhiing déi tung c6 nhiing dée trung
gidng hau, nghia 1A ¢6 eée thuge tinh va hank vi giéng nha, Déi wgng chink 1a thé
hién (cd thé) cia mot J6p xéc dink, Trong lap trink huéng di tuong, Wap duge xem 1A
déng nhat voi kigu dit lieu triu tuigng (ADT - Abstract Data Type duge Barbara dé
xuat vao nhiing nam 70).
Phuong phap lip trink hudng di tang Ta each phan chia chuong trinh think cdc
dun thé (ede lép) bing cach tao ra cae ving bd nbd cho cA dil Liu lin ham va cheng
sé dude sit dung nhut cde mAu dé tgo ra ban sao ting d6i tugng khi ching duoc tao ra
trong hé thong.
Nhigm vy cia ngudi lap trink la tim each xée dink dy di, chink xae danh sch cae
Idp dai dién cho tat ¢ cde thye thé trong hé théng va méi quan hé gitia cde lép adi
tugng d6 (8), [5].
Nhu vay, Iép chinh Ia tap cae déi tung ed cing cde thude tinh va hank vi gidng
nhau. Céc thanh phan ca 1p eé thé chia thanh ba ving quin ly chinh: c6ng Khai
(public), duge bao ve (protected) va ving ridng (private). Trong ngon nett mo hinh
héa théng nhat UML, cé&u tric cua lip thudng dude dae tA béi: tén cba lép, tap cae
thuéc tinh vA tap cée ham.
woPNenane Stang
iname sting
SoeiNamao
‘SgetNamed
‘Shersmasnino
Hinh 1.3. Lop Student trong UML.
Lép 6 tén 1a Student. Lap co ba thuée tinh: StudentNo cd kidu Integer 1A sé hitu
ring (private), bi khéa; thuée tinh FName cé kigu String 1 cng khai (public) va
thuge tinh LName 1a duge bao v8 (protected). Lép Student 6 ba ham :
getStudentNo(), getFName(), getLNeme() déu la cong khai.