Lap Trinh Java Cob and Den Phuc Tap

Embed Size (px)

DESCRIPTION

aa

Citation preview

  • 1

    MC LC Chng 1: GII THIU TNG QUAN V NGN NG LP TRNH JAVA ......................................................................... 7

    1.1. M u ......................................................................... 7 1.2. Gii thiu v ngn ng lp trnh Java............................ 7

    1.2.1. Java l g? .............................................................. 7 1.2.2. Lch s pht trin ca ngn ng lp trnh Java........ 7 1.2.3. Mt s c im ni bc ca ngn ng lp trnh Java........................................................................................ 8

    1.3. Cc ng dng Java ...................................................... 10 1.3.1. Java v ng dng Console .................................... 10 1.3.2. Java v ng dng Applet ...................................... 11 1.3.3. Java v pht trin ng dng Desktop dng AWT v JFC................................................................................ 12 1.3.4. Java v pht trin ng dng Web.......................... 13 1.3.5. Java v pht trin cc ng dng nhng ................. 14

    1.4. Dch v thc thi mt chng trnh vit bng Java........ 14 1.5. Chng trnh Java u tin.......................................... 15

    1.5.1. To chng trnh ngun HelloWordApp .............. 15 1.5.2. Bin dch tp tin ngun HelloWordApp................ 16 1.5.3. Chy chng trnh HelloWordApp....................... 16 1.5.4. Cu trc chng trnh HelloWordApp.................. 17 S dng phng thc/bin ca lp................................ 17

    1.6. Cng c lp trnh v chng trnh dch........................ 17 1.6.1. J2SDK ................................................................. 17 1.6.2. Cng c son tho m ngun Java. ....................... 18

    Chng 2: ............................................................................. 21 HNG, BIN, KIU D LIU, ........................................... 21 TON T, BIU THC V CC....................................... 21 CU TRC IU KHIN TRONG JAVA .......................... 21

    2.1. Bin ............................................................................ 21 2.2. Cc kiu d liu c s ................................................. 23

    2.2.1. Kiu s nguyn .................................................... 24 2.2.2. Kiu du chm ng............................................. 26

  • 2

    2.2.3. Kiu k t (char) .................................................. 26 2.2.4. Kiu lun l (boolean).......................................... 27

    2.3. Hng: .......................................................................... 27 2.4. Lnh, khi lnh trong java........................................... 28 2.5. Ton t v biu thc ................................................... 29

    2.5.1. Ton t s hc...................................................... 29 2.5.2. Ton t trn bit..................................................... 29 2.5.3. Ton t quan h & logic ....................................... 29 2.5.4. Ton t p kiu .................................................... 30 2.5.5. Ton t iu kin ................................................. 30 2.5.6. Th t u tin ...................................................... 30

    2.6. Cu trc iu khin ..................................................... 31 2.6.1. Cu trc iu kin if else ................................. 31 2.6.2. Cu trc switch case ........................................ 32 2.6.3. Cu trc lp.......................................................... 32 2.6.4. Cu trc lnh nhy (jump) .................................... 33

    2.7. Lp bao kiu d liu c s (Wrapper Class)................ 33 2.8. Kiu d liu mng....................................................... 34

    2.8.1. Khi nim mng ................................................... 34 2.8.2. Khai bo mng ..................................................... 34 2.8.3. Cp pht b nh cho mng ................................... 35 2.8.4. Khi to mng...................................................... 35 2.8.5. Truy cp mng ..................................................... 35

    2.9. Mt s v d minh ha: ............................................... 36 Chng 3: HNG I TNG TRONG JAVA............... 47

    3.1. M u ....................................................................... 47 3.2. Lp (Class) ................................................................. 48

    3.2.1. Khi nim ............................................................ 48 3.2.2. Khai bo/nh ngha lp ....................................... 48 3.2.3. To i tng ca lp .......................................... 49 3.2.4. Thuc tnh ca lp ............................................... 49 3.2.5. Hm - Phng thc lp (Method)......................... 50 3.2.6. Khi to mt i tng (Constructor)................... 52 3.2.7. Bin this............................................................... 53

  • 3

    3.2.8. Khai bo chng phng thc (overloading method)...................................................................................... 54

    3.3. c im hng i tng trong java ......................... 54 3.3.1. ng gi (encapsulation) ..................................... 55 3.3.2. Tnh a hnh (polymorphism): .............................. 55 3.3.3. Tnh k tha (inheritance) .................................... 57

    3.4. Gi (packages) ............................................................ 62 3.5. Giao din (interface) ................................................... 63

    3.5.1. Khi nim interface: ............................................. 63 3.5.2. Khai bo interface: ............................................... 64 3.5.3. V d minh ha..................................................... 65

    Chng 4: THIT K GIAO DIN NGI DNG............. 82 4.1. M u ....................................................................... 82 4.2. Gii thiu th vin awt................................................ 83 4.3. Cc khi nim c bn.................................................. 83

    4.3.1. Component........................................................... 83 4.3.2. Container ............................................................. 84 4.3.3. Layout Manager ................................................... 85

    4.4. Thit k GUI cho chng trnh ................................... 86 4.4.1. To khung cha ca s chng trnh .................... 86 4.4.2. To h thng thc n.......................................... 87 4.4.3. Gn Component vo khung cha.......................... 89 4.4.4. Trnh by cc Component trong khung cha ........ 90 4.4.5. Cc i tng khung cha Container.................. 101

    4.5. X l bin c/s kin ................................................ 105 4.5.1. M hnh x l s kin (Event-Handling Model) . 105 4.5.2. X l s kin chut ............................................ 108 4.5.3. X l s kin bn phm ...................................... 111

    4.6. Mt s v d minh ha .............................................. 115 Chng 5: LUNG V TP TIN....................................... 128

    5.1. M u ..................................................................... 128 5.2. Lung (Streams) ....................................................... 129

    5.2.1. Khi nim lung................................................. 129 5.2.2. Lung byte (Byte Streams)................................. 129 5.2.3. Lung k t (Character Streams)........................ 131

  • 4

    5.2.4. Nhng lung c nh ngha trc (The Predefined Streams) ...................................................................... 132

    5.3. S dng lung Byte .................................................. 133 5.3.1. c d liu t Console....................................... 134 5.3.2. Xut d liu ra Console...................................... 135 5.3.3. c v ghi file dng lung Byte ......................... 136 5.3.4. c v ghi d liu nh phn................................ 141

    5.4. File truy cp ngu nhin (Random Access Files) ....... 145 5.5. S dng lung k t.................................................. 147

    5.5.1. Nhp Console dng lung k t ......................... 149 5.5.2. Xut Console dng lung k t .......................... 151 5.5.3. c/ghi File dng lung k t ............................ 152

    5.6. Lp File .................................................................... 155 Chng 6: LP TRNH C S D LIU.......................... 158

    6.1. GII THIU............................................................. 158 6.2. KIN TRC JDBC................................................... 158 6.3. Cc khi nim c bn................................................ 160

    6.3.1. JDBC Driver ...................................................... 160 6.3.2. JDBC URL ........................................................ 162

    6.4. KT NI CSDL VI JDBC ..................................... 163 6.4.1. ng k trnh iu khin .................................... 163 6.4.2. Thc hin kt ni ............................................... 163 6.4.3. V d .................................................................. 164

    6.5. KIU D LIU SQL V KIU D LIU JAVA.... 168 6.6. CC THAO TC C BN TRN CSDL................ 170

    6.6.1. Cc lp c bn ................................................... 170 6.6.2. V d truy vn CSDL ......................................... 171 6.6.3. V d cp nht CSDL ......................................... 174

    Ti liu tham kho:.............................................................. 176 Ph lc A: Trc nghim kin thc........................................ 177 Ph Lc B:p n trc nghim kin thc............................. 205

  • 5

    LI NI U Ngn ng lp trnh java ra i v c cc nh nghin cu ca Cng ty Sun Microsystem gii thiu vo nm 1995. Sau khi ra i khng lu, ngn ng lp trnh ny c s dng rng ri v ph bin i vi cc lp trnh vin chuyn nghip cng nh cc nh pht trin phn mm. Gn y ngn ng lp trnh, cng ngh java c a vo ging dy cc c s o to lp trnh vin chuyn nghip. Mt s trng i hc Vit Nam dy mn lp trnh java nh mt chuyn t chn cho cc sinh vin cng ngh thng tin giai on chuyn ngnh.

    Sau mt thi gian tm hiu, lm vic v c tham gia ging dy chuyn lp trnh java cho lp c nhn tin hc t xa qua mng. Nhm tc gi chng ti quyt nh bin son cun gio trnh ny nhm phc v cng tc ging dy cng nh hc tp ca sinh vin chuyn ngnh cng ngh thng tin.

    Ni dung gio trnh tp trung vo nhng kin thc cn bn nht ca lp trnh java gip ngi c bc u tip cp d dng vi cng ngh mi ny, v y cng chnh l mt bc m chng ta tr thnh java shooter. Mt s vn nng trong ngn ng lp trnh java nh: javabean, thit kt giao din dng th vin JFC(Java Foundation Class), lp trnh mng, lp trnh c s d liu bng java, lp trnh ng dng web dng J2EE (Java 2 Enterprise Edition), s c ni n trong cc chuyn nng cao. Chng 6 ca gio trnh gii thiu tng quan v lp trnh c s d liu dng jdbc, mt ni dung theo chng ti cn phi c trnh by trong mt chuyn ring.

    c th c hiu gio trnh ny ngi c cn nm vng cc kin thc v: nhp mn lp trnh, lp trnh hng i tng. y l ln xxuutt bbnn u tin chc chn khng th trnh khi nhng sai st. Nhm tc gi rt mong nhn c nhng kin ng gp ca qu thy c, cc ng nghip v bn c c

  • 6

    th hon thin hn gio trnh ny phc v cho vic hc tp ca sinh vin. Xin chn thnh cm n! TPHCM thng 01/2006 Nhm tc gi

  • 7

    CChhnngg 11:: GGIIII TTHHIIUU TTNNGG QQUUAANN VV NNGGNN NNGG LLPP TTRRNNHH JJAAVVAA

    11..11..MM uu Chng ny s cung cp cho sinh vin cc khi nim, kin thc c bn lin quan n vic lp trnh ng dng bng ngn ng Java nh: lch s pht trin ca java, cc c im ca java, khi nim my o, cu trc ca mt chng trnh n gin vit bng Java cng nh cch xy dng, dch v thc thi mt chng trnh Java. 11..22..GGiiii tthhiiuu vv nnggnn nngg llpp ttrrnnhh JJaavvaa 11..22..11.. JJaavvaa ll gg??

    Java l ngn ng lp trnh hng i tng (ta C++) do Sun Microsystem a ra vo gia thp nin 90.

    Chng trnh vit bng ngn ng lp trnh java c th chy trn bt k h thng no c ci my o java (Java Virtual Machine). 11..22..22..LLcchh ss pphhtt ttrriinn ccaa nnggnn nngg llpp ttrrnnhh JJaavvaa

    Ngn ng lp trnh Java do James Gosling v cc cng s ca Cng ty Sun Microsystem pht trin.

    u thp nin 90, Sun Microsystem tp hp cc nh nghin cu thnh lp nn nhm t tn l Green Team. Nhm Green Team c trch nhim xy dng cng ngh mi cho ngnh in t tiu dng. gii quyt vn ny nhm nghin cu pht trin xy dng mt ngn ng lp trnh mi t tn l Oak tng t nh C++ nhng loi b mt s tnh nng nguy him ca C++ v c kh nng chy trn nhiu nn phn cng khc nhau. Cng lc world wide web bt u pht trin v Sun thy c tim nng ca ngn ng Oak nn u t ci tin

  • 8

    v pht trin. Sau khng lu ngn ng mi vi tn gi l Java ra i v c gii thiu nm 1995.

    Java l tn gi ca mt hn o Indonexia, y l ni nhm nghin cu pht trin chn t tn cho ngn ng lp trnh Java trong mt chuyn i tham quan v lm vic trn hn o ny. Hn o Java ny l ni rt ni ting vi nhiu khu vn trng cafe, chnh l l do chng ta thng thy biu tng ly caf trong nhiu sn phm phn mm, cng c lp trnh Java ca Sun cng nh mt s hng phn mm khc a ra. 11..22..33..MMtt ss cc iimm nnii bbcc ccaa nnggnn nngg llpp ttrrnnhh JJaavvaa My o Java (JVM - Java Virtual Machine)

    Tt c cc chng trnh mun thc thi c th phi c bin dch ra m my. M my ca tng kin trc CPU ca mi my tnh l khc nhau (tp lnh m my ca CPU Intel, CPU Solarix, CPU Macintosh l khc nhau), v vy trc y mt chng trnh sau khi c bin dch xong ch c th chy c trn mt kin trc CPU c th no . i vi CPU Intel chng ta c th chy cc h iu hnh nh Microsoft Windows, Unix, Linux, OS/2, Chng trnh thc thi c trn Windows c bin dch di dng file c ui .EXE cn trn Linux th c bin dch di dng file c ui .ELF, v vy trc y mt chng trnh chy c trn Windows mun chy c trn h iu hnh khc nh Linux chng hn th phi chnh sa v bin dch li. Ngn ng lp trnh Java ra i, nh vo my o Java m kh khn nu trn c khc phc. Mt chng trnh vit bng ngn ng lp trnh Java s c bin dch ra m ca my o java (m java bytecode). Sau my o Java chu trch nhim chuyn m java bytecode thnh m my tng ng. Sun Microsystem chu trch nhim pht trin cc my o Java chy trn cc h iu hnh trn cc kin trc CPU khc nhau. Thng dch:

  • 9

    Java l mt ngn ng lp trnh va bin dch va thng dch. Chng trnh ngun vit bng ngn ng lp trnh Java c ui *.java u tin c bin dch thnh tp tin c ui *.class v sau s c trnh thng dch thng dch thnh m my. c lp nn:

    Mt chng trnh vit bng ngn ng Java c th chy trn nhiu my tnh c h iu hnh khc nhau (Windows, Unix, Linux, ) min sao c ci t my o java (Java Virtual Machine). Vit mt ln chy mi ni (write once run anywhere). Hng i tng:

    Hng i tng trong Java tng t nh C++ nhng Java l mt ngn ng lp trnh hng i tng hon ton. Tt c mi th cp n trong Java u lin quan n cc i tng c nh ngha trc, thm ch hm chnh ca mt chng trnh vit bng Java ( l hm main) cng phi t bn trong mt lp. Hng i tng trong Java khng c tnh a k tha (multi inheritance) nh trong C++ m thay vo Java a ra khi nim interface h tr tnh a k tha. Vn ny s c bn chi tit trong chng 3. a nhim - a lung (MultiTasking - Multithreading):

    Java h tr lp trnh a nhim, a lung cho php nhiu tin trnh, tiu trnh c th chy song song cng mt thi im v tng tc vi nhau. Kh chuyn (portable):

    Chng trnh ng dng vit bng ngn ng Java ch cn chy c trn my o Java l c th chy c trn bt k my tnh, h iu hnh no c my o Java. Vit mt ln, chy mi ni (Write Once, Run Anywhere). H tr mnh cho vic pht trin ng dng:

  • 10

    Cng ngh Java pht trin mnh m nh vo i gia Sun Microsystem cung cp nhiu cng c, th vin lp trnh phong ph h tr cho vic pht trin nhiu loi hnh ng dng khc nhau c th nh: J2SE (Java 2 Standard Edition) h tr pht trin nhng ng dng n, ng dng client-server; J2EE (Java 2 Enterprise Edition) h tr pht trin cc ng dng thng mi, J2ME (Java 2 Micro Edition) h tr pht trin cc ng dng trn cc thit b di ng, khng dy, 11..33..CCcc nngg ddnngg JJaavvaa 11..33..11..JJaavvaa vv nngg ddnngg CCoonnssoollee ng dng Console l ng dng nhp xut ch vn bn tng t nh mn hnh Console ca h iu hnh MS-DOS. Lai chng trnh ng dng ny thch hp vi nhng ai bc u lm quen vi ngn ng lp trnh java. Cc ng dng kiu Console thng c dng minh ha cc v d c bn lin quan n c php ngn ng, cc thut ton, v cc chng trnh ng dng khng cn thit n giao din ngi dng ha.

    class HelloWorld { public static void main(String[] args)

  • 11

    { System.out.println("\nHello World");

    } } 11..33..22..JJaavvaa vv nngg ddnngg AApppplleett Java Applet l loi ng dng c th nhng v chy trong trang web ca mt trnh duyt web. T khi internet mi ra i, Java Applet cung cp mt kh nng lp trnh mnh m cho cc trang web. Nhng gn y khi cc chng trnh duyt web pht trin vi kh nng lp trnh bng VB Script, Java Script, HTML, DHTML, XML, cng vi s canh tranh khc lit ca Microsoft v Sun lm cho Java Applet lu m. V cho n by gi gn nh cc lp trnh vin u khng cn mn m vi Java Applet na. (trnh duyt IE i km trong phin bn Windows 2000 khng cn mc nhin h tr thc thi mt ng dng Java Applet). Hnh bn di minh ha mt chng trnh java applet thc thi trong mt trang web.

  • 12

    11..33..33..JJaavvaa vv pphhtt ttrriinn nngg ddnngg DDeesskkttoopp ddnngg AAWWTT vv JJFFCC Vic pht trin cc chng trnh ng dng c giao din ngi dng ha trc quan ging nh nhng chng trnh c vit dng ngn ng lp trnh VC++ hay Visual Basic c java gii quyt bng th vin AWT v JFC. JFC l th vin rt phong ph v h tr mnh m hn nhiu so vi AWT. JFC gip cho ngi lp trnh c th to ra mt giao din trc quan ca bt k ng dng no. Lin quan n vic pht trin cc ng dng c giao din ngi dng ha trc quan chng ta s tm hiu chi tit trong chng 4. Minh ha thit k giao din ngi dng s dng JFC

  • 13

    11..33..44..JJaavvaa vv pphhtt ttrriinn nngg ddnngg WWeebb Java h tr mnh m i vi vic pht trin cc ng dng Web thng qua cng ngh J2EE (Java 2 Enterprise Edition). Cng ngh J2EE hon ton c th to ra cc ng dng Web mt cch hiu qu khng thua km cng ngh .NET m Microsft ang qung co. Hin nay c rt nhiu trang Web ni ting Vit Nam cng nh khp ni trn th gii c xy dng v pht trin da trn nn cng ngh Java. S ng dng Web c xy dng dng cng ngh Java chc chn khng ai c th bit c con s chnh xc l bao nhiu, nhng chng ti a ra y vi v d thy rng cng ngh Java ca Sun l mt i th ng gm ca Microsoft.

  • 14

    http://java.sun.com/ http://e-docs.bea.com/ http://www.macromedia.com/software/jrun/ http://tomcat.apache.org/index.html Chc khng t ngi trong chng ta bit n trang web thng tin nh t ni ting TPHCM l: http://www.nhadat.com/. ng dng Web ny cng c xy dng da trn nn cng ngh java. Bn c th tm hiu chi tit hn v cng ngh J2EE to a ch: http://java.sun.com/j2ee/ 11..33..55..JJaavvaa vv pphhtt ttrriinn cccc nngg ddnngg nnhhnngg Java Sun a ra cng ngh J2ME (The Java 2 Platform, Micro Edition J2ME) h tr pht trin cc chng trnh, phn mm nhng. J2ME cung cp mt mi trng cho nhng chng trnh ng dng c th chy c trn cc thit b c nhn nh: in thai di ng, my tnh b ti PDA hay Palm, cng nh cc thit b nhng khc.

    Bn c th tm hiu chi tit hn v cng ngh J2ME ti a ch: http://java.sun.com/j2me/ 11..44..DDcchh vv tthhcc tthhii mmtt cchhnngg ttrrnnhh vviitt bbnngg JJaavvaa

    Vic xy dng, dch v thc thi mt chng trnh vit bng ngn ng lp trnh java c th tm tt qua cc bc sau:

    - Vit m ngun: dng mt chng trnh son tho no y (NotePad hay Jcreator chng hn) vit m ngun v lu li vi tn c ui .java

  • 15

    - Bin dch ra m my o: dng trnh bin dch javac bin dch m ngun .java thnh m ca my o (java bytecode) c ui .class v lu ln a

    - Thng dch v thc thi: ng dng c load vo b nh, thng dch v thc thi dng trnh thng dch Java thng qua lnh java.

    o a m java bytecode vo b nh: y l bc loading. Chng trnh phi c t vo trong b nh trc khi thc thi. Loader s ly cc files cha m java bytecode c ui .class v np chng vo b nh.

    o Kim tra m java bytecode: trc khi trnh thng dch chuyn m bytecode thnh m my tng ng thc thi th cc m bytecode phi c kim tra tnh hp l.

    o Thng dch & thc thi: cui cng di s iu khin ca CPU v trnh thng dch ti mi thi im s c mt m bytecode c chuyn sang m my v thc thi.

    11..55..CChhnngg ttrrnnhh JJaavvaa uu ttiinn 11..55..11..TToo cchhnngg ttrrnnhh nngguunn HHeellllooWWoorrddAApppp KKhhii nngg NNootteeppaadd vv gg oonn mm ssaauu //**VViitt cchhnngg ttrrnnhh iinn ddnngg HHeellllooWWoorrlldd llnn mmnn hhnnhh CCoonnssoollee**// ccllaassss HHeellllooWWoorrllddAApppp{{ ppuubblliicc ssttaattiicc vvooiidd mmaaiinn((SSttrriinngg[[]] aarrggss)){{ ////IInn ddoonngg cchhuu HHeellllooWWoorrlldd SSyysstteemm..oouutt..pprriinnttllnn((HHeellllooWWoorrlldd));; }} }} Lu li vi tn HelloWorldApp.java

  • 16

    11..55..22..BBiinn ddcchh ttpp ttiinn nngguunn HHeellllooWWoorrddAApppp

    VViicc bbiinn ddcchh ttpp ttiinn mm nngguunn cchhnngg ttrrnnhh HHeellllooWWoorrllddAApppp cc tthh tthhcc hhiinn qquuaa cccc bbcc cc tthh nnhh ssaauu::

    -- MM ccaa ss CCoommmmaanndd PPrroommpptt.. -- CChhuuyynn nn tthh mmcc cchhaa ttpp ttiinn nngguunn vvaa ttoo rraa.. -- TThhcc hhiinn ccuu llnnhh:: jjaavvaacc HHeellllooWWoorrddAApppp..jjaavvaa Nu gp thng bo li Bad Command of filename hoc

    The name specified is not recognized as an internal or external command, operable program or batch file c ngha l Windows khng tm c trnh bin dch javac. sa li ny chng ta cn cp nht li ng dn PATH ca h thng. Ngc li nu thnh cng bn s c thm tp tin HelloWordApp.class 11..55..33..CChhyy cchhnngg ttrrnnhh HHeellllooWWoorrddAApppp

    -- TTii dduu nnhhcc gg llnnhh:: jjaavvaa HHeellllooWWoorrddAApppp -- NNuu cchhnngg ttrrnnhh nngg bbnn ss tthhyy ddnngg cchh

    HHeellllooWWoorrdd ttrrnn mmnn hhnnhh CCoonnssoollee.. - NNuu cccc bbnn nnhhnn cc llii EExxcceeppttiioonn iinn tthhrreeaadd ""mmaaiinn

    jjaavvaa..llaanngg..NNooCCllaassssDDeeffFFoouunnddEErrrroorr:: HHeellllooWWoorrllddAApppp cc nngghhaa ll JJaavvaa kkhhnngg tthh ttmm cc ttpp ttiinn mm bbyytteeccooddee ttnn HHeellllooWWoorrllddAApppp..ccllaassss ccaa cccc bbnn.. MMtt ttrroonngg nnhhnngg nnii jjaavvaa cc ttmm ttpp ttiinn bbyytteeccooddee ll tthh mmcc hhiinn ttii ccaa

  • 17

    cccc bbnn.. VV tthh nnuu ttpp ttiinn bbyyttee ccooddee cc tt CC::\\jjaavvaa tthh cccc bbnn nnnn tthhaayy ii nngg ddnn ttii ..

    11..55..44..CCuu ttrrcc cchhnngg ttrrnnhh HHeellllooWWoorrddAApppp PPhhnngg tthhcc mmaaiinn(()):: ll iimm bbtt uu tthhcc tthhii mmtt nngg ddnngg.. MMii nngg ddnngg JJaavvaa pphhii cchhaa mmtt pphhnngg tthhcc mmaaiinn cc ddnngg nnhh ssaauu:: ppuubblliicc ssttaattiicc vvooiidd mmaaiinn((SSttrriinngg[[]] aarrggss)) PPhhnngg tthhcc mmaaiinn cchhaa bbaa bb tt cc tt ssaauu::

    ppuubblliicc cchh rraa rrnngg pphhnngg tthhcc mmaaiinn cc tthh cc ggii bbii bbtt kk ii ttnngg nnoo.. ssttaattiicc cchh rraa rrnngg pphhnngg tthhcc mmaaiinn ll mmtt pphhnngg tthhcc llpp.. vvooiidd cchh rraa rrnngg pphhnngg tthhcc mmaaiinn ss kkhhnngg ttrr vv bbtt kk mmtt ggii ttrr nnoo..

    NNggnn nngg JJaavvaa hh ttrr bbaa kkiiuu cchh tthhcchh ssaauu:: //** tteexxtt **// //// tteexxtt //**** ddooccuummeennttaattiioonn **//.. CCnngg cc jjaavvaaddoocc ttrroonngg bb JJDDKK ss ddnngg cchh tthhcchh nnyy cchhuunn bb cchhoo vviicc tt nngg pphhtt ssiinnhh ttii lliiuu.. -- DDuu mm vv nngg nnggoo88cc nnhhnn {{ vv }}:: ll bbtt uu vv kktt tthhcc 11 kkhhii llnnhh.. -- DDuu cchhmm pphhyy ;; kktt tthhcc 11 ddnngg llnnhh.. 11..55..55..SS ddnngg pphhnngg tthhcc//bbiinn ccaa llpp CC pphhpp:: TTnn__llpp..TTnn__bbiinn

    hhoocc TTnn__llpp..TTnn__pphhnngg__tthhcc(()) 11..66..CCnngg cc llpp ttrrnnhh vv cchhnngg ttrrnnhh ddcchh 11..66..11..JJ22SSDDKK

    - Download J2SE phin bn mi nht tng ng vi h iu hnh ang s dng t a ch java.sun.com v ci

  • 18

    t ln my tnh (phin bn c chng ti s dng khi vit gio trnh ny l J2SE 1.4). Sau khi ci xong, chng ta cn cp nht ng dn PATH h thng ch n th mc cha chng trnh dch ca ngn ng java.

    11..66..22..CCnngg cc ssoonn tthhoo mm nngguunn JJaavvaa.. vit m ngun java chng ta c th s dng trnh son

    tho NotePad hoc mt s mi trng pht trin h tr ngn ng java nh: Jbuilder ca hng Borland, Visual Caf ca hng Symantec, JDeveloper ca hng Oracle, Visual J++ ca Microsoft,

    Trong khun kh gio trnh ny cng nh hng dn sinh vin thc hnh chng ti dng cng c JCreator LE v3.50 ca hng XINOX Software. Cc bn c th download JJCCrreeaattoorr LLEE vv33..5500 tt hhttttpp::////wwwwww..jjccrreeaattoorr..ccoomm//ddoowwnnllooaadd..hhttmm.. VV dd:: DDnngg JJCCrreeaattoorr ttoo vv tthhcc tthhii cchhnngg ttrrnnhh cc ttnn HHeellllooWWoorrllddAApppp.. BBcc 11:: TToo 11 EEmmppttyy PPrroojjeecctt

  • 19

    -- FFiillee NNeeww PPrroojjeecctt.. -- CChhnn EEmmppttyy pprroojjeecctt rrii bbmm nntt cchhnn NNeexxtt

    -- SSaauu nnhhpp ttnn pprroojjeecctt vv bbmm cchhnn FFiinniisshh.. BBcc 22:: TToo mmtt CCllaassss mmii ttnn HHeellllooWWoorrllddAApppp vv aa vvoo PPrroojjeecctt hhiinn ttii..

    -- FFiillee NNeeww CCllaassss.. -- NNhhpp vvoo ttnn CCllaassss vv cchhnn FFiinniisshh ((hhnnhh bbnn ddii))..

  • 20

    BBcc 33:: SSoonn tthhoo mm nngguunn ((hhnnhh bbnn ddii))

    Ca s

    WorkSpace Ca s son tho

    m ngun

    Thc thi (F5)

    Dch (F7)

  • 21

    CChhnngg 22:: HHNNGG,, BBIINN,, KKIIUU DD LLIIUU,,

    TTOONN TT,, BBIIUU TTHHCC VV CCCC CCUU TTRRCC IIUU KKHHIINN TTRROONNGG JJAAVVAA

    22..11..BBiinn -- BBiinn ll vvnngg nnhh ddnngg lluu ttrr cccc ggii ttrr ccaa cchhnngg

    ttrrnnhh.. MMii bbiinn ggnn lliinn vvii mmtt kkiiuu dd lliiuu vv mmtt nnhh ddaannhh dduuyy nnhhtt ggii ll ttnn bbiinn..

    -- TTnn bbiinn tthhnngg tthhnngg ll mmtt cchhuuii cccc kk tt ((UUnniiccooddee)),, kk ss..

    oo TTnn bbiinn pphhii bbtt uu bbnngg mmtt cchh ccii,, mmtt dduu ggcchh ddii hhaayy dduu ddoollllaarr..

    oo TTnn bbiinn kkhhnngg cc ttrrnngg vvii cccc tt kkhhaa ((xxeemm pphh llcc cccc tt kkhhaa ttrroonngg jjaavvaa))..

    oo TTnn bbiinn kkhhnngg cc kkhhoonngg ttrrnngg ggiiaa ttnn.. -- TTrroonngg jjaavvaa,, bbiinn cc tthh cc kkhhaaii bboo bbtt kk nnii uu

    ttrroonngg cchhnngg ttrrnnhh.. CCcchh kkhhaaii bboo ;; == ;; GGnn ggii ttrr cchhoo bbiinn == ;; Bin cng cng (ton cc): l bin c th truy xut khp ni trong chng trnh, thng c khai bo dng t kha public, hoc t chng trong mt class. Bin cc b: l bin ch c th truy xut trong khi lnh n khai bo.

  • 22

    Lu : Trong ngn ng lp trnh java c phn bit ch in hoa v in thng. V vy chng ta cn lu khi t tn cho cc i tng d liu cng nh cc x l trong chng trnh. V d: import java.lang.*; import java.io.*; class VariableDemo { static int x, y; public static void main(String[] args) {

    x = 10; y = 20; int z = x+y; System.out.println("x = " + x); System.out.println("y = " + y); System.out.println("z = x + y =" + z);

    System.out.println("So nho hon la so:" + Math.min(x, y));

    char c = 80; System.out.println("ky tu c la: " + c); } } Kt qu chng trnh

  • 23

    22..22..CCcc kkiiuu dd lliiuu cc ss Ngn ng lp trnh java c 8 kiu d liu c s: byte, short, int, long, float, double, boolean v char.

  • 24

    Kiu Kch thc (bytes)

    Gi tr min Gi tr max Gi tr mc nh

    byte 1 -256 255 0 short 2 -32768 32767 0 int 4 -231 231 - 1 0 long 8 -263 263 - 1 0L float 4 0.0f double 8 0.0d 22..22..11..KKiiuu ss nngguuyynn

    - Java cung cp 4 kiu s nguyn khc nhau l: byte, short, int, long. Kch thc, gi tr nh nht, ln nht, cng nh gi tr mc nh ca cc kiu d liu s nguyn c m t chi tit trong bng trn.

    - Kiu mc nh ca cc s nguyn l kiu int. - Cc s nguyn kiu byte v short rt t khi c dng. - Trong java khng c kiu s nguyn khng du nh

    trong ngn ng C/C++.

    Kiu c s

    Kiu lun l

    boolean

    Kiu s

    kiu nguyn kiu thc

    Kiu k t

    char

    byte short int long float double

  • 25

    Khai bo v khi to gi tr cho cc bin kiu nguyn:

    int x = 0; long y = 100;

    Mt s lu i vi cc php ton trn s nguyn:

    - Nu hai ton hng kiu long th kt qu l kiu long. Mt trong hai ton hng khng phi kiu long s c chuyn thnh kiu long trc khi thc hin php ton.

    - Nu hai ton hng u khng phi kiu long th php tnh s thc hin vi kiu int.

    - Cc ton hng kiu byte hay short s c chuyn sang kiu int trc khi thc hin php ton.

    - Trong java khng th chuyn bin kiu int v kiu boolean nh trong ngn ng C/C++.

    V d: c on chng trnh nh sau boolean b = false; if (b == 0) { System.out.println("Xin chao"); } Lc bin dch on chng trnh trn trnh dch s bo li: khng c php so snh bin kiu boolean vi mt gi tr kiu int.

  • 26

    22..22..22..KKiiuu dduu cchhmm nngg i vi kiu du chm ng hay kiu thc, java h tr hai kiu d liu l float v double. Kiu float c kch thc 4 byte v gi tr mc nh l 0.0f Kiu double c kch thc 8 byte v gi tr mc nh l 0.0d S kiu du chm ng khng c gi tr nh nht cng khng c gi tr ln nht. Chng c th nhn cc gi tr:

    - S m - S dng - V cc m - V cc dng

    Khai bo v khi to gi tr cho cc bin kiu du chm ng: float x = 100.0/7; double y = 1.56E6; Mt s lu i vi cc php ton trn s du chm ng:

    - Nu mi ton hng u c kiu dn chm ng th php ton chuyn thnh php ton du chm ng.

    - Nu c mt ton hng l double th cc ton hng cn li s c chuyn thnh kiu double trc khi thc hin php ton.

    - Bin kiu float v double c th p chuyn sang kiu d liu khc tr kiu boolean.

    22..22..33..KKiiuu kk tt ((cchhaarr)) Kiu k t trong ngn ng lp trnh java c kch thc l 2 bytes v ch dng biu din cc k t trong b m Unicode. Nh vy kiu char trong java c th biu din tt c 216 = 65536 k t khc nhau. Gi tr mc nh cho mt bin kiu char l null.

  • 27

    22..22..44..KKiiuu lluunn ll ((bboooolleeaann)) - Kiu boolean ch nhn 1 trong 2 gi tr: true hoc false. - Trong java kiu boolean khng th chuyn thnh kiu

    nguyn v ngc li. - Gi tr mc nh ca kiu boolean l false.

    22..33..HHnngg::

    - Hng l mt gi tr bt bin trong chng trnh - Tn hng c t theo qui c ging nh tn bin. - Hng s nguyn: trng hp gi tr hng dng long ta

    thm vo cui chui s ch l hay L. (v d: 1L) - Hng s thc: trung hp gi tr hng c kiu float ta

    thm tip v ng f hay F, cn kiu s double th ta thm tip v ng d hay D.

    - Hng Boolean: java c 2 hng boolean l true, false. - Hng k t: l mt k t n nm gia nm gia 2 du

    ngoc n. o V d: a: hng k t a o Mt s hng k t c bit

    K t ngha \b Xa li (BackSpace) \t Tab \n Xung hng \r Du enter \ Nhy kp \ Nhy n \\ S ngc \f y trang \uxxxx K t unicode

  • 28

    - Hng chui: l tp hp cc k t c t gia hai du nhy kp . Mt hng chui khng c k t no l mt hng chui rng.

    o V d: Hello Wolrd o Lu : Hng chui khng phi l mt kiu d

    liu c s nhng vn c khai bo v s dng trong cc chng trnh.

    22..44..LLnnhh,, kkhhii llnnhh ttrroonngg jjaavvaa Ging nh trong ngn ng C, cc cu lnh trong java kt thc bng mt du chm phy (;). Mt khi lnh l on chng trnh gm hai lnh tr ln v c bt u bng du m ngoc nhn ({) v kt thc bng du ng ngoc nhc (}). Bn trong mt khi lnh c th cha mt hay nhiu lnh hoc cha cc khi lnh khc. { // khi 1 { // khi 2 lnh 2.1 lnh 2.2 } // kt thc khi lnh 2 lnh 1.1 lnh 1.2 } // kt thc khi lnh 1 { // bt u khi lnh 3 // Cc lnh thuc khi lnh 3 // } // kt thc thi lnh 3

  • 29

    22..55..TToonn tt vv bbiiuu tthhcc 22..55..11..TToonn tt ss hhcc

    Ton t ngha + Cng - Tr * Nhn / Chia nguyn % Chia d ++ Tng 1 -- Gim 1

    22..55..22..TToonn tt ttrrnn bbiitt

    Ton t ngha & AND | OR ^ XOR > Dch phi >>> Dch phi v in 0 vo bit trng ~ B bit

    22..55..33..TToonn tt qquuaann hh && llooggiicc

    Ton t ngha == So snh bng != So snh khc > So snh ln hn < So snh nh hn >= So snh ln hn hay bng

  • 30

    || OR (biu thc logic) && AND (biu thc logic) ! NOT (biu thc logic)

    22..55..44..TToonn tt pp kkiiuu - p kiu rng (widening conversion): t kiu nh sang

    kiu ln (khng mt mt thng tin) - p kiu hp (narrow conversion): t kiu ln sang kiu

    nh (c kh nng mt mt thng tin) == ((kkiiuu__dd__lliiuu)) ;; VV dd::

    ffllooaatt ffNNuumm == 22..22;; iinntt iiCCoouunntt == ((iinntt)) ffNNuumm;; //// ((iiCCoouunntt == 22))

    22..55..55..TToonn tt iiuu kkiinn CC pphhpp:: ?? :: > NNuu iiuu kkiinn nngg tthh cc ggii ttrr,, hhaayy tthhcc hhiinn ,, ccnn nnggcc llii ll .. :: ll mmtt bbiiuu tthhcc llooggiicc ,, :: cc tthh ll hhaaii ggii ttrr,, hhaaii bbiiuu tthhcc hhoocc hhaaii hhnnhh nngg.. VV dd::

    iinntt xx == 1100;; iinntt yy == 2200;; iinntt ZZ == ((xx

  • 31

    () [] . ++ -- ~ ! * / % + - >> >>> (dch phi v

    in 0 vo bit trng) >= <

  • 32

    }} 22..66..22..CCuu ttrrcc sswwiittcchh ccaassee sswwiittcchh (())

    {{ ccaassee ::

    ;; bbrreeaakk;;

    .. ccaassee ::

    ;; bbrreeaakk;;

    ddeeffaauulltt:: ;;

    }}

    22..66..33..CCuu ttrrcc llpp DDnngg 11:: wwhhiillee(()) wwhhiillee ((iiuu__kkiinn__llpp)) {{

    kkhhii __llnnhh;; }} DDnngg 22:: ddoo {{ }} wwhhiillee;; ddoo {{

    kkhhii__llnnhh;; }} wwhhiillee ((iiuu__kkiinn));; DDnngg 33:: ffoorr (()) ffoorr ((kkhhii__ttoo__bbiinn__mm;;kk__llpp;;ttnngg__bbiinn)) {{

    ;;

  • 33

    }} 22..66..44..CCuu ttrrcc llnnhh nnhhyy ((jjuummpp)) Lnh break: trong cu trc switch chng ta dng cu lnh break thot thi cu trc switch trong cng cha n. Tng t nh vy, trong cu trc lp, cu lnh break dng that khi cu trc lp trong cng cha n. Lnh continue: dng tip tc vng lp trong cng cha n (ngc vi break). Nhn (label): Khng ging nh C/C++, Java khng h tr lnh goto nhy n 1 v tr no ca chng trnh. Java dng kt hp nhn (label) vi t kha break v continue thay th cho lnh goto. V d: label: for () { for ()

    { if () break label; else continue label; }

    } Lnh label: xc nh v tr ca nhn v xem nh tn ca vng lp ngoi. Nu ng th lnh break label s thc hin vic nhy ra khi vng lp c nhn l label, ngc li s tip tc vng lp c nhn label (khc vi break v continue thng thng ch thot khi hay tip tc vng lp trong cng cha n.). 22..77..LLpp bbaaoo kkiiuu dd lliiuu cc ss ((WWrraappppeerr CCllaassss))

    Data type Wrapper Class Ghi ch

  • 34

    (java.lang.*) boolean Boolean byte Byte short Short char Character int Integer long Long Float Float double Double

    - Gi (package): cha nhm nhiu class. - Ngoi cc Wrapper Class, gi java.lang cn cung cp cc lp nn tng cho vic thit k ngn ng java nh: String, Math,

    22..88..KKiiuu dd lliiuu mmnngg Nh chng ta bit Java c 2 kiu d liu

    - Kiu d liu c s (Primitive data type) - Kiu d liu tham chiu hay dn xut (reference data

    type): thng c 3 kiu: o Kiu mng o Kiu lp o Kiu giao tip(interface).

    y chng ta s tm hiu mt s vn c bn lin quan n kiu mng. Kiu lp(class) v giao tip(interface) chng ta s tm hiu chi tit trong chng 3 v cc chng sau. 22..88..11..KKhhii nniimm mmnngg Mng l tp hp nhiu phn t c cng tn, cng kiu d liu v mi phn t trong mng c truy xut thng qua ch s ca n trong mng. 22..88..22..KKhhaaii bboo mmnngg []; hoc [] ; V d: int arrInt[]; hoc int[] arrInt;

  • 35

    int[] arrInt1, arrInt2, arrInt3; 22..88..33..CCpp pphhtt bb nnhh cchhoo mmnngg - Khng ging nh trong C, C++ kch thc ca mng c xc nh khi khai bo. Chng hn nh:

    int arrInt[100]; // Khai bo ny trong Java s b bo li. - cp pht b nh cho mng trong Java ta cn dng t kha new. (Tt c trong Java u thng qua cc i tng). Chng hn cp pht vng nh cho mng trong Java ta lm nh sau: int arrInt = new int[100]; 22..88..44..KKhhii ttoo mmnngg Chng ta c th khi to gi tr ban u cho cc phn t ca mng khi n c khai bo. V d:

    int arrInt[] = {1, 2, 3}; char arrChar[] = {a, b, c}; String arrStrng[] = {ABC, EFG, GHI};

    22..88..55..TTrruuyy ccpp mmnngg Ch s mng trong Java bt u t 0. V vy phn t u tin c ch s l 0, v phn t th n c ch s l n-1. Cc phn t ca mng c truy xut thng qua ch s ca n t gia cp du ngoc vung ([]). V d: int arrInt[] = {1, 2, 3}; int x = arrInt[0]; // x s c gi tr l 1. int y = arrInt[1]; // y s c gi tr l 2.

    int z = arrInt[2]; // z s c gi tr l 3. Lu : Trong nhng ngn ng lp trnh khc (C chng hn), mt chui c xem nh mt mng cc k t. Trong java th

  • 36

    khc, java cung cp mt lp String lm vic vi i tng d liu chui cng khc thao tc trn i tng d liu ny. 22..99..MMtt ss vv dd mmiinnhh hhaa:: V d 1: Nhp k t t bn phm import java.io.*; /* gi ny cung cp th vin xut nhp h thng thng qua nhng lung d //liu v h thng file.*/ class InputChar { public static void main(String args[]) { char ch = ; try { ch = (char) System.in.read();

    } catch(Exception e) { System.out.println(Nhp li!); } System.out.println(Ky tu vua nhap: + ch);

    } } V d 2: Nhp d liu s import java.io.*; class inputNum { public static void main(String[] args)

    { int n=0; try { BufferedReader in =

    new BufferedReader(

  • 37

    new InputStreamReader( System.in));

    String s; s = in.readLine(); n = Integer.parseInt(s); } catch(Exception e) { System.out.println(Nhp d liu b

    li !); } System.out.println(Bn va nhp s: + n);

    } } V d 3: Nhp v xut gi tr cc phn t ca mt mng cc s nguyn. class ArrayDemo { public static void main(String args[]) { int arrInt[] = new int[10]; int i; for(i = 0; i < 10; i = i+1) arrInt[i] = i; for(i = 0; i < 10; i = i+1)

    System.out.println("This is arrInt[" + i + "]: " + arrInt[i]);

    } }

  • 38

    V d 4: Tm phn t c gi tr nh nht (Min) v ln nht (Max) trong mt mng. class MinMax { public static void main(String args[]) { int nums[] = new int[10]; int min, max; nums[0] = 99; nums[1] = -10; nums[2] = 100123; nums[3] = 18; nums[4] = -978; nums[5] = 5623; nums[6] = 463; nums[7] = -9; nums[8] = 287; nums[9] = 49; min = max = nums[0]; for(int i=1; i < 10; i++) { if(nums[i] < min) min = nums[i]; if(nums[i] > max) max = nums[i]; }

    System.out.println("min and max: " + min + " " + max);

    } } class MinMax2

  • 39

    { public static void main(String args[]) {

    int nums[] = { 99, -10, 100123, 18, -978, 5623, 463, -9, 287, 49 };

    int min, max; min = max = nums[0]; for(int i=1; i < 10; i++) {

    if(nums[i] < min) min = nums[i]; if(nums[i] > max) max = nums[i];

    } System.out.println("Min and max: " + min + " " + max);

    } }

    V d 5: chng trnh minh ha mt li tham chiu n phn t bn ngoi (vut qu) kch thc mng. class ArrayErr { public static void main(String args[])

    { int sample[] = new int[10]; int i; for(i = 0; i < 100; i = i+1)

    sample[i] = i; }

    }

  • 40

    V d 6: Sp xp mng dng phng php sp xp ni bt (Bubble Sort) class BubbleSort { public static void main(String args[]) { int nums[] = { 99, -10, 100123, 18, -978, 5623, 463, -9, 287, 49 }; int a, b, t; int size; size = 10; // number of elements to sort // display original array System.out.print("Original array is:"); for(int i=0; i < size; i++) System.out.print(" " + nums[i]); System.out.println(); // This is the Bubble sort. for(a=1; a < size; a++) for(b=size-1; b >= a; b--) { if(nums[b-1] > nums[b]) { // if out of order // exchange elements t = nums[b-1]; nums[b-1] = nums[b]; nums[b] = t; } } // display sorted array

  • 41

    System.out.print("Sorted array is:"); for(int i=0; i < size; i++) System.out.print(" " + nums[i]); System.out.println(); } }

    V d 7: Nhp v xut gi tr ca cc phn t trong mt mng hai chiu. class TwoD_Arr { public static void main(String args[]) { int t, i; int table[][] = new int[3][4]; for(t=0; t < 3; ++t) { for(i=0; i < 4; ++i) { table[t][i] = (t*4)+i+1;

    System.out.print(table[t][i] + " ");

    } System.out.println(); } } }

  • 42

    V d 8: To i tng chui class StringDemo { public static void main(String args[]) {

    // Tao chuoi bang nhieu cach khac nhau String str1 = new String("Chuoi trong java la nhung Objects."); String str2 = "Chung duoc xay dung bang nhieu cach khac nhau.";

    String str3 = new String(str2);

    System.out.println(str1); System.out.println(str2); System.out.println(str3); } }

    V d 9: Minh ha mt s thao tc c bn trn chui // Chuong trinh minh hoa cac thao tac tren chuoi ky tu class StrOps { public static void main(String args[]) {

    String str1 = "Java la chon lua so mot cho lap trinh ung dung Web.";

    String str2 = new String(str1); String str3 = "Java ho tro doi tuong String de xu ly chuoi";

  • 43

    int result, idx; char ch; System.out.println("str1:" + str1); System.out.println("str2:" + str2); System.out.println("str3:" + str3);

    System.out.println("Chieu dai cua chuoi str1 la: " + str1.length());

    // Hien thi chuoi str1, moi lan mot ky tu. System.out.println(); for(int i=0; i < str1.length(); i++) System.out.print(str1.charAt(i)); System.out.println(); if(str1.equals(str2)) System.out.println("str1 == str2"); else System.out.println("str1 != str2"); if(str1.equals(str3)) System.out.println("str1 == str3"); else System.out.println("str1 != str3"); result = str1.compareTo(str3); if(result == 0) System.out.println("str1 = str3 "); else if(result < 0) System.out.println("str1 < str3"); else System.out.println("str1 > str3");

  • 44

    // Tao chuoi moi cho str4 String str4 = "Mot Hai Ba Mot"; idx = str4.indexOf("Mot"); System.out.println("str4:" + str4);

    System.out.println("Vi tri xuat hien dau tien cua chuoi con 'Mot' trong str4: " + idx);

    idx = str4.lastIndexOf("Mot"); System.out.println("Vi tri xuat hien sau cung cua chuoi con 'Mot' trong str4:" + idx);

    } }

    V d 10: chng trnh nhp vo mt chui v in ra chui nghch o ca chui nhp. import java.lang.String; import java.io.*; public class InverstString { public static void main(String arg[])

    { System.out.println("\n *** CHUONG TRINH IN CHUOI NGUOC *** ");

    try

  • 45

    { System.out.println("\n *** Nhap chuoi:"); BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); // Class BufferedReader cho php c text t lung nhp k t, to b m cho nhng k t h tr cho vic c nhng k t, nhng mng hay nhng dng.

    // Doc 1 dong tu BufferReadered ket thuc bang dau ket thuc dong.

    String str = in.readLine(); System.out.println("\n Chuoi vua nhap la:" + str);

    // Xuat chuoi nghich dao

    System.out.println("\n Chuoi nghich dao la:");

    for (int i=str.length()-1; i>=0; i--) { System.out.print(str.charAt(i)); } } catch (IOException e) { System.out.println(e.toString()); } } } V d 11: Ly chui con ca mt chui class SubStr { public static void main(String args[]) {

  • 46

    String orgstr = "Mot Hai Ba Bon"; // Lay chuoi con dung ham

    // public String substring(int beginIndex, int // endIndex)

    String substr = orgstr.substring(4, 7); System.out.println("Chuoi goc: " + orgstr); System.out.println("Chuoi con: " + substr); } }

    V d 12: Mng cc chui class StringArray { public static void main(String args[]) { String str[] = {"Mot", "Hai", "Ba", "Bon" }; System.out.print("Mang goc: "); for(int i=0; i < str.length; i++) System.out.print(str[i] + " "); System.out.println("\n"); // Thay doi chuoi str[0] = "Bon"; str[1] = "Ba"; str[2] = "Hai"; str[3] = "Mot"; System.out.print("Mang thay doi:"); for(int i=0; i < str.length; i++) System.out.print(str[i] + " ");

  • 47

    System.out.print("\n"); } }

    CChhnngg 33:: HHNNGG II TTNNGG TTRROONNGG JJAAVVAA

    33..11..MM uu Thng qua chuyn lp trnh hng i tng (OOP) chng ta bit OOP l mt trong nhng tip cn mnh m, v

  • 48

    rt hiu qu xy dng nn nhng chng trnh ng dng trn my tnh. T khi ra i cho n nay lp trnh OOP chng t c sc mnh, vai tr ca n trong cc n tin hc. Chhnngg nnyy ss ggiipp bbnn cc ttmm hhiiuu vv cccc kkiiuu dd lliiuu ddnn xxuutt ll llpp ((ccllaassss)) vv ggiiaaoo ttiipp ((iinntteerrffaaccee)),, ccnngg nnhh cccc vvnn cc bbnn vv llpp ttrrnnhh hhnngg ii ttnngg ttrroonngg jjaavvaa tthhnngg qquuaa vviicc ttoo llpp cccc llpp,, cccc ii ttnngg vv cccc ttnnhh cchhtt ccaa cchhnngg.. 33..22..LLpp ((CCllaassss)) 33..22..11..KKhhii nniimm Chng ta c th xem lp nh mt khun mu (template) ca i tng (Object). Trong bao gm d liu ca i tng (fields hay properties) v cc phng thc(methods) tc ng ln thnh phn d liu gi l cc phng thc ca lp. Cc i tng c xy dng bi cc lp nn c gi l cc th hin ca lp (class instance). 33..22..22..KKhhaaii bboo//nnhh nngghhaa llpp class { ; ; constructor method_1

    method_2 } class: l t kha ca java ClassName: l tn chng ta t cho lp field_1, field_2: cc thuc tnh, cc bin, hay cc thnh phn d liu ca lp. constructor: l s xy dng, khi to i tng lp. method_1, method_2: l cc phng thc/hm th hin cc thao tc x l, tc ng ln cc thnh phn d liu ca lp.

  • 49

    33..22..33..TToo ii ttnngg ccaa llpp ClassName objectName = new ClassName(); 33..22..44..TThhuucc ttnnhh ccaa llpp Vng d liu (fields) hay thuc tnh (properties) ca lp c khai bo bn trong lp nh sau:

    class { // khai bo nhng thuc tnh ca lp field1; // }

    xc nh quyn truy xut ca cc i tng khc i vi vng d liu ca lp ngi ta thng dng 3 tin t sau:

    public: c th truy xut t tt c cc i tng khc private: mt lp khng th truy xut vng private ca 1

    lp khc. protected: vng protected ca 1 lp ch cho php bn

    thn lp v nhng lp dn xut t lp truy cp n.

    V d: public class xemay { public String nhasx; public String model; private float chiphisx; protected int thoigiansx;

    // so luong so cua xe may: 3, 4 so

    protected int so; // sobanhxe l bin tnh c gi tr l 2 trong tt c // cc th hin to ra t lp xemay

  • 50

    public static int sobanhxe = 2; } Thuc tnh nhasx, modelc th c truy cp n t tt c cc i tng khc. Thuc tnh chiphisx ch c th truy cp c t cc i tng c kiu xemay Thuc tnh thoigiansx, so c th truy cp c t cc i tng c kiu xemay v cc i tng ca cc lp con dn xut t lp xemay Lu : Thng thng an ton cho vng d liu ca cc i tng ngi ta trnh dng tin t public, m thng chn tin t private ngn cn quyn truy cp n vng d liu ca mt lp t cc phng thc bn ngoi lp . 33..22..55..HHmm -- PPhhnngg tthhcc llpp ((MMeetthhoodd)) Hm hay phng thc (method) trong Java l khi lnh thc hin cc chc nng, cc hnh vi x l ca lp ln vng d liu. Khai bo phng thc: () { ; } xc nh quyn truy xut ca cc i tng khc i vi cc phng thc ca lp ngi ta thng dng cc tin t sau:

    public: phng thc c th truy cp c t bn ngoi lp khai bo.

    protected: c th truy cp c t lp khai bo v nhng lp dn xut t n.

    private: ch c truy cp bn trong bn thn lp khai bo.

  • 51

    static: phng thc lp dng chung cho tt c cc th hin ca lp, c ngha l phng thc c th c thc hin k c khi khng c i tng ca lp cha phng thc .

    final: phng thc c tin t ny khng c khai bo chng cc lp dn xut.

    abstract: phng thc khng cn ci t (khng c phn source code), s c hin thc trong cc lp dn xut t lp ny.

    synchoronized: dng ngn cc tc ng ca cc i tng khc ln i tng ang xt trong khi ang ng b ha. Dng trong lp trnh miltithreads.

    : c th l kiu void, kiu c s hay mt lp. : t theo qui c ging tn bin. : c th rng Lu : Thng thng trong mt lp cc phng thc nn c khai bo dng t kha public, khc vi vng d liu thng l dng tin t private v mc ch an ton. Nhng bin nm trong mt phng thc ca lp l cc bin cc b (local) v nn c khia to sau khi khai bo. V d: public class xemay {

    public String nhasx; public String model; private float chiphisx; protected int thoigiansx;

    // so luong so cua xe may: 3, 4 so

    protected int so;

  • 52

    // l bin tnh c gi tr l 2 trong tt c // cc th hin to ra t lp xemay public static int sobanhxe = 2; public float tinhgiaban() {

    return 1.5 * chiphisx; }

    } 33..22..66..KKhhii ttoo mmtt ii ttnngg ((CCoonnssttrruuccttoorr)) Contructor tht ra l mt loi phng thc c bit ca lp. Constructor dng gi t ng khi khi to mt th hin ca lp, c th dng khi gn nhng gi tr mc nh. Cc constructor khng c gi tr tr v, v c th c tham s hoc khng c tham s. Constructor phi c cng tn vi lp v c gi n dng t kha new. Nu mt lp khng c constructor th java s cung cp cho lp mt constructor mc nh (default constructor). Nhng thuc tnh, bin ca lp s c khi to bi cc gi tr mc nh (s: thng l gi tr 0, kiu lun l l gi tr false, kiu i tng gi tr null, ) Lu : thng thng an ton, d kim sot v lm ch m ngun chng trnh chng ta nn khai bo mt constructor cho lp. V d: public class xemay { // public xemay()

  • 53

    {} public xemay(String s_nhasx, String s_model, f_chiphisx, int i_thoigiansx, int i_so);

    { nhasx = s_nhasx; model = s_model; chiphisx = f_chiphisx; thoigiansx = i_thoigiansx; so = i_so; // hoc // this.nhasx = s_nhasx; // this.model = s_model; // this.chiphisx = f_chiphisx; // this.thoigiansx = i_thoigiansx; // this.so = i_so;

    } } 33..22..77..BBiinn tthhiiss Bin this l mt bin n tn ti trong tt c cc lp trong ngng ng java. Mt class trong Java lun tn ti mmtt bin this, bin this c s dng trong khi chy v tham kho n bn thn lp cha n. V d: class A { int ; String ; // Contructor ca lp A public A(int par_1, String par_2) {

  • 54

    this.field_1 = par_1; this.field_2 = par_2; } () { // } () { this.method_1() // } } 33..22..88..KKhhaaii bboo cchhnngg pphhnngg tthhcc ((oovveerrllooaaddiinngg mmeetthhoodd)) Vic khai bo trong mt lp nhiu phng thc c cng tn nhng khc tham s (khc kiu d liu, khc s lng tham s) gi l khai bo chng phng thc (overloading method). V d: public class xemay { // khai bo fields

    public float tinhgiaban() { return 2 * chiphisx; } public float tinhgiaban(float huehong) { return (2 * chiphisx + huehong); }

    } 33..33..cc iimm hhnngg ii ttnngg ttrroonngg jjaavvaa H tr nhng nguyn tc c bn ca lp trnh hng i tng, tt c cc ngn ng lp trnh k c java u c ba c

  • 55

    im chung: tnh ng gi (encapsulation), tnh a hnh (polymorphism), v tnh k tha (inheritance). 33..33..11..nngg ggii ((eennccaappssuullaattiioonn)) C ch ng gi trong lp trnh hng i tng gip cho cc i tng du i mt phn cc chi tit ci t, cng nh phn d liu cc b ca n, v ch cng b ra ngoi nhng g cn cng b trao i vi cc i tng khc. Hay chng ta c th ni i tng l mt thnh t h tr tnh ng gi. n v ng gi c bn ca ngn ng java l class. Mt class nh ngha hnh thc ca mt i tng. Mt class nh r nhng thnh phn d liu v cc on m ci t cc thao tc x l trn cc i tng d liu . Java dng class xy dng nhng i tng. Nhng i tng l nhng th hin (instances) ca mt class. Mt lp bao gm thnh phn d liu v thnh phn x l. Thnh phn d liu ca mt lp thng bao gm cc bin thnh vin v cc bin th hin ca lp. Thnh phn x l l cc thao tc trn cc thnh phn d liu, thng trong java ngi gi l phng thc. Phng thc l mt thut ng hng i tng trong java, trong C/C++ ngi ta thng dng thut ng l hm. 33..33..22..TTnnhh aa hhnnhh ((ppoollyymmoorrpphhiissmm)):: Tnh a hnh cho php ci t cc lp dn xut khc nhau t mt lp ngun. Mt i tng c th c nhiu kiu khc nhau gi l tnh a hnh. V d: class A_Object {

    // void method_1()

    { //

  • 56

    } } class B_Object extends A_Object {

    // void method_1()

    { // }

    } class C { public static void main(String[] args) { // To mt mng 2 phn t kiu A A_Object arr_Object = new A_Object[2]; B_Object var_1 = new B_Object();

    // Phn t u tin ca mng arr_Object[0] tham // chiu n 1 i tng kiu B_Object dn xut // t A_Object

    arr_Object[0] = var_1; A_Object var_2; for (int i=0; i

  • 57

    - Vi i = 0 th bin var_2 c kiu l B_Object, v lnh var_2.method_1() s gi thc hin phng thc method_1 ca lp B_Object.

    - Vi i = 1 th bin var_2 c kiu l A_Object, v lnh var_2.method_1() s gi thc hin phng thc method_1 ca lp A_Object.

    Trong v d trn i tng var_2 c th nhn kiu A_Object hay B_Object. Hay ni cc khc, mt bin i tng kiu A_Object nh var_2 trong v d trn c th tham chiu n bt k i tng no ca bt k lp con no ca lp A_Object (v d var_2 c th tham chiu n i tng var_1, var_1 l i tng ca lp B_Object dn xut t lp A_Object). Ngc li mt bin ca lp con khng th tham chiu n bt k i tng no ca lp cha. 33..33..33..TTnnhh kk tthhaa ((iinnhheerriittaannccee)) Mt lp con (subclass) c th k tha tt c nhng vng d liu v phng thc ca mt lp khc (siu lp - superclass). Nh vy vic to mt lp mi t mt lp bit sao cho cc thnh phn (fields v methods) ca lp c cng s thnh cc thnh phn (fields v methods) ca lp mi. Khi ta gi lp mi l lp dn xut (derived class) t lp c (superclass). C th lp c cng l lp c dn xut t mt lp no y, nhng i vi lp mi va to th lp c l mt lp siu lp trc tip (immediate supperclass). Dng t kha extends ch lp dn xut. class A extends B { // } 3.3.3.1 Khi bo phng thc chng

  • 58

    Tnh k tha gip cho cc lp con nhn c cc thuc tnh/phng thc public v protected ca lp cha. ng thi cng c th thay th cc phng thc ca lp cha bng cch khai bo chng. Chng hn phng thc tinhgiaban() p dng trong lp xega s cho kt qu gp 2.5 ln chi ph sn xut thay v gp 2 chi ph sn xut ging nh trong lp xemay. V d: public class xega extends xemay {

    public xega() { } public xega(String s_nhasx, String s_model, f_chiphisx, int i_thoigiansx);

    { this.nhasx = s_nhasx; this.model = s_model; this.chiphisx = f_chiphisx; this.thoigiansx = i_thoigiansx; this.so = 0;

    } public float tinhgiaban() {

    return 2.5 * chiphisx; }

    } Java cung cp 3 tin t/t kha h tr tnh k tha ca lp:

    public: lp c th truy cp t cc gi, chng trnh khc.

    final: Lp hng, lp khng th to dn xut (khng th c con), hay i khi ngi ta gi l lp v sinh.

  • 59

    aabbssttrraacctt:: Lp tru tng (khng c khai bo cc thnh phn v cc phng thc trong lp tru tng). Lp dn xut s khai bo, ci t c th cc thuc tnh, phng thc ca lp tru tng.

    3.3.3.2 Lp ni Lp ni l lp c khai bo bn trong 1 lp khc. Lp ni th hin tnh ng gi cao v c th truy xut trc tip bin ca lp cha. V d: public class A { //

    int static class B {

    // int public B(int par_1)

    { field_2 = par_1 + field_1; }

    } } Trong v d trn th chng trnh dch s to ra hai lp vi hai files khc nhau: A.class v B.class 3.3.3.3 Lp v sinh Lp khng th c lp dn xut t n (khng c lp con) gi l lp v sinh, hay ni cch khc khng th k tha c t mt lp v sinh. Lp v sinh dng hn ch, ngn nga cc lp khc dn xut t n.

  • 60

    khai bo mt lp l lp v sinh, chng ta dng t kha final class. Tt c cc phng thc ca lp v sinh u v sinh, nhng cc thuc tnh ca lp v sinh th c th khng v sinh. V d: public final class A { public final int x; private int y; public final void method_1() { //

    } public final void method_2() { // }

    } 3.3.3.4 Lp tru tng Lp tru tng l lp khng c khai bo cc thuc tnh thnh phn v cc phng thc. Cc lp dn xut ca n s khai bo thuc tnh, ci t c th cc phng thc ca lp tru tng. V d: abstract class A { abstract void method_1();

  • 61

    } public class B extends A { public void method_1() { // ci t chi tit cho phng thc method_1 // trong lp con B. // } } public class C extends A { public void method_1() { // ci t chi tit cho phng thc method_1 // trong lp con C. // } } Lu : Cc phng thc c khai bo dng cc tin t private v static th khng c khai bo l tru tng abstract. Tin t private th khng th truy xut t cc lp dn xut, cn tin t static th ch dng ring cho lp khai bo m thi. 3.3.3.5 Phng thc finalize() Trong java khng c kiu d liu con tr nh trong C, ngi lp trnh khng cn phi qu bn tm v vic cp pht v gii phng vng nh, s c mt trnh dn dp h thng m trch vic ny. Trnh dn dp h thng s dn dp vng nh cp pht cho cc i tng trc khi hy mt i tng. Phng thc finalize() l mt phng thc c bit c ci t sn cho cc lp. Trnh dn dp h thng s gi phng thc ny trc khi hy mt i tng. V vy vic ci t mt s

  • 62

    thao tc gii phng, dn dp vng nh cp pht cho cc i tng d liu trong phng thc finalize() s gip cho ngi lp trnh ch ng kim sot tt qu trnh hy i tng thay v giao cho trnh dn dp h thng t ng. ng thi vic ci t trong phng thc finalize() s gip cho b nh c gii phng tt hn, gp phn ci tin tc chng trnh. V d: class A { // Khai bo cc thuc tnh public void method_1() { // } protected void finalize() { // C th dng ng tt c cc kt ni

    // vo c s d liu trc khi hy i tng. //

    } } 33..44..GGii ((ppaacckkaaggeess)) Vic ng gi cc lp li to thnh mt th vin dng chung gi l package. Mt package c th cha mt hay nhiu lp bn trong, ng thi cng c th cha mt package khc bn trong.

  • 63

    khai bo mt lp thuc mt gi no y ta phi dng t kha package. Dng khai bo gi phi l dng u tin trong tp tin khai bo lp. Cc tp tin khai bo lp trong cng mt gi phi c lu trong cng mt th mc. Lu : Vic khai bo import tt c cc lp trong gi s lm tn b nh. Thng thng chng ta ch nn import nhng lp cn dng trong chng trnh. V d: package phuongtiengiaothong; class xemay { // . } class xega extends xemay { // } Khi mun s dng lp xemay vo chng trnh ta s khai bo nh sau:

    import phuongtiengiaothong.xemay; 33..55..GGiiaaoo ddiinn ((iinntteerrffaaccee)) 33..55..11..KKhhii nniimm iinntteerrffaaccee:: Nh chng ta bit mt lp trong java ch c mt siu lp trc tip hay mt cha duy nht (n tha k). trnh i tnh phc tp ca a tha k (multi-inheritance) trong lp trnh hng i tng, Java thay th bng giao tip (interface). Mt lp c th c nhiu giao tip (interface) vi cc lp khc

  • 64

    tha hng thm vng d liu v phng thc ca cc giao tip ny. 33..55..22..KKhhaaii bboo iinntteerrffaaccee:: Interface c khai bo nh mt lp. Nhng cc thuc tnh ca interface l cc hng (khai bo dng t kha final) v cc phng thc ca giao tip l tru tng (mc d khng c t kha abstract). Trong cc lp c ci t cc interface ta phi tin hnh ci t c th cc phng thc ny. V d: public interface sanpham { static final String nhasx = Honda VN; static final String dienthoai = 08-8123456; public int gia(String s_model); } // khai bo 1 lp c ci t interface public class xemay implements sanpham { // ci t li phng thc ca giao din trong lp public int gia(String s_model) { if (s_model.equals(2005)) return (2000); else return (1500);

    } public String chobietnhasx() { return (nhasx); }

    }

  • 65

    C mt vn khc vi lp l mt giao din (interface) khng ch c mt giao din cha trc tip m c th dn xut cng lc nhiu giao din khc (hay c nhiu giao din cha). Khi n s k tha tt c cc gi tr hng v cc phng thc ca cc giao din cha. Cc giao din cha c lit k thnh chui v cch nhau bi du phy ,. Khai bo nh sau: public interface InterfaceName extends interface1, interface2, interface3 { // } 33..55..33..VV dd mmiinnhh hhaa V d 1: Minh ha tnh a hnh (polymorphism) trong phn cp k tha thng qua vic m t v x l mt s thao tc c bn trn cc i tng hnh hc. // nh ngha lp tru tng c s tn Shape trong // tp tin Shape.java public abstract class Shape extends Object { // tr v din tch ca mt i tng hnh hc shape public double area() {

    return 0.0; } // tr v th tch ca mt i tng hnh hc shape public double volume() {

    return 0.0; }

  • 66

    // Phng thc tru tng cn phi c hin thc // trong nhng lp con tr v tn i tng // hnh hc shape thch hp public abstract String getName(); } // end class Shape // nh ngha lp Point trong tp tin Point.java public class Point extends Shape {

    protected int x, y; // Ta x, y ca 1 im

    // constructor khng tham s. public Point() {

    setPoint( 0, 0 ); }

    // constructor c tham s. public Point(int xCoordinate, int yCoordinate) {

    setPoint( xCoordinate, yCoordinate ); }

    // gn ta x, y cho 1 im public void setPoint( int xCoordinate, int yCoordinate ) {

    x = xCoordinate; y = yCoordinate;

    }

    // ly ta x ca 1 im public int getX() {

    return x; }

  • 67

    // ly ta y ca 1 im public int getY() {

    return y; }

    // Th hin ta ca 1 im di dng chui public String toString() {

    return "[" + x + ", " + y + "]"; }

    // tr v tn ca i tng shape public String getName() {

    return "Point"; }

    } // end class Point nh ngha mt lp cha Shape l mt lp tru tng dn xut t Object v c 3 phng thc khai bo dng tin t public. Phng thc getName() khai bo tru tng v vy n phi c hin thc trong cc lp con. Phng thc area() (tnh din tch) v phng thc volume() (tnh th tch) c nh ngha v tr v 0.0. Nhng phng thc ny s c khai bo chng trong cc lp con thc hin chc nng tnh din tch cng nh th tch ph hp vi nhng i tng hnh hc tng ng (ng trn, hnh tr, ) Lp Point: dn xut t lp Shape. Mt im th c din tch v th tch l 0.0, v vy nhng phng thc area() v volume() ca lp cha khng cn khai bo chng trong lp Point, chng c tha k nh nh ngha trong lp tru tng Shape. Nhng phng thc khc nh setPoint()

  • 68

    gn ta x, y cho mt im, cn phng thc getX(), getY() tr v ta x, y ca mt im. Phng thc getName() l hin thc cho phng thc tru tng trong lp cha, nu nh phng thc getName() m khng c nh ngha th lp Point l mt lp tru tng. // nh ngha lp Circle trong tp tin Circle.java public class Circle extends Point { // Dn xut t lpPoint

    protected double radius;

    // constructor khng tham s public Circle() {

    // ngm gi n constructor ca lp cha setRadius( 0 );

    }

    // constructor c tham s public Circle( double circleRadius, int xCoordinate, int yCoordinate ) {

    // gi constructorca lp cha super( xCoordinate, yCoordinate ); setRadius( circleRadius );

    }

    // Gn bn knh ca ng trn public void setRadius( double circleRadius ) {

    radius = ( circleRadius >= 0 ? circleRadius:0 ); }

    // Ly bn knh ca ng trn

  • 69

    public double getRadius() {

    return radius; }

    // Tnh din tch ng trn Circle public double area() {

    return Math.PI * radius * radius; }

    // Biu din ng trn bng mt chui public String toString() {

    return "Center = " + super.toString() + "; Radius = " + radius;

    }

    // tr v tn ca shape public String getName() {

    return "Circle"; }

    } // end class Circle Lp Circle dn xut t lp Point, mt ng trn c th tch l 0.0, v vy phng thc volume() ca lp cha khng khai bo chng, n s tha k t lp Point, m lp Point th tha k t lp Shape. Din tch ng trn khc vi mt im, v vy phng thc tnh din tch area() c khai bo chng. Phng thc getName() hin thc phng thc tru tng khai bo trong lp cha, nu phng thc getName() khng khai bo trong lp Circle th n s k tha t lp Point. Phng thc setRadius dng gn mt bn knh (radius) mi cho mt

  • 70

    i tng ng trn, cn phng thc getRadius tr v bn knh ca mt i tng ng trn. // nh ngha lp hnh tr Cylinder // trong tp tin Cylinder.java. public class Cylinder extends Circle { // chiu cao ca Cylinder

    protected double height;

    // constructor khng c tham s public Cylinder() {

    // ngm gi n constructor ca lp cha setHeight( 0 );

    }

    // constructor c tham s public Cylinder( double cylinderHeight, double cylinderRadius, int xCoordinate, int yCoordinate ) {

    // Gi constructor ca lp cha super( cylinderRadius, xCoordinate, yCoordinate );

    setHeight( cylinderHeight );

    }

    // Gn chiu cao cho Cylinder public void setHeight( double cylinderHeight ) {

    height = ( cylinderHeight >= 0 ? cylinderHeight :0 );

    }

  • 71

    // Ly chiu cao ca Cylinder public double getHeight() {

    return height; }

    // Tnh din tch xung quanh ca Cylinder public double area() {

    return 2 * super.area() + 2 * Math.PI * radius * height;

    }

    // Tnh th tch ca Cylinder public double volume() {

    return super.area() * height; }

    // Biu din Cylinder bng mt chui public String toString() {

    return super.toString() + "; Height = " + height; }

    // tr v tn ca shape public String getName() {

    return "Cylinder"; }

    } // end class Cylinder

  • 72

    Lp Cylinder dn xut t lp Circle. Mt Cylinder (hnh tr) c din tch v th tch khc vi mt Circle (hnh trn), v vy c hai phng thc area() v volume() cn phi khai bo chng. Phng thc getName() l hin thc phng thc tru tng trong lp cha, nu phng thc getName() khng khai bo trong lp Cylinder th n s k tha t lp Circle. Phng thc setHeight dng gn chiu cao mi cho mt i tng hnh tr, cn phng thc getHeight tr v chiu cao ca mt i tng hnh tr. // Test.java // Kim tra tnh k tha ca Point, Circle, Cylinder vi // lp tru tng Shape. // Khai bo th vin import java.text.DecimalFormat; public class Test { // Kim tra tnh k tha ca cc i tng hnh hc public static void main( String args[] ) { // To ra cc i tng hnhhc

    Point point = new Point( 7, 11 ); Circle circle = new Circle( 3.5, 22, 8 ); Cylinder cylinder = new Cylinder( 10, 3.3, 10, 10 );

    // To mt mng cc i tng hnh hc Shape arrayOfShapes[] = new Shape[ 3 ];

    // arrayOfShapes[ 0 ] l mt i tng Point arrayOfShapes[ 0 ] = point; // arrayOfShapes[ 1 ] l mt i tng Circle arrayOfShapes[ 1 ] = circle; // arrayOfShapes[ 2 ] l mt i tng cylinder arrayOfShapes[ 2 ] = cylinder;

    // Ly tn v biu din ca mi i tng hnh hc

  • 73

    String output = point.getName() + ": " + point.toString() + "\n" + circle.getName() + ": " + circle.toString() + "\n" + cylinder.getName() + ": " + cylinder.toString();

    DecimalFormat precision2 = new DecimalFormat( "0.00" );

    // duyt mng arrayOfShapes ly tn, din tch, th tch // ca mi i tng hnh hc trong mng. for ( int i = 0; i < arrayOfShapes.length; i++ ) {

    output += "\n\n" + arrayOfShapes[ i ].getName() + ": " + arrayOfShapes[ i].toString() + "\n Area = " + precision2.format( arrayOfShapes[ i ].area() ) + "\nVolume = " + precision2.format( arrayOfShapes[ i ].volume() );

    } System.out.println(output);

    System.exit( 0 ); } } // end class Test Kt qu thc thi chng trnh:

  • 74

    V d 2: Tng t v d 1 nhng trong v d 2 chng ta dng interface nh ngha cho Shape thay v mt lp tru tng. V vy tt c cc phng thc trong interface Shape phi c hin thc trong lp Point l lp ci t trc tip interface Shape. // nh ngha mt interface Shape trong tp tin shape.java public interface Shape {

    // Tnh din tch public abstract double area(); // Tnh th tch public abstract double volume(); // tr v tn ca shape public abstract String getName();

    } Lp Point ci t/hin thc interface tn shape. // nh ngha lp Point trong tp tin Point.java public class Point extends Object implements Shape {

    protected int x, y; // Ta x, y ca 1 im

    // constructor khng tham s. public Point() {

    setPoint( 0, 0 ); }

    // constructor c tham s. public Point(int xCoordinate, int yCoordinate) {

    setPoint( xCoordinate, yCoordinate );

  • 75

    }

    // gn ta x, y cho 1 im public void setPoint( int xCoordinate, int yCoordinate ) {

    x = xCoordinate; y = yCoordinate;

    }

    // ly ta x ca 1 im public int getX() {

    return x; }

    // ly ta y ca 1 im public int getY() {

    return y; }

    // Th hin ta ca 1 im di dng chui public String toString() {

    return "[" + x + ", " + y + "]"; }

    // Tnh din tch public double area() {

    return 0.0; }

    // Tnh th tch public double volume()

  • 76

    { return 0.0;

    }

    // tr v tn ca i tng shape public String getName() {

    return "Point"; }

    } // end class Point Lp Circle l lp con ca lp Point, v ci t/hin thc gin tip interface tn shape. // nh ngha lp Circle trong tp tin Circle.java public class Circle extends Point { // Dn xut t lpPoint

    protected double radius;

    // constructor khng tham s public Circle() {

    // ngm gi n constructor ca lp cha setRadius( 0 );

    }

    // constructor c tham s public Circle( double circleRadius, int xCoordinate, int yCoordinate ) {

    // gi constructorca lp cha super( xCoordinate, yCoordinate ); setRadius( circleRadius );

    }

  • 77

    // Gn bn knh ca ng trn public void setRadius( double circleRadius ) {

    radius = ( circleRadius >= 0 ? circleRadius:0 ); }

    // Ly bn knh ca ng trn public double getRadius() {

    return radius; }

    // Tnh din tch ng trn Circle public double area() {

    return Math.PI * radius * radius; }

    // Biu din ng trn bng mt chui public String toString() {

    return "Center = " + super.toString() + "; Radius = " + radius;

    }

    // tr v tn ca shape public String getName() {

    return "Circle"; }

    } // end class Circle // nh ngha lp hnh tr Cylinder // trong tp tin Cylinder.java.

  • 78

    public class Cylinder extends Circle { // chiu cao ca Cylinder

    protected double height;

    // constructor khng c tham s public Cylinder() {

    // ngm gi n constructor ca lp cha setHeight( 0 );

    }

    // constructor c tham s public Cylinder( double cylinderHeight, double cylinderRadius, int xCoordinate, int yCoordinate ) {

    // Gi constructor ca lp cha super( cylinderRadius, xCoordinate, yCoordinate );

    setHeight( cylinderHeight );

    }

    // Gn chiu cao cho Cylinder public void setHeight( double cylinderHeight ) {

    height = ( cylinderHeight >= 0 ? cylinderHeight :0 );

    }

    // Ly chiu cao ca Cylinder public double getHeight() {

    return height;

  • 79

    }

    // Tnh din tch xung quanh ca Cylinder public double area() {

    return 2 * super.area() + 2 * Math.PI * radius * height;

    }

    // Tnh th tch ca Cylinder public double volume() {

    return super.area() * height; }

    // Biu din Cylinder bng mt chui public String toString() {

    return super.toString() + "; Height = " + height; }

    // tr v tn ca shape public String getName() {

    return "Cylinder"; }

    } // end class Cylinder // Test.java // Kim tra tnh k tha ca Point, Circle, Cylinder vi // interface Shape. // Khai bo th vin import java.text.DecimalFormat;

  • 80

    public class Test { // Kim tra tnh k tha ca cc i tng hnh hc public static void main( String args[] ) { // To ra cc i tng hnhhc

    Point point = new Point( 7, 11 ); Circle circle = new Circle( 3.5, 22, 8 ); Cylinder cylinder = new Cylinder( 10, 3.3, 10, 10 );

    // To mt mng cc i tng hnh hc Shape arrayOfShapes[] = new Shape[ 3 ];

    // arrayOfShapes[ 0 ] l mt i tng Point arrayOfShapes[ 0 ] = point; // arrayOfShapes[ 1 ] l mt i tng Circle arrayOfShapes[ 1 ] = circle; // arrayOfShapes[ 2 ] l mt i tng cylinder arrayOfShapes[ 2 ] = cylinder;

    // Ly tn v biu din ca mi i tng hnh hc String output = point.getName() + ": " + point.toString() + "\n" + circle.getName() + ": " + circle.toString() + "\n" + cylinder.getName() + ": " + cylinder.toString();

    DecimalFormat precision2 = new DecimalFormat( "0.00" );

    // duyt mng arrayOfShapes ly tn, din tch, th tch // ca mi i tng hnh hc trong mng. for ( int i = 0; i < arrayOfShapes.length; i++ ) {

    output += "\n\n" + arrayOfShapes[ i ].getName() + ": " + arrayOfShapes[ i].toString() +

  • 81

    "\n Area = " + precision2.format( arrayOfShapes[ i ].area() ) + "\nVolume = " + precision2.format( arrayOfShapes[ i ].volume() );

    } System.out.println(output);

    System.exit( 0 ); } } // end class Test Kt qu thc thi chng trnh:

  • 82

    CChhnngg 44:: TTHHIITT KK GGIIAAOO DDIINN NNGGII DDNNGG

    44..11..MM uu Chng ny cung cp cho sinh vin nhng kin thc c bn xy dng giao din (Graphic User Interface - GUI) ca chng trnh ng dng bng ngn ng java:

    - Nhng nguyn tc thit k giao din. - Nhng th vin, gi xy dng giao din: gm nhng lp

    (class), nhng giao tip (interface) qun l s kin v nhng thnh phn (components) xy dng nn giao din ngi dng.

    - B qun l trnh by (layout managers) - X l s kin

    Trong khun kh gio trnh lp trnh java cn bn ny chng ti trnh by vic thit k GUI dng th vin awt (abstract windows toolkit). Vic thit kt GUI s trc quan, uyn chuyn hn khi chng ta s dng th vin JFC (Java Foundation Class) s gii c gii thiu trong chuyn java nng cao.

  • 83

    44..22..GGiiii tthhiiuu tthh vviinn aawwtt Th vin awt l b th vin dng xy dng giao din ngi dng cho mt chng trnh ng dng c y cc thnh phn c bn nh: Label, Button, Checkbox, Radiobutton, Choice, List, Text Field, Text Area, Scrollbar, Menu, Frame Ging nh cc API ca Windows, java cung cp cho ngi lp trnh th vin awt. Nhng khc vi cc hm API, th vin awt khng ph thuc h iu hnh. Th vin awt l nn tng, c s gip cho chng ta tip cn vi th vin m rng JFC hiu qu hn. Cu trc cy phn cp ca tt c nhng lp trong th vin awt chng ta c th xem chi tit trong ti liu km theo b cng c j2se (phn API Specification)

    44..33..CCcc kkhhii nniimm cc bbnn 44..33..11..CCoommppoonneenntt Component l mt i tng c biu din ha c hin th trn mn hnh m ngi dng c th tng tc c. Chng

  • 84

    hn nh nhng nt nhn (button), nhng checkbox, nhng scrollbar, Lp Component l mt lp tru tng.

    java.lang.Object java.awt.Component

    44..33..22..CCoonnttaaiinneerr Container l i tng vt cha hay nhng i tng c kh nng qun l v nhm cc i tng khc li. Nhng i tng con thuc thnh phn awt nh: button, checkbox, radio button, scrollbar, list, ch s dng c khi ta a n vo khung cha (container). Mt s i tng container trong Java:

    Panel: i tng khung cha n gin nht, dng nhm cc i tng, thnh phn con li. Mt Panel c th cha bn trong mt Panel khc. java.lang.Object +--java.awt.Component +--java.awt.Container +--java.awt.Panel

    Frame: khung cha Frame l mt ca s window hn hoi mc trn cng bao gm mt tiu u v mt ng bin (border) nh cc ng dng windows thng thng khc. Khung cha Frame thng c s dng to ra ca s chnh ca cc ng dng. java.lang.Object +--java.awt.Component +--java.awt.Container +--java.awt.Window +--java.awt.Frame

    Dialogs: y l mt ca s dng hp hi thoi (ca s dng ny cn c gi l pop-up window), ca s dng ny thng c dng a ra thng bo, hay dng ly d liu nhp t ngoi vo thng qua cc i tng, thnh phn trn dialog nh TextField chng hn. Dialog

  • 85

    cng l mt ca s nhng khng y chc nng nh i tng khung cha Frame. java.lang.Object +--java.awt.Component +--java.awt.Container +--java.awt.Window +--java.awt.Dialog

    ScrollPanes: l mt khung cha tng t khung cha Panel, nhng c thm 2 thanh trt gip ta t chc v xem c cc i tng ln chon nhiu ch trn mn hnh nh nhng hnh nh hay vn bn nhiu dng. java.lang.Object +--java.awt.Component +--java.awt.Container +--java.awt.ScrollPane

    44..33..33..LLaayyoouutt MMaannaaggeerr Khung cha container nhn cc i tng t bn ngoi a vo v n phi bit lm th no t chc sp xp ch cho cc i tng . Mi i tng khung cha u c mt b qun l chu trch nhim thc hin cng vic y l b qun l trnh by (Layout Manager). Cc b qun l trnh by m th vin AWT cung cp cho ta bao gm:

    FlowLayout: Sp xp cc i tng t tri qua phi v t trn xung di. Cc i tng u gi nguyn kch thc ca mnh.

    BorderLayout: Cc i tng c t theo cc ng vin ca khung cha theo cc cnh West, East, South, North v Center tc ng, Ty, Nam, Bc v Trung tm hay Tri, Phi, Trn, Di v Gia ty theo cch nhn ca chng ta.

    GridLayout: To mt khung li v hnh vi cc bng nhau. Cc i tng s t va kch thc vi

  • 86

    tng . Th t sp xp cng t tri qua phi v t trn xung di.

    GridBagLayout: Tng t nh GridLayout, cc i tng khung cha cng c a vo mt li v hnh. Tuy nhin kch thc cc i tng khng nht thit phi va vi 1 m c th l 2, 3 hay nhiu hn ty theo cc rng buc m ta ch nh thng qua i tng GridBagConstraint.

    Null Layout: Cch trnh by t do. i vi cch trnh by ny ngi lp trnh phi t ng lm tt c t vic nh kch thc ca cc i tng, cng nh xc nh v tr ca n trn mn hnh. Ta khng ph thuc vo nhng rng buc ng, ty , nam, bc g c.

    44..44..TThhiitt kk GGUUII cchhoo cchhnngg ttrrnnhh 44..44..11..TToo kkhhuunngg cchhaa ccaa ss cchhnngg ttrrnnhh Thng thng to ca s chnh cho chng trnh ng dng ta tin hnh cc bc:

    - To i tng Frame - Xc nh kch thc ca Frame - Th hin Frame trn mn hnh

    V d: import java.awt.*; class FrameDemo {

    public static void main(String args[]) {

    // To i tng khung chaFrame Frame fr = new Frame("My First Window") ; // Xc nh kch thc, v tr ca Frame fr.setBounds(0, 0, 640, 480);

    // Hin th Frame

  • 87

    fr.setVisible(true); } }

    Kt qu thc thi chng trnh:

    44..44..22..TToo hh tthhnngg tthhcc nn i vi th vin awt, xy dng h thng thc n cho chng trnh ng dng chng ta c th dng cc lp MenuBar, Menu, MenuItem, MenuShortcut. V d: To h thng thc n cho chng trnh Calculator import java.awt.*; import java.awt.event.*; class Calculator { public static void main(String[] args) {

    Menu

    MenuBar

    MenuItem

  • 88

    createMenu(); } private static void createMenu() {

    // Tao Frame ung dung final Frame fr = new Frame(); fr.setLayout(new BorderLayout()); // Tao cac menu bar MenuBar menu = new MenuBar(); Menu menuFile = new Menu("Edit");

    MenuItem copyItem = new MenuItem("Copy Ctrl+C"); MenuItem pasteItem = new MenuItem("Paste Ctrl+V");

    menuFile.add(copyItem); menuFile.add(pasteItem); Menu menuHelp = new Menu("Help");

    MenuItem hTopicItem = new MenuItem("Help Topics"); MenuItem hAboutItem = new MenuItem("About Calculator");

    menuHelp.add(hTopicItem); menuHelp.addSeparator(); menuHelp.add(hAboutItem); menu.add(menuFile); menu.add(menuHelp);

    fr.setMenuBar(menu);

    fr.setBounds(100, 100, 300, 200); fr.setTitle("Calculator"); //fr.setResizable(false); fr.setVisible(true); // x l bin s kin ng ca s ng dng. fr.addWindowListener(

  • 89

    new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } } Kt qu thc thi chng trnh:

    44..44..33..GGnn CCoommppoonneenntt vvoo kkhhuunngg cchhaa gn mt thnh phn, mt i tng component vo mt ca s (khung cha) chng ta dng phng thc add ca i tng khung cha container. V d:

    import java.awt.*; class AddDemo { public static void main(String args[]) { // To i tng khung chaFrame Frame fr = new Frame("AddDemo App"); // To i tng Component

  • 90

    Button buttOk = new Button(OK); // Gn i tng nt nhn vo khung cha fr.add(buttOk); // Xc nh kch thc, v tr ca Frame fr.setSize(100, 100);

    // Hin th Frame fr.setVisible(true); }

    }} Kt qu thc thi chng trnh:

    44..44..44..TTrrnnhh bbyy cccc CCoommppoonneenntt ttrroonngg kkhhuunngg cchhaa Nh chng ta bit khung cha container nhn cc i tng t bn ngoi a vo v n phi bit lm th no t chc sp xp ch cho cc i tng . Mi i tng khung cha u c mt b qun l chu trch nhim thc hin cng vic y l b qun l trnh by (Layout Manager). Chng ta s tm hiu chi tit v cc kiu trnh by ca th vin AWT. Interface LayoutManager nh ngha giao tip cho nhng lp bit c lm th no trnh by nhng trong nhng containers 4.4.4.1 FlowLayout public class FlowLayout extends Object

  • 91

    implements LayoutManager, Serializable i vi mt container trnh by theo kiu FlowLayout th:

    Cc component gn vo c sp xp theo th t t tri sang phi v t trn xung di.

    Cc component c kch thc nh mong mun. Nu chiu rng ca Container khng ch cho cc

    component th chng t ng to ra mt dng mi. FlowLayout thng c dng sp xp cc button

    trong 1 panel. Chng ta c th iu chnh khong cch gia cc

    component. V d: import java.awt.*; import java.lang.Integer; class FlowLayoutDemo { public static void main(String args[]) { Frame fr = new Frame("FlowLayout Demo"); fr.setLayout(new FlowLayout()); fr.add(new Button("Red")); fr.add(new Button("Green")); fr.add(new Button("Blue")); List li = new List(); for (int i=0; i

  • 92

    fr.add(new TextField(20)); // phng thc pack() c gi s lm cho ca s

    // hin hnh s c kch thc va vi kch thc // trnh by b tr nhng thnh phn con ca n.

    fr.pack(); fr.setVisible(true); } } Kt qu thc thi chng trnh:

    4.4.4.2 BorderLayout public class BorderLayout extends Object

    implements LayoutManager2, Serializable i vi mt container trnh by theo kiu BorderLayout th:

    B trnh by khung cha c chia lm 4 vng: NORTH, SOUTH, WEST, EAST v CENTER. (ng, Ty, Nam, Bc v trung tm). B trnh by loi ny cho php sp xp v thay i kch thc ca nhng components cha trong n sao cho va vi 5 vng NG, TY, NAM, BC, TRUNG TM.

    Khng cn phi gn component vo cho tt c cc vng. Cc component vng NORTH v SOUTH c chiu

    cao ty nhng c chiu rng ng bng chiu rng vng cha.

    Cc component vng EAST v WEST c chiu rng ty nhng c chiu cao ng bng chiu cao vng cha.

    Cc component vng CENTER c chiu cao v chiu rng ph thuc vo cc vng xung quanh.

  • 93

    V d: import java.awt.*; class BorderLayoutDemo extends Frame { private Button north, south, east, west, center; public BorderLayoutDemo(String sTitle) { super(sTitle); north = new Button("North"); south = new Button("South"); east = new Button("East"); west = new Button("West"); center = new Button("Center"); this.add(north, BorderLayout.NORTH); this.add(south, BorderLayout.SOUTH); this.add(east, BorderLayout.EAST); this.add(west, BorderLayout.WEST); this.add(center, BorderLayout.CENTER); } public static void main(String args[]) { Frame fr = new BorderLayoutDemo ("BorderLayout

    Demo"); fr.pack(); fr.setVisible(true); } } Kt qu thc thi chng trnh:

  • 94

    4.4.4.3 GridLayout public class GridLayout extends Object

    implements LayoutManager i vi mt container trnh by theo kiu GridLayout th:

    B trnh by to mt khung li v hnh vi cc bng nhau.

    Cc i tng s t va kch thc vi tng . Th t sp xp t tri qua phi v t trn xung di.

    V d: import java.awt.*; public class GridLayoutDemo { public static void main(String arg[]) { Frame f = new Frame("GridLayout Demo"); f.setLayout(new GridLayout(3,2)); f.add(new Button("Red")); f.add(new Button("Green")); f.add(new Button("Blue")); f.add(new Checkbox("Pick me", true)); f.add(new Label("Enter name here:"));

  • 95

    f.add(new TextField()); f.pack(); f.setVisible(true); } } Kt qu thc thi chng trnh:

    4.4.4.4 GridBagLayout public class GridBagLayout extends Object

    implements LayoutManager2 (public interface LayoutManager2 extends LayoutManager)

    i vi mt container trnh by theo kiu GridBagLayout th: Cc componets khi c a vo khung cha s c

    trnh by trn 1 khung li v hnh tng t nh GridLayout. Tuy nhin khc vi GridLayout kch thc cc i tng khng nht thit phi va vi 1 trn khung li m c th l 2, 3 hay nhiu hn ty theo cc rng buc m ta ch nh thng qua i tng GridBagConstraints.

    Lp GridBagConstraints dn xut t lp Object. Lp GridBagConstraints dng ch nh rng buc cho nhng components trnh by trong khung cha container theo kiu GridBagLayout.

    o gridx, gridy: v tr ca khung li v hnh m ta s a i tng con vo

  • 96

    o gridwidth, gridheight: kch thc hay vng trnh by cho i tng con.

    o Insets: l mt bin i tng thuc lp Inset dng qui nh khong cch bin phn cch theo 4 chiu (trn, di, tri, phi).

    o weightx, weighty: ch nh khong cch ln ra tng i ca cc i tng con vi nhau

    V d: import java.awt.*; public class GridBagLayoutDemo { public static void main(String arg[]) { Frame f = new Frame("GridBagLayout Demo"); // Thiet lap layout manager

    // Tao doi tuong rang buoc cho cach trinh bay // GridBagLayout.

    GridBagLayout layout = new GridBagLayout(); GridBagConstraints constraints = new GridBagConstraints();

    f.setLayout(layout); // Tao ra 9 nut nhan

    String[] buttName = {"Mot", "Hai", "Ba", "Bon", "Nam", "Sau", "Bay", "Tam", "Chin"};

    Button[] buttons = new Button[9]; for(int i=0;i

  • 97

    constraints.insets = new Insets(2,2,2,2); // Qui dinh cac nut nhan se thay doi kich thuoc // theo ca 2 chieu constraints.fill = GridBagConstraints.BOTH; // Rang buoc cho nut nhan thu 1 constraints.gridx = 1; constraints.gridy = 1; constraints.gridheight = 2; constraints.gridwidth = 1; layout.setConstraints(buttons[0], constraints); // Rang buoc cho nut nhan thu 2 constraints.gridx = 2; constraints.gridy = 1; constraints.gridheight = 1; constraints.gridwidth = 2; layout.setConstraints(buttons[1], constraints); // Rang buoc cho nut nhan thu 3 constraints.gridx = 2; constraints.gridy = 2; constraints.gridheight = 1; constraints.gridwidth = 1; layout.setConstraints(buttons[2], constraints); // Rang buoc cho nut nhan thu 4 constraints.gridx = 1; constraints.gridy = 3; constraints.gridheight = 1; constraints.gridwidth = 2; layout.setConstraints(buttons[3], constraints); // Rang buoc cho nut nhan thu 5

  • 98

    constraints.gridx = 3; constraints.gridy = 2; constraints.gridheight = 2; constraints.gridwidth = 1; layout.setConstraints(buttons[4], constraints); // Rang buoc cho nut nhan thu 6 constraints.gridx = 4; constraints.gridy = 1; constraints.gridheight = 3; constraints.gridwidth = 1; layout.setConstraints(buttons[5], constraints); // Tu nut thu 7 tro di khong can rang buoc // thay vi doi kich thuoc constraints.fill = GridBagConstraints.NONE; // Rang buoc cho nut nhan thu 7 constraints.gridx = 1; constraints.gridy = 4; constraints.gridheight = 1; constraints.gridwidth = 1; constraints.weightx = 1.0; layout.setConstraints(buttons[6], constraints); // Rang buoc cho nut nhan thu 8 constraints.gridx = 2; constraints.gridy = 5; constraints.gridheight = 1; constraints.gridwidth = 1; constraints.weightx = 2.0; layout.setConstraints(buttons[7], constraints); // Rang buoc cho nut nhan thu 9 constraints.gridx = 3;

  • 99

    constraints.gridy = 6; constraints.gridheight = 1; constraints.gridwidth = 1; constraints.weightx = 3.0; layout.setConstraints(buttons[8], constraints); // Dua cac nut nhan khung chua chuong trinh for (int i=0;i

  • 100

    Mt s phng thc ca lp tru tng Component dng nh v v qui nh kch thc ca component khi a chng vo khung cha trnh by theo kiu kiu t do: o Public void setLocation(Point p) o Public void setSize(Dimension p) o Public void setBounds(Rectangle r) V d: o MyButton.setSize(new Dimension(20, 10)); o MyButton.setLocation(new Point(10, 10)); o MyButton.setBounds(10, 10, 20, 10); import java.awt.*; class NullLayoutDemo { public static void main(String args[]) { Frame fr = new Frame("NullLayout Demo"); fr.setLayout(null); Button buttOk = new Button("OK"); buttOk.setBounds(100, 150, 50, 30); Button buttCancel = new Button("Cancel"); buttCancel.setBounds(200, 150, 50, 30);

    Checkbox checkBut = new Checkbox("Check box", true);

    checkBut.setBounds(100, 50, 100, 20); List li = new List(); for (int i=0; i

  • 101

    fr.add(checkBut); fr.add(li); fr.setBounds(10, 10, 400, 200); fr.setVisible(true); } } Kt qu thc thi chng trnh:

    44..44..55..CCcc ii ttnngg kkhhuunngg cchhaa CCoonnttaaiinneerr

    Nh chng ta bit container l i tng khung cha c kh nng qun l v cha cc i tng (components) khc trong n.

    Cc components ch c th s dng c khi a n vo 1 i tng khung cha l container.

    Mi container thng gn vi mt LayoutManager (FlowLayout, BorderLayout, GridLayout, GridBagLayout, Null Layout) qui nh cch trnh by v b tr cc components trong mt container.

    Cc lai container trong java: Frame, Panel, Dialog, ScrollPanes.

  • 102

    4.4.5.1 Khung cha Frame java.lang.Object +--java.awt.Component +--java.awt.Container +--java.awt.Window +--java.awt.Frame

    Khung cha Frame l mt ca s window hn hoi mc trn cng bao gm mt tiu u v mt ng bin (border) nh cc ng dng windows thng thng khc. Khung cha Frame thng c s dng to ra ca s chnh ca cc ng dng. Khung cha Panel c b qun l trnh by (LayoutManager) mc nh l FlowLayout. 4.4.5.2 Khung cha Panel

    java.lang.Object +--java.awt.Component +--java.awt.Container +--java.awt.Panel

    Khung cha Panel c b qun l trnh by (LayoutManager) mc nh l FlowLayout.

    i vi khung cha Panel th cc Panel c th lng vo nhau, v vy khung cha Panel thng c dng b tr cc nhm components bn trong mt khung cha khc. V d: import java.awt.*; public class PanelDemo extends Frame { private Button next, prev, first; private List li;