You are on page 1of 303
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- 2005 LOI 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 tinh hué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 gid CHUONG 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 gan Chuong |, 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. ke 8 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 va Chuong |. 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, mot 10 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.

You might also like