You are on page 1of 239

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

M CL C
M C L C ................................................................................................................... 1 Chng 1 ..................................................................................................................... 8 L P TRNH H NG I T NG .......................................................................... 8 i t ng .............................................................. 8 1.1. Gi i thi u v L p trnh h ng

1.2. Tr u t ng ha d li u ....................................................................................... 10 1.3. L p ..................................................................................................................... 13 1.4. i t ng............................................................................................................ 14 ng ..................................................................................................... 16 1.4.1. Thu c tnh .................................................................................................... 15 1.4.2. Ho t 1.4.3. Phng th c ................................................................................................. 16 1.4.4. Thng i p.................................................................................................... 17 1.4.5. S ki n ......................................................................................................... 17 1.5. L p v i t ng ................................................................................................ 18 1.6. Thi t l p v H y ................................................................................................. 18 1.6.1. Thi t l p ....................................................................................................... 18 1.6.2. H y............................................................................................................... 18 1.7. Tnh B n v ng .................................................................................................... 19 1.8 Tnh ng gi d li u .......................................................................................... 19 1.9. Tnh th a k ........................................................................................................ 20 1.10. Tnh a hnh ..................................................................................................... 23 1.11. Nh ng u i m c a Phng php h ng i t ng ......................................... 24 Tm t t bi h c .......................................................................................................... 25 Ki m tra s ti n b .................................................................................................... 26 Bi t p ....................................................................................................................... 26 Chng 2 ................................................................................................................... 27 NH P MN JAVA ................................................................................................... 27 2.1. Gi i thi u Java .................................................................................................... 27 2.2. Cc c trng c a Java........................................................................................ 28 i t ng .......................................................................................... 28 i u hnh............................................................... 28 2.2.1. n gi n ....................................................................................................... 28 2.2.2. H ng 2.2.3. c l p ph n c ng v h

Khoa Cng ngh Thng tin

ih c L t

Trang 1

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

2.2.4. M nh m ....................................................................................................... 29 2.2.5. B o m t ........................................................................................................ 30 2.2.6. Phn tn ........................................................................................................ 30 2.2.7. a lu ng ....................................................................................................... 30 2.2.8. ng............................................................................................................. 30 2.3. Cc ki u chng trnh Java ................................................................................. 31 2.3.1. Applets ......................................................................................................... 31 2.3.2. 2.3.3. 2.3.5. ng d ng th c thi qua dng l nh .................................................................. 31 ng d ng h a .......................................................................................... 31

2.3.4. Servlet .......................................................................................................... 31 ng d ng c s d li u ................................................................................. 31 2.4. My o Java (JVM-Java Virtual Machine) .......................................................... 31 2.4.1. My o Java l g ? ....................................................................................... 32 2.4.2. Qu n l b nh v d n rc ............................................................................ 33 2.4.3. Qu trnh ki m tra file .class ........................................................................ 33 2.5. B cng c pht tri n JDK (Java Development Kit) ............................................ 34 Trnh bin d ch, 'javac'............................................................................................ 34 Trnh thng d ch, 'java' ........................................................................................... 35 Trnh d ch ng c, 'javap' ........................................................................................ 35 Cng c sinh ti li u, 'javadoc'................................................................................ 35 Chng trnh tm l i - Debug, 'jdb......................................................................... 35 Chng trnh xem Applet , 'appletviewer .............................................................. 35 2.6. Java Core API ..................................................................................................... 35 java.lang ................................................................................................................. 35 java.applet .............................................................................................................. 35 java.awt .................................................................................................................. 35 java.io .................................................................................................................... 36 java.util .................................................................................................................. 36 java.net ................................................................................................................... 36 java.awt.event......................................................................................................... 36 java.rmi .................................................................................................................. 36 java.security ........................................................................................................... 36 java.sql ................................................................................................................... 36
Khoa Cng ngh Thng tin ih c L t

Trang 2

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

2.7. Cc

c trng m i c a Java 2.............................................................................. 36

Swing ..................................................................................................................... 36 Ko v th .............................................................................................................. 36 Java 2D API ........................................................................................................... 37 Java sound .............................................................................................................. 37 RMI........................................................................................................................ 37 Tm t t ...................................................................................................................... 38 Ki m tra s ti n b .................................................................................................... 38 Bi t p ....................................................................................................................... 38 Chng 3 ................................................................................................................... 39 N N T NG C A NGN NG 3.2 Chng trnh JAVA 3.4 Cc l p JAVA ..................................................................... 39 3.1 C u trc m t chng trnh Java ........................................................................... 39 u tin ............................................................................... 40 3.3 C b n v ngn ng Java ..................................................................................... 44 i t ng trong Java ............................................................................... 44 3.5 Ki u d li u ......................................................................................................... 46 3.6 Cc bi n ............................................................................................................... 48 3.7 Phng th c trong m t l p .................................................................................. 50 3.8 Cc ton t ........................................................................................................... 55 3.9 nh d ng d li u xu t dng chu i thot .............................................................. 63 3.10 i u khi n lu ng................................................................................................ 63 Tm t t bi h c .......................................................................................................... 69 Ki m tra s ti n b .................................................................................................... 71 Bi t p ....................................................................................................................... 72 Chng 4: .................................................................................................................. 73 CC GI & GIAO DI N.......................................................................................... 73 4.1 Gi i thi u ............................................................................................................. 73 4.2 Cc giao di n ....................................................................................................... 73 4.3 Cc gi ................................................................................................................ 75 4.3.1 T o m t gi ................................................................................................... 77 4.3.2 Thi t l p ng d n cho l p .......................................................................... 79 4.4 Gi v i u khi n truy xu t .................................................................................. 81 4.5 Gi java.lang........................................................................................................ 82
Khoa Cng ngh Thng tin ih c L t

Trang 3

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

4.5.1 L p String ..................................................................................................... 83 4.5.2 Chu i m c nh ............................................................................................. 84 4.5.3 Cc phng th c c a l p String ..................................................................... 85 4.5.4 L p StringBuffer ........................................................................................... 87 4.5.5 Cc phng th c l p StringBuffer ................................................................. 89 4.5.6 L p java.lang.Math ........................................................................................ 91 4.5.7 L p Runtime.................................................................................................. 93 4.5.8 L p System ................................................................................................... 94 4.5.9 L p Class....................................................................................................... 96 4.5.10 L p Object................................................................................................... 97 4.6 Gi java.util ......................................................................................................... 98 4.6.1 L p Hashtable ............................................................................................... 98 4.6.2 L p Random ................................................................................................ 101 4.6.3 L p Vector .................................................................................................. 102 4.6.4 L p StringTokenizer .................................................................................... 105 Tm t t bi h c ........................................................................................................ 108 Ki m tra s ti n b .................................................................................................. 109 Bi t p ..................................................................................................................... 110 Chng 5 ................................................................................................................. 111 AWT ....................................................................................................................... 111 5.1 Gi i thi u v AWT ............................................................................................ 111 5.2 Container ........................................................................................................... 112 5.2.1 Frame .......................................................................................................... 112 5.2.2 Panel............................................................................................................ 113 5.2.3 Dialog .......................................................................................................... 115 5.3 Thnh ph n (Component) .................................................................................. 115 5.3.1 Nhn (Label) ............................................................................................... 116 5.3.2 vn b n (TextField) .................................................................................. 117 5.3.3 Vng vn b n (TextArea) ............................................................................ 119 5.3.4 Button (nt n)............................................................................................. 120 5.3.5 Checkbox v RadioButton ........................................................................... 122 5.3.6 Danh sch ch n l a (Choice List) ................................................................ 124 5.4 Qu n l cch trnh by (Layout manager) .......................................................... 126
Khoa Cng ngh Thng tin ih c L t

Trang 4

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

5.4.2 BorderLayout Manager ................................................................................ 128 5.4.3 CardLayout Manager ................................................................................... 129 5.4.4. GridLayout Manager .................................................................................. 132 5.4.5 GridBagLayout Manager ............................................................................. 133 5.5 X l cc s ki n ............................................................................................... 139 5.6 Th c n (menu) ............................................................................................... 145 5.7 L p Graphics ..................................................................................................... 149 5.7.1 V cc chu i, cc k t v cc byte.............................................................. 150 5.7.2 V ng th ng v hnh Oval ...................................................................... 152 5.7.3 V hnh ch nh t v hnh ch nh t bo gc ................................................... 153 5.7.4 V hnh ch nh t 3D v v cung ................................................................. 154 5.7.5 V hnh PolyLine ......................................................................................... 155 5.7.6 V v t a gic ........................................................................................... 156 5.8 i u khi n mu .................................................................................................. 158 5.9 i u khi n Font ................................................................................................. 159 5.10 L p FontMetric ................................................................................................ 161 5.11 Ch n ch v ............................................................................................ 165 Tm t t .................................................................................................................... 167 Ki m tra s ti n b .................................................................................................. 168 Bi t p ..................................................................................................................... 169 Chng 6 ................................................................................................................. 171 APPLETS ................................................................................................................ 171 6.1 Java Applet ........................................................................................................ 171 6.2 C u trc c a m t Applet .................................................................................... 171 6.2.1 S khc nhau gia Application v Applet .................................................... 174 6.2.2 Nh ng gi i h n b o m t trn applet ............................................................. 176 6.3 Chu trnh s ng c a m t Applet........................................................................... 176 6.4 Truy n tham s cho Applet ................................................................................ 177 Tm t t .................................................................................................................... 180 Ki m tra s ti n b .................................................................................................. 181 Bi t p ..................................................................................................................... 182 Chng 7 ................................................................................................................. 183 K T N I C S D LI U .................................................................................... 183
ih c L t

Khoa Cng ngh Thng tin

Trang 5

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

7.1. Gi i thi u v JDBC ........................................................................................... 183 7.2. Cc b c l p trnh c s d li u v i JDBC ....................................................... 183 7.2.1. K t n i c s d li u ................................................................................... 183 7.2.2. T o truy v n v l y k t qu truy v n ........................................................... 186 Tm t t bi h c ........................................................................................................ 191 Bi t p ..................................................................................................................... 192 Chng 8 ................................................................................................................. 193 DNG NH P/XU T (I/O Stream) ......................................................................... 193 8.1. Gi i thi u .......................................................................................................... 193 8.2. Stream .............................................................................................................. 193 8.3. Gi java.io ........................................................................................................ 194 8.3.1. L p InputStream ......................................................................................... 194 8.3.2. L p OutputStream ...................................................................................... 195 8.3.3. Vo ra m ng byte........................................................................................ 195 8.3.4. T p tin nh p xu t ........................................................................................ 197 8.3.5. Nh p xu t l c.............................................................................................. 200 8.3.7. L p Reader v Writer ................................................................................. 203 8.3.8. Nh p/ xu t chu i v xu k t .................................................................... 204 8.3.9. L p PrinterWriter ....................................................................................... 207 8.3.10. Giao di n DataInput .................................................................................. 207 8.3.11. Giao di n DataOutput ............................................................................... 208 Gi java.awt.print .................................................................................................... 210 Tm t t bi h c ........................................................................................................ 212 Ki m tra m c ti n b .......................................................................................... 213 Bi t p ..................................................................................................................... 214 Chng 9 ................................................................................................................. 215 X L NGO I L ................................................................................................. 215 9.1. Gi i thi u .......................................................................................................... 215 9.2. M c ch c a vi c x l ngo i l ....................................................................... 215 9.3. X l ngo i l ................................................................................................... 215 9.4. M hnh x l ngo i l ...................................................................................... 216 9.4.1. Cc u i m c a m hnh catch v throw ................................................. 217 9.4.2. Cc kh i try v catch ............................................................................. 217
Khoa Cng ngh Thng tin ih c L t

Trang 6

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

9.5. Cc kh i ch a nhi u Catch................................................................................ 218 9.6. Kh i finally .................................................................................................... 220 9.7. Cc ngo i l c nh ngha v i l nh throw v throws ............................... 223 9.8. Danh sch cc ngo i l ...................................................................................... 225 Tm t t .................................................................................................................... 227 Ki m tra s ti n b .................................................................................................. 227 Bi t p ..................................................................................................................... 228 Chng 10 ............................................................................................................... 229 CI T B O M T .............................................................................................. 229 10.1. Gi i thi u ........................................................................................................ 229 10.2. Cng c JAR................................................................................................... 229 10.4. Kho b o m t Java .......................................................................................... 232 10.5. Ch ng ch s ................................................................................................... 235 10.6. Cc gi b o m t Java ...................................................................................... 236 Tm t t .................................................................................................................... 238 Ki m tra ki n th c ................................................................................................... 238 Bi t p ..................................................................................................................... 239

Khoa Cng ngh Thng tin

ih c L t

Trang 7

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Chng 1

L P TRNH H NG
N i dung chnh
nh ngha L p trnh h ng i t ng. Tr u t ng ha D li u. nh ngha L p. nh ngha i t ng. S khc bi t gi a L p v i t ng. Phng th c Thi t l p v H y. nh ngha tnh B n v ng. nh ngha v tnh ng gi d li u. Tnh Th a k . Tnh a hnh. Nh ng u i m c a phng php h ng 1.1. Gi i thi u v L p trnh h ng i t ng

I T NG

i t ng.

L p trnh h ng i t ng (Object Oriented Programming - OOP) l m t phng php thi t k v pht tri n ph n m m. Nh ng ngn ng OOP khng ch bao g m c php v m t trnh bin d ch m cn c m t mi tr ng pht tri n ton di n. Mi tr ng ny bao g m m t th vi n c thi t k t t, thu n l i cho vi c s d ng cc i t ng. i v i m t ngn ng l p trnh h tr OOP th vi c tri n khai k thu t l p trnh h ng i t ng s d dng hn. K thu t l p trnh h ng i t ng c i ti n vi c pht tri n cc h th ng ph n m m. K thu t y cao nhn t ch c nng v cc m i quan h d li u. OOP l phng th c t duy m i gi i quy t v n b ng my tnh. tk t qu , l p trnh vin ph i n m v n thnh m t th c th quen thu c v i my tnh. Cch ti p c n h ng i t ng cung c p m t gi i php ton v n gi i quy t v n . Hy xem xt m t tnh hu ng c n c tri n khai thnh m t h th ng trn my vi tnh: vi c mua bn xe hi. V n vi tnh ha vi c mua bn xe hi bao g m nh ng g? Nh ng y u t r rng nh t lin quan 1) Cc ki u xe hi. 2) Nhn vin bn hng. 3) Khch hng. Nh ng ho t ng lin quan n vi c mua bn: n vi c mua bn xe hi l:

1) Nhn vin bn hng a khch hng tham quan phng trng by. 2) Khch hng ch n l a m t xe hi. 3) Khch hng t ha n.
Khoa Cng ngh Thng tin ih c L t
Trang 8

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

4) Khch hng tr ti n. 5) Chi c xe c trao cho khch hng. M iv n c chia ra thnh nhi u y u t , c g i l cc i t ng ho c cc Th c th . Ch ng h n nh v d trn, khch hng, xe hi v nhn vin bn hng l nh ng i t ng ho c th c th . L p trnh vin lun lun c g ng t o ra nh ng k ch b n th t quen thu c v i nh ng tnh hu ng th c ti n. B c th nh t trong phng php ny l lm cho my tnh lin k t v i nh ng i t ng th gi i th c. Tuy nhin, my tnh ch l m t c my. N ch th c hi n nh ng cng vi c c l p trnh m thi. V th , trch nhi m c a l p trnh vin l cung c p cho my tnh nh ng thng tin theo cch th c m n cng nh n th c c cng nh ng th c th nh chng ta nh n th c. chnh l vai tr c a k thu t h ng i t ng. Chng ta s d ng k thu t h ng i t ng nh x nh ng th c th chng ta g p ph i trong i s ng th c thnh nh ng th c th tng t trong my tnh. Pht tri n ph n m m theo k thu t l p trnh h ng i t ng c kh nng gi m thi u s l n l n th ng x y ra gi a h th ng v lnh v c ng d ng. L p trnh h ng i t ng c p n d li u v th t c x l d li u theo quan i m l m t i t ng duy nh t. L p trnh h ng i t ng xem xt d li u nh l m t th c th hay l m t n v c l p, v i b n ch t ring v nh ng c tnh c a th c th y. By gi chng ta hy kh o st nh ng thu t ng i t ng, d li u, v phng th c. C nhi u lo i i t ng khc nhau. Chng ta c th xem cc b ph n khc nhau trong m t c quan l cc i t ng. i n hnh l m t c quan c nh ng b ph n lin quan n vi c qu n tr , n vi c kinh doanh, n vi c k ton, n vi c ti p th M i b ph n c nhn s ring, cc nhn s c giao cho nh ng trch nhi m r rng. M i b ph n cng c nh ng d li u ring ch ng h n nh thng tin c nhn, b ng ki m k, nh ng th th c kinh doanh, ho c b t k d li u no lin quan n ch c nng c a b ph n . R rng l m t c quan c chia thnh nhi u b ph n th vi c qu n tr nhn s v nh ng ho t ng doanh nghi p d dng hn. Nhn s c a c quan i u khi n v x l d li u lin quan n b ph n c a mnh. Ch ng h n nh b ph n k ton ch u trch nhi m v lng b ng i v i c quan. N u m t ng i n v ti p th c n nh ng chi ti t lin quan n lng b ng c a n v mnh, ng i y ch c n lin h v i b ph n k ton. M t ng i c th m quy n trong b ph n k ton s cung c p thng tin c n bi t, n u nh thng tin y c th chia s c. M t ng i khng c th m quy n t m t b ph n khc th khng th truy c p d li u, ho c khng th thay i lm h h ng d li u. V d ny minh ch ng r ng cc i t ng l h u d ng trong vi c phn c p v t ch c d li u. Hnh 1.1 Minh h a c u trc c a m t c quan i n hnh.

Khoa Cng ngh Thng tin

ih c L t

Trang 9

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Phng Nhn s

Phng K ton

Phng Kinh doanh

Hnh 1.1 Khi ni m v i t ng c th c m r ng n h u h t cc lnh v c i s ng, v hn n a, n th gi i l p trnh. B t k ng d ng no u c th c nh ngha theo thu t ng th c th ho c i t ng t o ra ti n trnh x l m ph ng theo ti n trnh x l m con ng i ngh ra. Phng php gi i quy t top-down (t trn xu ng) cng cn c g i l l p trnh h ng c u trc. N xc nh nh ng ch c nng chnh c a m t chng trnh v nh ng ch c nng ny c phn thnh nh ng n v nh hn cho n m c th p nh t. B ng k thu t ny, cc chng trnh c c u trc theo h th ng phn c p cc module. M i m t module c m t u vo ring v m t u ra ring. Trong m i module, s i u khi n c chi u h ng i xu ng theo c u trc ch khng c chi u h ng i ln. Phng php OOP c g ng qu n l vi c th a k ph c t p trong nh ng v n th c t . lm c vi c ny, phng php OOP che gi u m t vi thng tin bn trong cc i t ng. OOP t p trung tr c h t trn d li u. R i g n k t cc phng th c thao tc trn d li u, vi c ny c xem nh l ph n th a k c a vi c nh ngha d li u. B ng 1.1 minh h a s khc bi t gi a hai phng php: Phng php Top-Down OOP Chng ta s xy d ng m t khch Chng ta s xy d ng m t ta nh 10 t ng s n. v i nh ng dy phng trung bnh, sang tr ng, v m t phng h p l n. Chng ta s thi t k cc t ng l u, cc Chng ta s xy d ng m t khch s n v i phng v phng h p. nh ng thnh ph n trn. B ng 1.1 M t v d v hai phng php gi i quy t OOP v Top-Down 1.2. Tr u t ng ha d li u Khi m t l p trnh vin ph i pht tri n m t chng trnh ng d ng th khng c ngha l ng i y l p t c vi t m cho ng d ng y. Tr c h t, ng i y ph i nghin c u ng d ng v xc nh nh ng thnh ph n t o nn ng d ng. K ti p, ng i y ph i xc nh nh ng thng tin c n thi t v m i thnh ph n. Hy kh o st chng trnh ng d ng cho vi c mua bn xe hi ni trn. Chng trnh ph i xu t ha n cho nh ng xe hi bn cho khch hng. xu t m t ha

Khoa Cng ngh Thng tin

ih c L t

Trang 10

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

n, chng ta c n nh ng thng tin chi ti t v khch hng. V y b c th nh t l xc nh nh ng c tnh c a khch hng. M t vi c tnh g n k t v i khch hng l: Tn. a ch . Tu i. Chi u cao. Mu tc. T danh sch k trn, chng ta xc nh nh ng c tnh thi t y u i v i ng d ng. B i v chng ta ang c p n nh ng khch hng mua xe, v th nh ng chi ti t thi t y u l: Tn. a ch . Cn nh ng chi ti t khc (chi u cao, mu tc ) l khng quan tr ng i v i ng d ng. Tuy nhin, n u chng ta pht tri n m t ng d ng h tr cho vi c i u tra t i ph m th nh ng thng tin ch ng h n nh mu tc l thi t y u. Bn c nh nh ng chi ti t v khch hng, nh ng thng tin sau cng c n thi t: Ki u xe c bn. Nhn vin no bn xe. Bn c nh nh ng c tnh c a khch hng, xe hi v nhn vin bn hng, chng ta cng c n li t k nh ng hnh ng c th c hi n. Cng vi c xu t ha n i h i nh ng hnh ng sau: Nh Nh Nh Nh Xu p tn c a khch hng. p a ch c a khch hng. p ki u xe. p tn c a nhn vin bn xe. t ha n v i nh d ng i h i. ng lin

Khung thng tin bn d i cho th y nh ng thu c tnh v nh ng hnh quan n m t ha n: Cc thu c tnh Tn c a khch hng a ch c a khch hng Ki u xe bn Nhn vin bn xe Cc hnh ng Nh p tn Nh p a ch Nh p ki u xe

Khoa Cng ngh Thng tin

ih c L t

Trang 11

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Nh p tn nhn vin bn xe Xu t ha n nh ngha: S tr u t ng ha d li u l qu trnh xc nh v nhm cc thu c tnh v cc hnh ng lin quan n m t th c th c th , xt trong m i tng quan v i ng d ng ang pht tri n. Ti p theo, chng ta mu n ng d ng tnh ton ti n hoa h ng cho nhn vin bn hng. Nh ng thu c tnh lin k t v i nhn vin bn hng c tng quan v i ng d ng ny l: Tn. S l ng xe bn c. Ti n hoa h ng. Nh ng hnh ng i bu c i v i cng vi c ny l:

Nh p tn nhn vin bn xe. Nh p s l ng xe bn c. Tnh ti n hoa h ng ki m c. Nh ng thu c tnh Tn S l ng xe bn c Ti n hoa h ng Nh ng hnh ng Nh p tn Nh p s l ng xe bn c Tnh ti n hoa h ng Nh th , vi c tr u t ng ha d li u tra t ra cu h i u l nh ng thu c tnh v nh ng hnh ng c n thi t cho m t v n t ra? Nh ng u i m c a vi c Tr u t ng ha Nh ng u i m c a vi c Tr u t ng ha l: T p trung vo v n . Xc nh nh ng c tnh thi t y u v nh ng hnh Gi m thi u nh ng chi ti t khng c n thi t. ng c n thi t.

Vi c tr u t ng ha d li u l c n thi t, b i v khng th m ph ng t t c cc hnh ng v cc thu c tnh c a m t th c th . V n m u ch t l t p trung n nh ng hnh vi c t y u v p d ng chng trong ng d ng. Ch ng h n nh khch hng ho c nhn vin bn hng cng c th th c hi n nh ng hnh ng sau:

Khoa Cng ngh Thng tin

ih c L t

Trang 12

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Ng i y i l i. Ng i y ni chuy n. Tuy nhin, nh ng hnh ng ny khng lin quan t ng ha d li u s lo i b chng. 1.3. L p Trong ng d ng mua bn xe, chng ta xc nh cc thu c tnh v cc hnh ng c n c xu t m t ha n cho m t khch hng. Cc hnh ng v cc thu c tnh ny l chung cho m i khch hng mua xe. V th , chng c th c nhm l i trong m t th c th n nh t g i l m t l p. Hy kh o st l p c tn l khch hng d i y. L p ny bao g m m i thu c tnh v hnh ng i h i i v i m t khch hng. L p Khch hng Tn khch hng a ch khch hng Ki u xe c bn Nhn vin bn xe Nh p tn Nh p a ch Nh p ki u xe c bn Nh p tn nhn vin bn xe Xu t ha n nh nghatng ng ng chung. t o n ng d ng. Vi c tr u

nh ngha: c 3 1. M t l p

nh ngha m t th c th theo nh ng thu c tnh v nh ng hnh

2. Nh ng thu c tnh v nh ng hnh ng chung c a m t th c th nn m t n v duy nh t g i l m t l p. 3. M t l p l m t s xc

c nhm l i

nh c p ch ng lo i c a cc th c th gi ng nhau.

M t l p l m t m hnh khi ni m v m t th c th . N mang tnh cch t ng qut ch khng mang tnh cch c th. Khi nh ngha m t l p, chng ta mu n pht bi u r ng m t l p s ph i c m t t p h p cc thu c tnh v cc hnh ng ring. Ch ng h n nh m t nh ngha l p d i y: L p Con ng i Tn Chi u cao Mu tc Vi t Ni L p ny nh ngha th c th Con ng i. M i th c th thu c ki u Con ng i u c nh ng c tnh v nh ng hnh ng nh c nh ngha. M t khi m t

Khoa Cng ngh Thng tin

ih c L t

Trang 13

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

l p c nh ngha, chng ta bi t c nh ng thu c tnh v nh ng hnh ng c a nh ng th c th trng gi ng nh l p ny. V th , t b n ch t m t l p l m t nguyn m u. M t v d khc v m t l p lin quan n vi c mua bn xe hi nh sau: L p Nhn vin bn hng Tn S l ng xe bn c Ti n hoa h ng Nh p tn Nh p s l ng xe bn c Tnh ti n hoa h ng nh ngha cc thu c tnh v cc hnh

L p trn vin bn xe hi. 1.4. i t ng

ng

c trng cho m i nhn

M t l p l m t nguyn m u phc h a nh ng thu c tnh v nh ng hnh ng c th c a m t th c th . c th s d ng th c th m l p nh ngha, chng ta ph i t o m t i t ng t l p . L p l m t khi ni m, cn i t ng l m t th hi n c nh ngha b i l p. Hy kh o st l p Khch hng c nh ngha trn. L p ny nh ngha m i thu c tnh v hnh ng g n li n v i m t khch hng. Khi m t ng i mua m t xe hi m t c a hng, c a hng y c m t khch hng m i. Vo th i i m y, m t i t ng gi ng nh l p Khch hng c t o ra. i t ng ny s ph i c nh ng gi tr th c i v i cc thu c tnh Tn, a ch , Ki u xe, Ch ng h n nh m t khch hng c tn l Mark, s ng London mua m t xe ki u Honda Civic t nhn vin bn hng tn l Tom. Nh th , Mark l m t i t ng c a ki u Khch hng. nh ngha: M t i t ng l m t tr ng h p c a m t l p.

M t i t ng l m t th c th c th (thng th ng b n c th s ch m, xem th y v c m nh n). K t lc m t i t ng hi n h u, nh ng thu c tnh c a n l nh ng gi tr xc nh, v nh ng hnh ng c nh ngha cho i t ng ny c th c thi. Trong m i m t i t ng, cc kha c nh sau y c xc nh r: Tnh tr ng. Thi . Chn tnh. Hnh 1.2 trnh by hai i t ng.

Khoa Cng ngh Thng tin

ih c L t

Trang 14

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Con ng i Tn: Jack Tu i: 28 Tr ng l ng: 65 kgs Hnh ng: i Ni Suy ngh Hnh 1.2: M t

Xe hi Ki u: Ferrari Mu: Nm: 1995 Hnh ng: Kh i ng Ngng Chuy n ng i t ng Con ng i v m t i t ng Xe hi i t ng y l g, ho c hnh i t ng Con ng i s l:

M i i t ng c nh ng c tnh ring m t ng ra sao. Ch ng h n nh nh ng thu c tnh c a m t Tn. Tu i. Tr ng l ng. Nh ng thu c tnh c a m t Mu s c. Ki u xe. Nm. M t i t ng cng th c hi n m t s hnh hi n nh ng hnh ng sau: Kh i ng. Ngng. Chuy n ng.

i t ng Xe hi s l:

ng. M t xe hi c kh nng th c

chuy n i gi a cc i t ng l p trnh v cc i t ng k t h p cc thu c tnh v cc hnh ng c a m t i t ng. 1.4.1. Thu c tnh

i th c, c n ph i

Chng ta xc nh cc thu c tnh v cc hnh ng nh ngha m t l p. M t khi cc thu c tnh c gn cho cc gi tr , chng m t m t i t ng. Hy kh o st l p sau: Cc thu c tnh c a l p Khch hng Tn c a khch hng a ch c a khch hng Ki u xe c bn Nhn vin bn xe Khi thu c tnh Tn c gn cho gi tr Mark th n m t m t

i t ng

Khoa Cng ngh Thng tin

ih c L t

Trang 15

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

xc

nh c t o t l p Khch hng. c tnh m t m t i t ng.

nh ngha: M t thu c tnh l m t

Nh th , cc thu c tnh n m gi cc gi tr d li u trong m t i t ng, chng nh ngha m t i t ng c th . B i v m t l p l m t nguyn m u cho nn cc thu c tnh trong m t l p khng th n m gi cc gi tr . M t thu c tnh c th c gn m t gi tr ch sau khi m t i t ng d a trn l p y c t o ra. c th lu gi nh ng chi ti t c a m t khch hng, m t th hi n( i t ng) c a l p Khch hng ph i c t o ra. Cc thu c tnh c a m t i t ng hi n h u ch khi i t ng y c t o ra. M i i t ng c a m t l p ph i c cng cc thu c tnh. Kh o st v d sau: Cc thu c tnh c a l p Con ng i Tn Chi u cao 1.4.2. Ho t ho t ng ng kh thi, nh c ng l m t d ch v nh ngha trong m t l p, c g i l cc c yu c u c a m t i t ng. i t ng c t o t l p Con ng i Mark 6 ft. 1 in.

= = =

Cc hnh ng.

nh ngha: M t ho t

Cc ho t ng xc nh cc hnh ng c n ph it th c hi n c a m t i t ng c t o ra t m t l p. Ch ng h n nh chng ta khng th yu c u m t ho t ng Mua m t xe hi khc c a m t i t ng c t o ra t l p Khch hng. M t l p ch l m t nguyn m u. V th , trong m t l p m t ho t nh ngha. Cn vi c p d ng ho t ng y ch x y ra ni cc i t Ch ng h n nh ho t ng Nh p Tn m l p Khch hng nh ngha th c hi n ni m t i t ng no . T p h p cc ho t ng c yu c cc i t ng trong cng m t l p l nh nhau. 1.4.3. Phng th c Cc ho t ng nh ngha cc hnh ng kh thi c th i t ng. M t phng th c l s th c thi th c t c a m t ho t nh ngha: Phng th c l s xc yu c u. c yu c u c a m t ng. ng c ng ch c ng ring r . c th c u cho t t c

nh v cch th c th c thi m t ho t

Cc phng th c xc nh cch th c thao tc trn cc d li u c a m t i t ng. B i v phng th c l s th c thi th c t m t ho t ng, cho nn n c th c p d ng cho m t i t ng. M t phng th c l m t thu t ton, t ng b c t ng b c xc nh i u g c th c hi n khi ho t ng y c yu c u. Hy kh o st nh ng ho t ng chung c a m t th c th thu c lo i Con ng i: i, Ni. Ch khi m t i t ng c th c a lo i Con ng i c t o ra th cc hnh ng i, Ni m i
Khoa Cng ngh Thng tin ih c L t
Trang 16

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

c th c thi. 1.4.4. Thng i p g it i yu c u m t ho t ng c th no c th c hi n, m t thng i p c i t ng ni ho t ng ny c nh ngha. ng.

nh ngha: M t thng i p l m t l i yu c u m t ho t

Khi m t i t ng nh n c m t thng i p, n th c hi n m t phng th c tng ng. Ch ng h n, m t i t ng c t o t l p Khch hng nh p tn c a ng i s d ng. Khi i t ng nh n c thng i p, n tm v th c thi phng th c Nh p tn. Trong tr ng h p m t cng ty, m i b ph n c coi l m t i t ng. Nh ng thng tin c chuy n t i v c n nh n t m i b ph n (ho c qua thng bo lin b ph n, ho c qua nh ng ch th mi ng) t o nn nh ng thng i p gi a cc i t ng. Nh ng ch th ny c th c chuy n d ch thnh nh ng l i g i hm trong m t chng trnh.
M c lng?

Phng Kinh doanh

Phng K ton
$2000

Hnh 1.3 Cc

i t ng g i thng i p cho nhau

Trong hnh 1.3, Kinh doanh v K ton l hai b ph n khc nhau trong m t cng ty. Hai b ph n ny c coi l hai i t ng khc nhau. Thng tin c truy n i v c n nh n gi a cc b ph n t o nn cc thng i p gi a cc i t ng. 1.4.5. S ki n M t s ki n l m t s vi c x y ra cho m t i t ng t i m t th i i m. p ng l i s ki n y, i t ng s th c hi n m t ho c nhi u phng th c. Ni cch khc, m t s ki n l m t tc nhn m i t ng ny gy ra cho m t i t ng khc. Ch ng h n nh click chu t tri trn m t nt. hi u r hn cc s ki n, hy kh o st v d sau t th c t : M t ng i s tht ln khi b th c b ng m t v t nh n. Th c l s ki n gy ra s ph n ng l tht ln. Trong my tnh, m t ng i s d ng nh n m t nt trn bn phm l m t s ki n chung. S ph n h i i v i s ki n ny l vi c hi n th k t tng ng trn mn hnh.

Khoa Cng ngh Thng tin

ih c L t

Trang 17

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

1.5. L p v

i t ng

C m t s khc bi t th c s gi a m t l p v m t i t ng. C n nh n th c r s khc bi t ny. M t l p nh ngha m t th c th , trong khi m t i t ng l m t tr ng h p c a th c th y. i t ng l m t m hnh th c, trong khi l p l m t m hnh khi ni m - nh ngha t t c cc thu c tnh v cc phng th c c n thi t c a m t i t ng. T t c cc i t ng thu c v cng m t l p c cng cc thu c tnh v cc phng th c. M t l p l m t nguyn m u c a m t i t ng. N xc nh cc hnh ng kh thi v cc thu c tnh c n thi t cho m t nhm cc i t ng c th . 1.6. Thi t l p v H y 1.6.1. Thi t l p M t l p ch cung c p nh ng nh ngha v cc thu c tnh v cc phng th c kh thi. Cc thu c tnh v cc phng th c c th c truy c p ch khi m t i t ng d a trn m t l p c t o ra. Khi m t i t ng m i c t o, cc thu c tnh c a n tr nn hi n th c v c th c gn gi tr . Tng t , cc phng th c c nh ngha cng c p d ng. nh ngha: Thi t l p l m t ti n trnh hi n th c ha m t i t ng.

Hm thi t l p l m t phng th c c bi t ph i c g i tr c khi s d ng b t k phng th c no trong m t l p. Hm Thi t l p kh i t o cc thu c tnh, v c p pht b nh n u c n. M i m t l p c m t hm thi t l p. Kh o st l i tr ng h p c a hng bn xe hi. Ngay t lc u ch nh ngha cc l p. Cho n khi m t khch hng mua m t xe hi t i c a hng th m t i t ng m i gi ng nh l p Khch hng m i c t o. Khi i t ng ny c t o, m t s kho ng tr ng b nh c c p pht cho nh ng thu c tnh c a n lu tr cc gi tr c gn cho cc thu c tnh y (Tn, a ch ). Hm thi t l p th c hi n vi c c p pht ny. Vo lc ny, m i thu c tnh v phng th c c a i t ng s n sng s d ng. Tng t nh tr ng h p m t h c sinh nh p h c t i m t tr ng h c. Khi m t h c sinh nh p h c, m t vi hnh ng c th c hi n nh n h c sinh y vo tr ng. l: X p l p cho h c sinh y. Ghi tn h c sinh y vo danh sch. X p ch ng i. y l nh ng hnh ng Chng tng t v i nh ng hnh 1.6.2. H y ng lo t c th c hi n ngay lc b t u nh p h c. ng m hm thi t l p c a m t i t ng th c hi n.

Khoa Cng ngh Thng tin

ih c L t

Trang 18

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Khi m t i t ng khng cn c n thi t n a th n s b h y b . S lng ph ti nguyn, ch ng h n nh b nh , n u nh ti p t c cho m t i t ng t n t i m t khi n khng cn c n thi t. nh ngha: Hm H y l m t phng th c t ng. c bi t c dng h yb m t i

Ti n trnh H y tiu h y m t i t ng v gi i phng kho ng tr ng b nh m hm thi t l p c p pht cho n. Hm H y cng tri t tiu kh nng truy c p n i t ng y. M t khi m t i t ng b h y th cc thu c tnh c a n khng th c truy c p, cng nh khng m t phng th c no c th c th c thi. Ch ng h n, trong tr ng h p bn xe hi, m t khi nhn vin bn hng b ngh , nh ng chi ti t c a ng i y khng cn lin h . V th , i t ng tng ng s b h y. i u ny gi i phng b nh c p pht cho nhn vin bn hng y. Kho ng tr ng ny gi y c th c ti s d ng. Hy xem xt v d v tr ng h c trn y. Khi m t h c sinh thi h c, tn c a h c sinh y b lo i ra kh i danh sch, v kho ng tr ng c gi i phng c th c ti c p pht. Cc hnh ng ng lo t ny tng t v i cng vi c c a hm h y i v i m t i t ng. 1.7. Tnh B n v ng Hy kh o st tr ng h p bn xe hi. Nh ng chi ti t c a khch hng c lu tr ngay khi xe hi c phn ph i.Vi c duy tr d li u v n c n thi t cho n khi d li u c ch nh s a ho c h y b chnh th c. nh ngha: Tnh B n v ng l kh nng lu tr d li u c a m t i t ng y khng cn t n t i. i t ng ngay c khi

C a hng bn xe lu tr chi ti t khch hng vo m t file. Nh ng chi ti t ny s t n t i trong file cho n khi chng b h y, ho c b n thn file b h y. Chng ta ng ch m tnh b n v ng m i ngy. Hy xem vi c sng tc m t bi th. Bi th l d li u t n t i trong tm tr c a nh th. Bao lu nh th cn t n t i th b y lu bi th cn t n t i. N u bi th mu n t n t i ngay c sau khi nh th qua i th n ph i c vi t ra gi y. Bi th c vi t ra gi y t o nn s b n v ng. Bi th s t n t i bao lu vn b n y cn c duy tr. Bi th y khng cn t n t i khi t gi y y b x rch, ho c ch ngha b xa i. 1.8 Tnh ng gi d li u Ti n trnh tr u t ng ha d li u h tr cho vi c xc nh ng phng th c thi t y u. nh nh ng thu c tnh v

Thng th ng, cc i t ng s d ng nh ng thu c tnh v nh ng phng th c khng c yu c u b i ng i s d ng i t ng. Ch ng h n nh trong tr ng h p l p Khch hng. L p y c m t phng th c xu t ha n. Gi s r ng khi ha n
Khoa Cng ngh Thng tin ih c L t
Trang 19

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

c xu t, m t trong nh ng chi ti t c in ra trn ha n l ngy phn ph i. Tuy nhin chng ta khng bi t thu c tnh no qua chng ta c th xc nh thng tin ny. Ngy phn ph i c pht sinh bn trong i t ng, v c hi n th trn ha n. Nh th ng i s d ng khng nh n th c v cch th c m ngy phn ph i c hi n th . Ngy phn ph i c th c x l theo m t trong nh ng cch sau: l m t gi tr c tnh ton - Ch ng h n, 15 ngy k t ngy t hng. l m t gi tr c nh Xe hi c phn ph i vo ngy mng 2 m i thng. i t ng s d ng nh ng thu c tnh v nh ng phng th c mang tnh n i b . B i v nh ng thu c tnh v nh ng phng th c c th c che khu t kh i t m nhn. Cc i t ng khc v nh ng ng i s d ng khng nh n th c c cc thu c tnh v / ho c cc phng th c nh th c t n t i hay khng. Ti n trnh che gi u cc thu c tnh, cc phng th c, ho c cc chi ti t c a vi c thi hnh c g i l ng gi. nh ngha: ng gi l ti n trnh che gi u vi c th c thi nh ng chi ti t c a m t t ng i v i ng i s d ng i t ng y. i

Vi c ng gi phn tch nh ng kha c nh c th truy c p t bn ngoi v i nh ng kha c nh ch c s d ng trong n i b c a i t ng. u i m c a vi c ng gi l c th t o ra b t k thu c tnh hay phng th c c n thi t p ng i h i cng vi c khi xy d ng m t l p. M t khc, ch nh ng thu c tnh v / ho c nh ng phng th c c th c truy c p t bn ngoi l p th m i nhn th y. M t v d khc v vi c ng gi l l p Nhn vin bn hng c nh ngha trn. Khi phng th c tnh ti n hoa h ng c th c thi, ng i s d ng khng bi t chi ti t c a vi c tnh ton. T t c nh ng g h bi t ch l t ng s ti n hoa h ng m h ph i tr cho nhn vin bn hng. M t tr ng h p v ng gi m chng ta g p trong i s ng h ng ngy l vi c giao d ch kinh doanh m t c a hng. Khch hng yu c u s n ph m X. H c trao cho s n ph m X, v h ph i tr ti n cho s n ph m y. Sau khi khch hng yu c u s n ph m, ng i bn hng th c hi n nh ng hnh ng sau: Ki m tra m t hng trn k hng. Gi m s l ng m t hng trong b ng ki m k sau khi bn. Tuy nhin, khch hng khng c bi t nh ng chi ti t ny. 1.9. Tnh th a k Hy kh o st cc l p sau: L p Sinh vin Tn a ch i m mn 1
Khoa Cng ngh Thng tin

L p Nhn vin Tn a ch Lng


ih c L t

L p Khch hng Tn a ch Ki u xe bn
Trang 20

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

i m mn 2 Ch c v Nh Nh p tn Nh p tn Nh Nh p a ch Nh p a ch Nh Nh p i m Nh p ch c v Xu Tnh t ng i m Tnh lng Trong t t c ba l p, chng ta th y c m t vi thu Chng ta mu n nhm nh ng thu c tnh v nh ng ho t chng trong m t l p Ng i.

p tn p a ch p ki u xe t ha n c tnh v ho t ng chung. ng y l i, v nh ngha

L p Ng i Tn a ch Nh p tn Nh p a ch Ba l p Sinh vin, Nhn vin v Khch hng c nh ng thnh ph n gi ng l p Ng i. Ni cch khc, ba l p y c t t c cc thu c tnh v cc phng th c c a l p Ng i, ngoi ra chng cn c nh ng thu c tnh v nh ng phng th c ring. Chng ta c n ph i nh ngha l p Ng i v s d ng n trong khi nh ngha cc l p Sinh vin, Nhn vin v Khch hng. Chng ta xy d ng m t l p Ng i v i nh ng thu c tnh v nh ng ho t ng nh trnh by hnh trn. K ti p, chng ta xy d ng l p Khch hng bao g m l p Ng i c ng v i nh ng thu c tnh v nh ng phng th c ring. Chng ta c th nh ngha cc l p Sinh vin v Nhn vin theo cng cch th c trn. Nh th , c ba l p Khch hng, Sinh vin v Nhn vin u chia s nh ng thu c tnh v nh ng phng th c m l p Ng i cung c p. L p Sinh vin i m mn 1 i m mn 2 Nh p i m tnh t ng i m Theo ngn ng h ng L p Nhn vin Lng Ch c v Nh p ch c v Tnh lng i t ng, l p Khch hng c g i l th a k l p Ng i. L p Khch hng Ki u xe bn c Nh p ki u xe Xu t ha n

nh ngha: Tnh th a k cho php m t l p chia s cc thu c tnh v cc phng th c c nh ngha trong m t ho c nhi u l p khc. C hai khi ni m quan tr ng khc lin k t v i tnh th a k . L p Khch hng l l p Ng i c ng thm ci khc. Nh th , l p Khch hng c t t c cc thu c tnh v cc phng th c c nh ngha trong l p Ng i c ng v i cc thu c tnh v cc ho t ng c a ring n. Trong v d ny, l p Khch hng c g i l l p con. nh ngha: L p th a h ng t m t l p khc c g i l l p con. Trong v d trn, l p Ng i c coi l l p cha.

Khoa Cng ngh Thng tin

ih c L t

Trang 21

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

nh ngha: L p cha l m t l p m cc h ng.

c tnh c a n c m t l p khc th a

Hy xem xt v d v l p Cc ng v t hnh 1.4. Cc ng v t l l p trn cng m cc l p khc k th a. Chng ta c m t dy cc l p trung gian Cn trng, H u nh, B st, L ng c - m dy cc l p d i k th a. Cc l p Cn trng, H u nh, B st, L ng c l nh ng l p con c a l p trn Cc ng v t. Nh th , nh ng l p ny c t t c nh ng thu c tnh v cc ho t ng c a l p Cc ng v t, c ng thm nh ng thu c tnh v nh ng phng th c c a ring chng. L p H u nh l l p m cc l p Con ng i v Khc con ng i th a k . Nh th , cc l p Con ng i v Khc con ng i l cc l p con c a l p trn H u nh. Cc ng v t

Cn trng

H u nh

B st

L ng c

Con ng i

Khc con ng i Hnh 1.4 Tnh th a k

Tnh a Th a k Trong t t c cc v d trn, m t l p th a k ch t m t l p. Ngay c trong v d th a k v cc lo i phng ti n di chuy n, m i l p con ch c m t l p cha. Tr ng h p nh th g i l th a k n. Trong a th a k , m t l p con th a k t hai hay nhi u l p cha. Hy kh o st v d sau: L p ng th ng Kh i i m i m t n cng V ng L p ng trn Bn knh Tm i m V ng trn L p Hnh nh + Hnh nh V hnh nh = L pV m t hnh Nh n hnh v V hnh

Trong hnh trn, chng ta xy d ng m t l p V m t hnh, l p ny th a h ng ba l p: ng th ng, ng trn, Hnh nh. Nh th l p V m t hnh k t h p ch c nng c a ba l p trn thm vo ch c nng c nh ngha bn trong n. L p V m t hnh l m t v d v tnh a th a k .

Khoa Cng ngh Thng tin

ih c L t

Trang 22

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

C th s d ng tnh a th a k xy d ng m t l p m i, l p ny d n xu t ch c nng c a n t m t vi l p khc. Nh th , xt theo gc c nh c a ng i s d ng l p m i ny, ch c n m t l p m cung c p t t c cc ch c nng. Nh v y, h khng c n ph i s d ng nhi u i t ng khc nhau. S thu n l i quan tr ng nh t c a tnh th a k l n thc y vi c ti s d ng m chng trnh. Trong v d trn, chng ta c ba l p ng th ng, ng trn v Hnh nh. Gi thi t r ng ba ng i khc nhau xy d ng ba l p ny ring bi t. By gi , ng i s d ng c n xy d ng m t l p v ng th ng, v ng trn cng nh hi n th hnh nh. V th h tm ki m xem c l p no p ng m t ho c t t c cc yu c u . N u c nh ng l p cung c p ch c nng th a yu c u th ng i s d ng s th a k nh ng l p t o m t l p m i. Gi y ng i s d ng ch cn ph i vi t m chng trnh cho nh ng c tnh cha c sau ti n trnh th a k . Ng i s d ng c th s d ng chnh ba l p trn. Tuy nhin, s th a k cung c p m t b nh ng ch c nng h n n trong m t l p. 1.10. Tnh a hnh Trong m t chng trnh c c u trc, m t phng th c ch ng d ng cho m t i t ng. Ch ng h n xt ton t C ng. Ton t ny ch tnh t ng c a hai s nguyn. Khi truy n hai gi tr 2 v 3 th n hi n th 5. Chng ta khng th c m t lo i ton t C ng tnh t ng c a hai gi tr vn b n (text) Hello! v How are you? c c chu i vn b n k t qu Hello! How are you?. Trong h th ng h ng i t ng th tnh hu ng m t trn l c th . nh ngha: Tnh a hnh cho php m t phng th c c cc cch th hi n khc nhau trn nhi u lo i i t ng khc nhau. V i tnh a hnh, n u cng m t phng th c ng d ng cho cc i t ng thu c cc l p khc nhau th n a n nh ng k t qu khc nhau. B n ch t c a s vi c chnh l phng th c ny bao g m cng m t s l ng cc tham s . Tnh a hnh l m t trong nh ng c tnh quan tr ng nh t c a h th ng h ng i t ng. M t v d khc l phng th c hi n th . Ty thu c vo i t ng tc ng, phng th c y c th hi n th m t chu i, ho c v m t ng th ng, ho c hi n th m t hnh nh. Hy kh o st hnh sau: L p: Hnh th Cc phng th c: V Di chuy n Kh i t o Cc l p con

Hnh 1.5: L p Hnh th v cc l p con Hnh trn cho th y r ng V l m t phng th c c chia s gi a cc l p con c a l p Hnh th . Tuy nhin, phng th c V c ng d ng cho hnh h p s khc
Khoa Cng ngh Thng tin ih c L t

Trang 23

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

v i hnh lip. Tnh a hnh h tr tnh ng gi. Xt trn m c ng i s d ng, h ch c n m t phng th c V c a l p Hnh th . Cn cch th c m phng th c V c th c thi cho cc tr ng h p khc nhau th h khng c n bi t. 1.11. Nh ng u i m c a Phng php h ng i t ng

L p trnh h ng i t ng i h i m t s chuy n h ng quan tr ng trong t duy c a cc l p trnh vin. Phng php ny lm cho t c pht tri n cc chng trnh m i nhanh hn, v n u c s d ng ng n phng php ny s c i ti n vi c duy tr, vi c ti s d ng v vi c nh gi ph n m m. Nh ng u i m c a phng php h ng i t ng l: Phng php ny ti n hnh ti n trnh phn tch, thi t k v pht tri n m t v n trong khun kh nh ng khi ni m v thu t ng thu c lnh v c ng d ng. V th , c m t s tng h p cao nh t gi a vi c pht tri n ng d ng v v n th c t . Ch ng h n nh trong tr ng h p bn xe hi, m i giai o n c a vi c phn tch, thi t k v pht tri n ng d ng, lun lun c ti ng ni c a khch hng, c a nhn vin bn hng Phng php ny h tr vi c chia s bn trong m t ng d ng. Phng php ny h tr vi c ti s d ng cc i t ng khi cc ng d ng m i c pht tri n. y l u i m r t quan tr ng xt trong kha c nh gi m thi u chi ph v lu v di. Ch ng h n nh hnh vi c a khch hng m t khi c m hnh ha trong m t ng d ng th c th c s d ng l i cho nh ng ng d ng lin h c bao g m m hnh khch hng. Phng php ny gi m thi u cc l i v nh ng v n lin quan n vi c b o tr ng d ng do kh nng ti s d ng cc i t ng. Phng php ny tng t c ti n trnh thi t k v pht tri n, m t l n n a y l k t qu c a vi c ti s d ng cc i t ng.

Khoa Cng ngh Thng tin

ih c L t

Trang 24

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Tm t t bi h c
L p trnh h ng i t ng l m t cch t duy m i gi i quy t v n b ng my vi tnh. Thay v n l c a v n vo trong khun kh quen thu c v i my vi tnh, phng php h ng i t ng tm ki m m t gi i php ton v n cho m t v n . S tr u t ng ha d li u l ti n trnh xc nh v nhm cc thu c tnh v cc phng th c lin quan n m t th c th c th , trong tng quan v i m t ng d ng. M t l p nh ngha m t th c th theo nh ng thu c tnh v nh ng phng th c chung. M t i t ng l m t tr ng h p c a m t l p. M t l p nh ngha m t th c th , cn i t ng l th c th hi n th c. Ti n trnh hi n th c ha m t i t ng c g i l Thi t l p. Ti n trnh h y b m t i t ng c g i l H y. Tnh b n v ng l kh nng lu tr d li u c a m t i t ng v t qu th i gian t n t i c a i t ng . Vi c ng gi l ti n trnh che gi u vi c th c thi chi ti t c a m t i t ng i v i ng i s d ng i t ng y. Tnh th a k l c ch cho php m t l p chia s cc thu c tnh v cc phng th c c nh ngha trong m t ho c nhi u l p khc. Tnh a hnh l m t thu c tnh cho php m t phng th c c cc tc ng khc nhau trn nhi u i t ng khc nhau. Phng php h ng i t ng a ra ti n trnh phn tch, thi t k v pht tri n ng d ng trong khun kh cc khi ni m v cc thu t ng thu c lnh v c ng d ng.

Khoa Cng ngh Thng tin

ih c L t

Trang 25

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Ki m tra s ti n b
1. S tr u t ng ha d li u ng ngha v i s che gi u d li u. ng/Sai 2. nh ngha s Tr u t ng ha d li u. 3. Vi c ng gi d li u che gi u nh ng chi ti t th c thi i v i nh ng i t ng khc. ng/Sai 4. Tnh a hnh cho php chng ta t o nh ng i t ng khc nhau v i cng m t tn. ng/Sai 5. M i m t i t ng c m t _________ ,____________ v ___________ c xc nh. 6. T t c cc i t ng c a m t l p u c cng m t t p h p cc thu c tnh. ng/Sai 7. M t i t ng nh ngha m t th c th , trong khi m t l p l th c th m t c th . ng/Sai 8. nh ngha tnh a hnh.

Bi t p
1. Thi t k cc thnh ph n v cc hnh ng khi m t khch hng th c hi n m t giao d ch ATM (Automatic Teller Machine). 2. Li t k nh ng thu c tnh v nh ng phng th c c n c v m t hnh a gic.

Khoa Cng ngh Thng tin

ih c L t

Trang 26

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Chng 2

NH P MN JAVA
N i dung chnh
Cc c trng c a Java Cc lo i chng trnh vi t b ng Java nh ngha v my o Java (Java Virtual Machine) Cc n i dung c a JDK (Java Development Kit) S l c cc c trng m i c a Java 2

2.1. Gi i thi u Java


Java l m t ngn ng l p trnh c Sun Microsystems gi i thi u vo thng 6 nm 1995. T , n tr thnh m t cng c l p trnh c a cc l p trnh vin chuyn nghi p. Java c xy d ng trn n n t ng c a C v C++. Do v y n s d ng cc c php c a C v cc c trng h ng i t ng c a C++. Vo nm 1991, m t nhm cc k s c a Sun Microsystems c nh thi t k m t ngn ng l p trnh i u khi n cc thi t b i n t nh Tivi, my gi t, l n ng, M c d C v C++ c kh nng lm vi c ny nhng trnh bin d ch l i ph thu c vo t ng lo i CPU. Trnh bin d ch th ng ph i t n nhi u th i gian xy d ng nn r t t. V v y m i lo i CPU c m t trnh bin d ch ring l r t t n km. Do nhu c u th c t i h i m t ngn ng ch y nhanh, g n, hi u qu v c l p thi t b t c l c th ch y trn nhi u lo i CPU khc nhau, d i cc mi tr ng khc nhau. Oak ra i v vo nm 1995 c i tn thnh Java. M c d m c tiu ban u khng ph i cho Internet nhng do c trng khng ph thu c thi t b nn Java tr thnh ngn ng l p trnh cho Internet.

Java l g?
Java l ngn ng l p trnh h ng i t ng, do v y khng th dng Java vi t m t chng trnh h ng ch c nng. Java c th gi i quy t h u h t cc cng vi c m cc ngn ng khc c th lm c. Java l ngn ng v a bin d ch v a thng d ch. u tin m ngu n c bin d ch b ng cng c JAVAC chuy n thnh d ng ByteCode. Sau c th c thi trn t ng lo i my c th nh chng trnh thng d ch. M c tiu c a cc nh thi t k Java l cho php ng i l p trnh vi t chng trnh m t l n nhng c th ch y trn b t c ph n c ng c th . Ngy nay, Java c s d ng r ng ri vi t chng trnh ch y trn Internet. N l ngn ng l p trnh h ng i t ng c l p thi t b , khng ph thu c vo h i u hnh. N khng ch dng vi t cc ng d ng ch y n l hay trong m ng m

Khoa Cng ngh Thng tin

ih c L t

Trang 27

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

cn

xy d ng cc trnh i u khi n thi t b cho i n tho i di

ng, PDA,

2.2. Cc

c trng c a Java

n gi n H ng i t ng c l p ph n c ng v h M nh B om t Phn tn a lu ng ng

i u hnh

2.2.1. n gi n
Nh ng ng i thi t k mong mu n pht tri n m t ngn ng d h c v quen thu c v i a s ng i l p trnh. Do v y Java lo i b cc c trng ph c t p c a C v C++ nh thao tc con tr , thao tc nh ngha ch ng ton t (operator overloading), Java khng s d ng l nh goto cng nh file header (.h). C u trc struct v union cng c lo i b kh i Java.

2.2.2. H ng

i t ng

Java c thi t k xoay quanh m hnh h ng i t ng. V v y trong Java, tiu i m l d li u v cc phng php thao tc ln d li u . D li u v cc phng php m t tr ng thi v cch ng x c a m t i t ng trong Java.

2.2.3.

c l p ph n c ng v h

i u hnh

y l kh nng m t chng trnh c vi t t i m t my nhng c th ch y c b t k u. Chng c th hi n m c m ngu n v m c nh phn. m c m ngu n, ng i l p trnh c n m t ki u cho m i bi n. Ki u d li u trong Java nh t qun cho t t c cc h i u hnh v ph n c ng khc nhau. Java c ring m t th vi n cc l p c s . V v y chng trnh Java c vi t trn m t my c th d ch v ch y trn tru trn cc lo i my khc m khng c n vi t l i. Tnh c l p m c nh phn, m t chng trnh bin d ch c th ch y trn nhi u n n (ph n c ng, h i u hnh) khc m khng c n d ch l i m ngu n. Tuy v y c n c ph n m m my o Java (s c p n ph n sau) ho t ng nh m t trnh thng d ch t i my th c thi.
compiler compiler compiler IB M Sparc

Macintosh

Khoa Cng ngh Thng tin

ih c L t

Trang 28

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Hnh 2.1 Cch bin d ch truy n th ng i v i cc chng trnh vi t b ng C, C++ ho c m t ngn ng no khc, trnh bin d ch s chuy n t p l nh thnh m my (machine code),hay l nh c a b vi x l. Nh ng l nh ny ph thu c vo CPU hi n t i trn my b n. Nn khi mu n ch y trn lo i CPU khc, chng ta ph i bin d ch l i chng trnh. Hnh 2.1 th hi n qu trnh th c thi chng trnh vi t b ng C++ trn cc lo i my khc nhau. Hnh 2.2 Qu trnh th c thi chng trnh vi t b ng Java trn cc lo i my khc nhau.
IBM
Bytecode

Trnh bin d ch

Trnh thng d ch Java (Java Interpreter)

Sparc

cl pn n (Platform independent)

Macintosh

Hnh 2.2 D ch chng trnh Java Mi tr ng pht tri n c a Java c chia lm hai ph n: Trnh bin d ch v trnh thng d ch. Khng nh C hay C++, trnh bin d ch c a Java chuy n m ngu n thnh d ng bytecode c l p v i ph n c ng m c th ch y trn b t k CPU no. Nhng th c thi chng trnh d i d ng bytecode, t i m i my c n ph i c trnh thng d ch c a Java hay cn g i l my o Java. My o Java chuy n bytecode thnh m l nh m CPU th c thi c.

2.2.4. M nh m
Java l ngn ng yu c u ch t ch v ki u d li u. Ph i khai bo ki u d li u t ng minh khi vi t chng trnh. Java ki m tra lc bin d ch v c trong th i gian thng d ch v v y Java lo i b m t m t s lo i l i l p trnh nh t nh. Java khng s d ng con tr v cc php ton con tr . Java ki m tra t t c cc truy nh p n m ng, chu i khi th c thi m b o r ng cc truy nh p khng ra ngoi gi i h n kch th c. Java ki m tra s chuy n i ki u d li u t d ng ny sang d ng khc lc th c thi. Trong cc mi tr ng l p trnh truy n th ng, l p trnh vin ph i t mnh c p pht b nh . Tr c khi chng trnh k t thc th ph i t gi i phng b nh c p. V n n y sinh khi l p trnh vin qun gi i phng b nh xin c p tr c . Trong chng trnh Java, l p trnh vin khng ph i b n tm n vi c c p pht b nh . Qa trnh c p pht, gi i phng c th c hi n t ng, nh d ch v thu nh t nh ng i t ng khng cn s d ng n a.

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

C ch b y l i c a Java gip n gi n ha qa trnh x l l i v h i ph c sau l i.

2.2.5. B o m t
Virus l nguyn nhn gy ra s lo l ng trong vi c s d ng my tnh. Tr c khi c Java, cc l p trnh vin ph i qut virus cc t p tr c khi t i v hay th c hi n chng. Thng th ng vi c ny cng khng lo i tr hon ton virus. Ngoi ra chng trnh khi th c thi c kh nng tm ki m v c cc thng tin nh y c m trn my c a ng i s d ng m ng i s d ng khng h hay bi t. Java cung c p m t mi tr ng qu n l th c thi chng trnh. N cho r ng khng c m t o n m no l an ton c . V v v y Java khng ch l ngn ng l p trnh thu n tu m cn cung c p nhi u m c ki m sot tnh an ton khi th c thi chng trnh. m c u tin, d li u v cc phng th c c ng gi bn trong l p. Chng ch c truy xu t thng qua cc giao di n m l p cung c p. Java khng h tr con tr v v y khng cho php truy xu t b nh tr c ti p. N cng ngn ch n khng cho truy xu t thng tin bn ngoi kch th c c a m ng b ng k thu t trn v cng cung c p k thu t d n rc trong b nh . Cc c trng ny t o cho Java an ton t i a v c kh nng c ng cao. Trong l p th hai, trnh bin d ch ki m sot theo cc nguyn t c c a Java. c m b o m l an ton, v tun

L p th ba c m b o b i trnh thng d ch. Chng ki m tra xem bytecode m b o cc qui t c an ton tr c khi th c thi. gim st vi c vi ph m gi i

L p th t ki m sot vi c n p cc l p vo b nh h n truy xu t tr c khi n p vo h th ng.

2.2.6. Phn tn
Java c th dng xy d ng cc ng d ng c th lm vi c trn nhi u ph n c ng, h i u hnh v giao di n h a. Java c thi t k h tr cho cc ng d ng ch y trn m ng. V v y chng c s d ng r ng ri nh l cng c pht tri n trn Internet, ni s d ng nhi u n n t ng khc nhau.

2.2.7. a lu ng
Chng trnh Java a lu ng(Multithreading) th c thi cc cng vi c ng th i. Chng cng cung c p gi i php ng b gi a cc lu ng. c tnh h tr a lu ng ny cho php xy d ng cc ng d ng trn m ng ch y hi u qu .

2.2.8.

ng

Java c thi t k nh m t ngn ng ng p ng cho nh ng mi tr ng m . Cc chng trnh Java ch a r t nhi u thng tin th c thi nh m ki m sot v truy
Khoa Cng ngh Thng tin ih c L t

Trang 30

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

nh p

i t ng lc ch . i u ny cho php kh nng lin k t

ng m.

2.3. Cc ki u chng trnh Java


Chng ta c th xy d ng cc lo i chng trnh Java nh sau:

2.3.1. Applets
Applet l chng trnh c t o ra s d ng trn Internet thng qua cc trnh duy t h tr Java nh IE hay Netscape. B n c th dng Java xy d ng Applet. Applet c nhng bn trong trang Web. Khi trang Web hi n th trong trnh duy t, Applet s c t i v v th c thi t i trnh duy t.

2.3.2.

ng d ng th c thi qua dng l nh

Cc chng trnh ny ch y t d u nh c l nh v khng s d ng giao di n h a. Cc thng tin nh p xu t c th hi n t i d u nh c l nh.

2.3.3.

ng d ng

h a
c l p cho php ng i dng tng tc qua

y l cc chng trnh Java ch y giao di n h a.

2.3.4. Servlet
Java thch h p pht tri n ng d ng nhi u l p. Applet l chng trnh h a ch y trn trnh duy t t i my tr m. cc ng d ng Web, my tr m g i yu c u t i my ch . My ch x l v g i k t qu tr l i my tr m. Cc Java API ch y trn my ch ch u trch nhi m x l t i my ch v tr l i cc yu c u c a my tr m. Cc Java API ch y trn my ch ny m r ng kh nng c a cc ng d ng Java API chu n. Cc ng d ng trn my ch ny c g i l cc Servlet. ho c Applet t i my ch . X l Form c a HTML l cch s d ng n gi n nh t c a Servlet. Chng cn c th c dng x l d li u, th c thi cc giao d ch v th ng c th c thi thng qua my ch Web.

2.3.5.

ng d ng c s d li u

Cc ng d ng ny s d ng JDBC API k t n i t i c s d li u. Chng c th l Applet hay ng d ng, nhng Applet b gi i h n b i tnh b o m t.

2.3.6.

ng d ng mobile

Cc ng d ng trn thi t b mobile h u h t c vi t b ng J2ME m t phin b n c a Java dnh cho l p trnh mobile. y cng l m t lnh v c m nh c a ng d ng Java.

2.4. My o Java (JVM-Java Virtual Machine)

Khoa Cng ngh Thng tin

ih c L t

Trang 31

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

My o Java l tri tim c a ngn ng Java. Mi tr ng Java bao g m nm ph n t sau: Ngn ng nh ngha Bytecode Cc th vi n l p Java/Sun My o Java (JVM) C u trc c a file .class Cc ph n t t o cho Java thnh cng l: nh ngha Bytecode C u trc c a file .class My o Java (JVM) Kh nng c ng c a file .class cho php cc chng trnh Java vi t m t l n nhng ch y b t k u. Kh nng ny c c nh s gip c a my o Java.

2.4.1. My o Java l g ?
My o l m t ph n m m d a trn c s my tnh o. N c t p h p cc l nh logic xc nh cc ho t ng c a my tnh. Ng i ta c th xem n nh m t h i u hnh thu nh . N thi t l p cc l p tr u t ng cho: Ph n c ng bn d i, h i u hnh, m bin d ch. Trnh bin d ch chuy n m ngu n thnh t p cc l nh c a my o m khng ph thu c vo ph n c ng c th . Trnh thng d ch trn m i my s chuy n t p l nh ny thnh chng trnh th c thi. My o t o ra m t mi tr ng bn trong th c thi cc l nh b ng cch: N p cc file .class Qu n l b nh D n rc Vi c khng nh t qun c a ph n c ng lm cho my o ph i s d ng ngn x p tr cc thng tin sau: Cc Frame ch a cc tr ng thi c a cc phng th c. Cc ton h ng c a m bytecode. Cc tham s truy n cho phng th c. Cc bi n c c b . Khi JVM th c thi m, m t thanh ghi c c b c tn Program Counter c s d ng. Thanh ghi ny tr t i l nh ang th c hi n. Khi c n thi t, c th thay i n i dung thanh ghi i h ng th c thi c a chng trnh. Trong tr ng h p thng th ng th t ng l nh m t n i ti p nhau s c th c thi. M t khi ni m thng d ng khc trong Java l trnh bin d ch Just In TimeJIT. Cc trnh duy t thng d ng nh Netscape hay IE u c JIT bn trong tng lu

Khoa Cng ngh Thng tin

ih c L t

Trang 32

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

t c th c thi chng trnh Java. M c ch chnh c a JIT l chuy n t p l nh bytecode thnh m my c th cho t ng lo i CPU. Cc l nh ny s c lu tr v s d ng m i khi g i n.

2.4.2. Qu n l b nh v d n rc
Trong C, C++ hay Pascal ng i l p trnh s d ng phng php tr c ti p c p pht v thu h i b nh vng Heap. Heap l vng b nh l n c phn chia cho t t c cc lu ng. qu n l Heap, b nh c theo di qua cc danh sch sau:

Danh sch cc vng nh cha s d ng. Danh sch cc vng c p. Khi c m t yu c u v c p pht b nh , h th ng xem xt trong danh sch cha c p pht l y ra kh i b nh u tin c kch c st nh t v i l ng b nh c n thi t . K thu t c p pht ny gi m t i thi u vi c phn m nh c a heap. Coalescing l k thu t khc cng gi m thi u vi c phn m nh c a heap b ng cch gom l i cc vng nh cha dng li n nhau thnh m t kh i l n hn. Cn k thu t s p x p l i cc ph n dng t o vng nh cha s d ng l n hn g i l Compaction. Java s d ng hai heap ring bi t cho c p pht vng nh tnh v vng nh ng. M t heap (heap tnh) ch a cc nh ngha v l p, cc h ng v danh sch cc phng th c. Heap cn l i (heap ng) c chia lm hai ph n c c p pht theo hai chi u ng c nhau. M t bn ch a i t ng cn m t bn ch a con tr tr n i t ng . Handle l c u trc bao g m hai con tr . M t tr n b ng phng th c c a i t ng, con tr th hai tr n chnh i t ng . Ch r ng khi compaction c n c p nh t l i gi tr con tr c a c u trc handle. Thu t ton d n rc c th p d ng cho cc i t ng t trong heap ng. Khi c yu c u v b nh , trnh qu n l heap tr c tin ki m tra danh sch b nh cha c p pht. N u khng tm th y kh i b nh no ph h p (v kch c ) th trnh d n rc s c kch ho t khi h th ng r i. Nhng khi i h i b nh c p bch th trnh d n rc s c kch ho t ngay. Trnh d n rc g i phng th c finalize c a i t ng tr c khi d n d p i t ng. Hm ny s d n d p cc ti nguyn bn ngoi nh cc file ang m . Cng vi c ny khng c trnh d n rc th c thi.

2.4.3. Qu trnh ki m tra file .class


Vi c ki m tra c p d ng cho t t c cc file .class s p c n p ln b nh m b o tnh an ton. Trnh Class Loader s ki m tra t t c cc file .class khng thu c h i u hnh v i m c ch gim st s tun th cc nghi th c pht hi n cc file .class c nguy c gy h h ng n b nh , h th ng file c c b , m ng ho c h i u hnh. Qu trnh ki m tra s xem xt t ng th tnh nguyn v n c a m t l p.

Khoa Cng ngh Thng tin

ih c L t

Trang 33

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

File .class bao g m ba ph n logic l: Bytecode Thng tin v Class nh phng th c, giao di n v cc gi tr h ng s c t p h p trong qu trnh bin d ch. Cc thu c tnh v l p. Cc thng tin c a file .class c xem xt ring r trong cc b ng sau: B ng Field ch a cc thu c tnh B ng Method ch a cc hm c a class B ng Interface v v cc h ng s . Qu trnh ki m tra file .class c th c hi n b n m c:

M c u tin th c hi n vi c ki m tra c php m b o tnh c u trc v tnh ton v n c php c a file .class c n p. M c th hai s xem xt file .class m b o cc file ny khng vi ph m cc nguyn t c v s nh t qun ng ngha. M c th ba s ki m tra bytecode. Trong b c ny s ki m tra s thng s truy n vo phng th c, kh nng truy xu t sai ch s c a m ng, chu i, bi u th c. M c th t s ki m tra trong th i gian th c thi gim st cc vi c cn l i m ba b c trn cha lm. V d nh lin k t t i cc l p khc trong khi th c thi, hay ki m tra quy n truy xu t. N u m i i u th a mn, l p s c kh i t o.

2.5. B cng c pht tri n JDK (Java Development Kit)


Sun Microsystem a ra ngn ng l p trnh Java qua s n ph m c tn l Java Development Kit (JDK). Ba phin b n chnh l: Java 1.0 - S d ng l n u vo nm 1995 Java 1.1 a ra nm 1997 v i nhi u u i m hn phin b n tr c. Java 2 SDK v 1.2 (JDK 1.2, 1998) Java 2 SDK v 1.3 (JDK 1.3, 2000) Java 2 SDK v 1.4 (JDK 1.4, 2002) Java 5 SDK v 1.5 Nm 2005 Java 6 Nm 2007 JDK bao g m Java Plug-In, chng cho php ch y tr c ti p Java Applet hay JavaBean b ng cch dng JRE thay cho s d ng mi tr ng th c thi m c nh c a trnh duy t. Ngoi ra, pht tri n cc ng d ng Java chuyn nghi p trn cc mi tr ng Eclipse, Jbuilder, NetBean, JDK ch a cc cng c sau:

Trnh bin d ch, 'javac'


C php: javac [options] sourcecodename.java

Khoa Cng ngh Thng tin

ih c L t

Trang 34

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Trnh thng d ch, 'java'


C php: java [options] classname

Trnh d ch ng c, 'javap'
javap d ch ng c bytecode v in ra thng tin v cc thu c tnh (cc tr ng), cc phng th c c a m t l p. C php: javap [options] classname

Cng c sinh ti li u, 'javadoc'


Ti n ch ny cho php ta t o ra t p HTML d a trn cc l i gi i thch trong m chng trnh (ph n n m trong c p d u /*.... */). C php: javadoc [options] sourcecodename.java

Chng trnh tm l i - Debug, 'jdb


C php: jdb [options] sourcecodename.java

Hay jdb -host -password [options] sourcecodename.java

Chng trnh xem Applet , 'appletviewer


C php: appletviewer [options] url

2.6. Java Core API


Nhn Java API c thay th b i phin b n JFC 1.1. M t s package thng d ng:

java.lang
Ch a cc l p quan tr ng nh t c a ngn ng Java. Chng bao g m cc ki u d li u c b n nh k t , s nguyn, Chng cng ch a cc l p lm nhi m v x l l i v cc l p vo ra chu n. M t vi l p quan tr ng khc nh String hay StringBuffer.

java.applet
y l package nh nh t ch a m t mnh l p Applet. Cc Applet nhng trong trang Web hay ch y trong appletviewer u th a k t l p ny.

java.awt
Package ny c g i l Abstract Window Toolkit (AWT). Chng ch a cc l p dng t o giao di n h a. M t s l p bn trong l: Button, GridBagLayout, Graphics.
Khoa Cng ngh Thng tin ih c L t

Trang 35

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

java.io
Cung c p th vi n vo ra chu . Chng cho php t o v qu n l dng d li u theo nhi u cch.

java.util
Package ny cung c p m t s cng c h u ch. M t vi l p c a package ny l: Date, Hashtable, Stack, Vector v StringTokenizer.

java.net
Cung c p kh nng giao ti p v i my t xa. Cho php t o v k t n i t i Socket ho c URL.

java.awt.event
Ch a cc l p, giao di n dng chu t, bn phm. x l cc s ki n trong chng trnh nh

java.rmi
Cng c g i hm t xa. Chng cho php t o d ng cc i t ng trn my c c b . i t ng trn my khc v s

java.security
Cung c p cc cng c c n thi t truy n gi a my tr m v my ch . m ha v m b o tnh an ton c a d li u

java.sql
Package ny ch a Java DataBase Connectivity (JDBC), dng d li u quan h nh Oracle, SQL Server,.... truy xu t c s

2.7. Cc

c trng m i c a Java 2

Cc phin b n tr c c a Java ch thch h p vi t cc ng d ng nh trn Web hn l xy d ng cc ng d ng ch y trn m ng m nhi m ton b cc cng vi c c a c a m t cng ty ho c h th ng phn tn. Java 2 p ng yu c u ny. M t vi c trng c a chng l:

Swing
y l m t t p cc l p v giao di n m i dng "Look and Feel". t o giao di n ng d ng h a

Ko v th

Khoa Cng ngh Thng tin

ih c L t

Trang 36

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

y l kh nng di chuy n thng tin gi a cc ng d ng hay cc ph n khc nhau c a chng trnh.

Java 2D API
Ch a t p h p cc l p h tr cho nh v h a hai chi u.

Java sound
T p h p hon ton m i cc l p c trng v m thanh c a Java.

RMI
c a RMI (Remote Method Invocation) cho php cc ng d ng g i cc phng th c i t ng t i my khc v cho php giao ti p v i chng.

Khoa Cng ngh Thng tin

ih c L t

Trang 37

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Tm t t
Java l ngn ng bin d ch v thng d ch Cc c trng c a Java: n gi n H ng i t ng c l p ph n c ng M nh B om t Phn tn a lu ng ng

My o Java Java Development Kit Cc c trng m i c a Java 2

Ki m tra s ti n b
1. B n c th vi t cc chng trnh d ng th t c b ng Java. ng/Sai ng/Sai 2. Java l ngn ng c ki u d li u ch t ch . 3. ...........................l chng trnh Java ch y c l p, v s d ng giao di n h a ng i s d ng nh p d li u. 4. ...........................s d ng JDBC API k t n i c s d li u. 5. ..........................hi u m t dng cc l nh my tnh tr u t ng. 6. Coalescing v Compaction l g? 7. L nh ............... c s d ng d ch file m ngu n .java. 8. L p ......... ph i l l p cha c a cc applet, applet l chng c th nhng vo trang Web hay ch y b ng Java AppletViewer.

Bi t p
1. Ci t Java 2. 2. G cc l nh sau t i d u nh c v li t k cc tham s khc nhau c a chng: javac java

Khoa Cng ngh Thng tin

ih c L t

Trang 38

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Chng 3

N N T NG C A NGN NG
N i dung chnh
M t chng trnh n gi n vi t b ng Java Nh ng khi ni m c b n v ngn ng Java Cc ki u d li u Cc ton t nh d ng xu t d li u Cc c u trc l p trnh c b n

JAVA

3.1 C u trc m t chng trnh Java


Ph n u c a m t chng trnh Java xc nh thng tin mi tr ng. lm c vi c ny, chng trnh c chia thnh cc l p ho c cc gi ring bi t. Nh ng gi ny s c ch d n trong chng trnh. Thng tin ny c ch ra v i s tr gip c a l nh nh p import. M i chng trnh c th c nhi u hn m t l nh nh p. D i y l m t v d v l nh nh p:

import java. awt.*;


L nh ny nh p gi awt. Gi ny dng t o cc i t ng GUI. y java l tn c a th m c ch a gi awt. K hiu * ch t t c cc l p thu c gi ny. Trong java, t t c cc m, bao g m cc bi n v cch khai bo nn c th c hi n trong ph m vi m t l p. B i v y, t ng khai bo l p c ti n hnh sau l nh nh p. M t chng trnh n gi n c th ch c m t vi l p. Nh ng l p ny c th m r ng thnh cc l p khc. M i l nh u c k t thc b i d u ch m ph y ;. Chng trnh cn c th bao g m cc ghi ch, ch d n. Khi d ch, chng trnh d ch s t lo i b cc ghi ch ny.

D ng c b n c a m t l p c xc class classname{

nh nh sau :

/* y l dng ghi ch*/ int num1,num2; // Khai bo bi n v i cc d u ph y gi a cc bi n void Show(){ // Method body statement (s); // K t thc b i d u ch m ph y } }

Khoa Cng ngh Thng tin

ih c L t

Trang 39

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Token l n v ring l , nh nh t, c ngha i v i trnh bin d ch c a m t chng trnh Java. M t chng trnh java l t p h p c a cc token. Cc token c chia thnh nm lo i: nh danh (identifiers): Dng th hi n tn bi n, phng th c, ho c cc l p. Chng trnh bin d ch s xc nh cc tn ny l duy nh t trong chng trnh. Khi khai bo nh danh c n lu cc i m sau y: M i nh danh c b t u b ng m t ch ci, m t k t g ch d i (_) hay d u $. Cc k t ti p theo c th l ch ci, ch s , d u $ ho c m t k t c g ch d i. M i nh danh ch c ch a hai k t c bi t ny l d u g ch d i (_) v d u $ . Ngoi ra khng c php s d ng b t k k t c bi t no khc. Cc nh danh khng c ch a d u cch (space). T kho/t d phng (Keyword/Reserve Words): M t s nh danh c Java xc nh tr c. Ng i l p trnh khng c php s d ng chng nh m t nh danh. V d class, import l nh ng t kho. K t phn cch (separator): Thng bo cho trnh bin d ch vi c phn nhm cc ph n t c a chng trnh. M t vi k t phn cch c a java c ch ra d i y: { };,

Nguyn d ng (literals): L cc gi tr khng i trong chng trnh. Nguyn d ng c th l cc s , chu i, cc k t ho c cc gi tr Boolean. V d 21, A, 31.2, This is a sentence l nh ng nguyn d ng. Cc ton t : Cc qu trnh nh gi, tnh ton c th c hi n trn d li u ho c cc i t ng. Java c m t t p l n cc ton t . Chng ta s th o lu n chi ti t chng ny.

3.2 Chng trnh JAVA

u tin

Chng ta hy b t u t chng trnh Java c i n nh t v i m t ng d ng n gi n. Chng trnh sau y cho php hi n th m t thng i p:

Chng trnh 3.1 // This is a simple program called First.java class First{ public static void main(String args[]){ System.out.println(My first program in Java); } }

Khoa Cng ngh Thng tin

ih c L t

Trang 40

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Tn file ng vai tr r t quan tr ng trong Java. Chng trnh bin d ch Java ch p nh n ph n m r ng .java. Trong Java, m l nh ph i n m trong cc l p. B i v y tn l p v tn file ph i trng nhau. Java phn bi t ch hoa v ch th ng (casesensitive). V d tn file First v first l hai file khc nhau. bin d ch m ngu n, ta s d ng trnh bin d ch java. Trnh bin d ch xc nh tn c a file ngu n t i dng l nh nh m t d i y:

C:\jdk1.2.1\bin>javac First.java
Trnh d ch java t o ra file First.class ch a cc m bytecodes. Nh ng m ny cha th th c thi c. chng trnh th c thi c ta c n dng trnh thng d ch java interpreter L nh c th c hi n nh sau:

C:\jdk1.2.1\bin>java First
K t qu s hi n th trn mn hnh nh sau: My first program in Java

Phn tch chng trnh

u tin

// This is a simple program called First.java K hi u // dng thuy t minh dng l nh. Trnh bin d ch s b qua dng thuy t minh ny. Java cn h tr thuy t minh nhi u dng. Lo i thuy t minh ny c th b t u v i /* v k t thc v i */ /*This is a comment that extends to two lines*/ / *This is a multi line comment */ Dng k ti p khai bo l p c tn First. t o m t l p thm ta b t kho class, k n l tn l p (v cng chnh l tn file). class First Tn l p ni chung nn b t u b ng ch in hoa. T kho class khai bo nh ngha l p. First l tn c a l p. M t nh ngha l p n m tr n v n n m gi a hai ngo c mc m ({) v ng (}). Cc ngo c ny nh d u b t u v k t thc m t kh i l nh. uv it

Khoa Cng ngh Thng tin

ih c L t

Trang 41

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

public static void main(String args[ ]) y l phng th c chnh, t y chng trnh b t u vi c th c thi c a mnh. T t c cc ng d ng java u s d ng m t phng th c main ny. Chng ta s tm hi u t ng t trong l nh ny. T kho public l m t ch nh truy xu t. N cho bi t thnh vin c a l p c th c truy xu t t b t c u trong chng trnh. Trong tr ng h p ny, phng th c main c khai bo public, b i v y JVM c th truy xu t phng th c ny. T kho static cho php main c g i t i m khng c n t o ra m t th hi n (instance) c a l p. Nhng trong tr ng h p ny, b n copy c a phng th c main c php t n t i trn b nh , th m ch khng c m t th hi n c a l p c t o ra. i u ny r t quan tr ng v JVM tr c tin g i phng th c main th c thi chng trnh. V l do ny phng th c main c n ph i l tnh (static). N khng ph thu c vo cc th hi n c a l p c t o ra. T kho void thng bo cho my tnh bi t r ng phng th c s khng tr l i b t c gi tr no khi th c thi chng trnh. Phng th c main() s th c hi n m t s tc v no , n l i m m c m t t t c cc ng d ng Java c kh i ng. String args[] l tham s dng trong phng th c main. Cc bi n s trong d u ngo c n nh n t ng thng tin c chuy n vo main. Nh ng bi n ny l cc tham s c a phng th c. Th m ch ngay khi khng c m t thng tin no c chuy n vo main, phng th c v n c th c hi n v i cc d li u r ng khng c g trong d u ngo c n. args[] l m t m ng ki u String. Cc i t cc dng l nh c lu vo m ng. M n m gi a d u ngo c mc ({ }) c a main c g i l method block. Cc l nh c th c thi trong main c n c vi t trong kh i ny.

System.out.println(My first program in Java);


Dng l nh ny hi n th chu i My first program in Java trn mn hnh. Pht bi u println() t o ra m t c ng xu t (output). Phng th c ny cho php hi n th chu i c truy n vo ra System.out. y System l m t l p nh tr c, n cho php truy nh p vo h th ng v out l m t chu i xu t c k t n i v i d u nh c (console).

Truy n

i s trong dng l nh

Cc m sau y cho ta th y cc tham s (argument) c a cc dng l nh c ti p nh n nh th no trong phng th c main.

Program 3.2 class Pass{ public static void main(String parameters[]){

Khoa Cng ngh Thng tin

ih c L t

Trang 42

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

System.out.println(This is what the main method received); System.out.println(parameters [0]); System.out.println(parameters [1]); System.out.println(parameters [2]); } }

Hnh v d i y th hi n s th c thi c a chng trnh.

Hnh 3.1 Truy n tham s t dng l nh Khi g p m t d u tr ng (space), c th hi u m t chu i c k t thc. Nhng thng th ng m t chu i c k t thc khi g p d u nhy kp. Hnh v d i y s m t u ny.

Hnh 3.2 Truy n tham s l chu i

Khoa Cng ngh Thng tin

ih c L t

Trang 43

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

3.3 C b n v ngn ng Java


Chng trnh l t p h p nh ng hnh ng c s p x p theo m t tr t t nh t nh my tnh c th th c hi n c. Chng trnh c th c coi nh m t ti li u h ng d n c ch a cc thnh ph n c g i l cc bi n v danh sch cc h ng d n c g i l l nh. Cc l nh ny ni cho my tnh bi t c n ph i lm g v i cc bi n. Bi n l cc gi tr c th c thay i ph thu c vo i u ki n ho c thng tin c nh p vo my tnh. Cc bi n c xc nh nh cc ki u d li u. Ki u d li u l m t t p cc d li u v i cc gi tr c cc c tnh c xc nh tr c. Cc pht bi u d ng i u khi n quy t nh vi c th c thi t ng ph n trong chng trnh. Chng cn quy t nh tr t t vi c th c thi chng trnh v s l n chng trnh c n th c hi n. Gi tr n p vo bi n c th nh h ng cho chng trnh ho t ng. Chng ta hy b t u v i nh ng khi ni m n n t ng c a ngn ng Java nh l p v phng th c, ki u d li u, bi n, ton t v c u trc i u khi n.

3.4 Cc l p

i t ng trong Java

Trong ngn ng Java, l p l m t n v m u c ch a cc s li u v cc m lin quan n m t th c th no . Chng hnh thnh n n t ng c a ton b ngn ng Java. D li u ho c m ngu n c vi t ra lun t bn trong m t l p. Khi xc nh m t l p, b n th c ch t xc nh m t ki u d li u. Lo i d li u m i ny c s d ng xc nh cc bi n m ta thng g i l i t ng. i t ng l cc th hi n (instance) c a l p. T t c cc i t ng u thu c v m t l p c chung c tnh v hnh vi. M i l p xc nh m t th c th , trong khi m i i t ng l m t th hi n th c s . B n cn c th nh ngha m t l p bn trong m t l p khc. y l l p x p l ng nhau, cc th hi n (instance) c a l p ny t n t i bn trong th hi n c a m t l p che ph chng. N chi ph i vi c truy nh p n cc thnh ph n c a th hi n bao ph chng.

Khai bo l p
Khi ban khai bo m t l p, b n c n xc . nh d li u v cc phng th c c a l p

C php: class classname{ var_datatype variablename; : met_datatype methodname(parameter_list) :

Khoa Cng ngh Thng tin

ih c L t

Trang 44

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

} Trong : class - T kho xc nh l p

classname - Tn c a l p var_datatype - ki u d li u c a bi n variablename - Tn c a bi n met_datatype - Ki u d li u tr v c a phng th c methodname - Tn c a phng th c parameter_list Cc tham s c c a phng th c

Hnh 3.3 m t b ng hnh nh l p Khch hng. Nh ng c i m c a l p xc nh cc kho n m c d li u c lu c t, v cc hnh vi xc nh cc phng th c c tnh n. i t ng c a l p ny s lu l cc chi ti t c nhn cu khch hng.

Hnh 3.3: M t b ng hnh nh l p Khch hng Trong l p Khch hng, cc kho n m c d li u bao g m: Tn khch hng a ch Ki u xe Tn ng i bn hng Cc phng th c g m: Nh p cc chi ti t c a khch hng In cc ho n

Khoa Cng ngh Thng tin

ih c L t

Trang 45

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Cc l p l ng nhau
Vi c nh ngha m t l p bn trong m t l p khc c g i l l p l ng (nesting). L p l ng ch n m trong ph m vi l p bao quanh n.C hai lo i l p l ng: L p ki u tnh (static) L p ki u tnh c nh ngha v i t kho static. L p tnh c th truy nh p vo cc thnh vin c a l p ph n thng qua m t i t ng. Do v y l p tnh th ng t c s d ng. L p ki u khng tnh (non static) L p bn trong (inner) quan tr ng nh t c a cc l p l ng. l cc l p nonstatic. nh ngha l p bn trong ch c th xc nh c trong ph m vi l p ngoi cng. L p bn trong c th truy nh p t t c cc thnh vin c a l p bao n, song khng th ng c l i. o n chng trnh sau m t l p c t o l p ra sao v s d ng nh th no:

class Outer{ //Outer class constructor class Inner{ //Inner class constructor } }
C php sau y cho php truy nh p vo l p bn trong

Outer.Inner obj=new Outer().new Inner();

3.5 Ki u d li u
Cc ng d ng lun x u vo, u ra, v k t qu Trong mi tr ng tnh ton, thu c vo b n ch t c a n. ki u th hi n ring bi t. l d li u u vo v xu t d li u k t qu u rara. c a cc qu trnh tnh ton u lin quan n d li u. d li u c phn l p theo cc tiu ch khc nhau ph m i tiu ch, d li u c m t tnh ch t xc nh v c m t

Java cung c p m t vi ki u d li u. Chng c h tr trn t t c cc n n. V d , d li u lo i int (integer) c a Java c th hi n b ng 4 bytes trong b nh c a t t c cc lo i my b t lu n u ch y chng trnh Java. B i v y cc chng trnh Java khng c n ph i thay i khi ch y trn cc n n khc nhau. Trong Java ki u d li u c chia thnh hai lo i:

Khoa Cng ngh Thng tin

ih c L t

Trang 46

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Cc ki u d li u nguyn th y (primitive) Cc ki u d li u tham chi u (reference)

D li u ki u nguyn thu
B ng 3.1: Ki u d li u nguyn thu Ki u di Ph m vi bi u di n gi tr d li u theo s bit byte 8 -128 n 127 M t

char boolea n

16 1

short Int

16 32

long

64

float double

32 64

S li u ki u byte l m t lo i i n hnh dng lu tr m t gi tri b ng m t byte. Chng c s d ng r ng ri khi x l m t file vn b n. \u0000 to u\ffff Ki u Char s d ng lu tn ho c cc d li u k t .V d tn ng i lao ng. True ho c False D li u boolean dng lu cc gi tr ng ho c sai V d : Ng i lao ng c p ng c yu c u c a cng ty hay khng ? -32768 n 32767 Ki u short dng lu cc s c gi tr nh d i 32767.V d s l ng ng i lao ng. -2,147,483,648 n Ki u int dng lu m t s c +2,147,483,648 gi tr l n n 2,147,483,648.V d t ng lng m cng ty ph i tr cho nhn vin. -9,223,372,036854,775,808 Ki u long c s d ng lu n m t s c gi tr r t l n n +9,223,372,036854,775,808 9,223,372,036854,775,808 .V d dn s c a m t n c -3.40292347E+38 n Ki u float dng lu cc s +3.40292347E+38 th p phn n 3.40292347E+38 V d : gi thnh s n ph m -1,79769313486231570E+308 Ki u double dng lu cc s n th p phn c gi tr l n n +1,79769313486231570E+308 1,79769313486231570E+308 V d gi tr tn d ng c a ngn hng nh n c.

Ki u d li u tham chi u
Trong Java c 3 ki u d li u tham chi u
Khoa Cng ngh Thng tin ih c L t

Trang 47

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Ki u d li u M ng (Array) L p (Class) Giao di n (Interface)

M t T p h p cc d li u cng ki u. V d : tn sinh vin T p h p cc bi n v cc phng th c.V d : l p Sinhvin ch a ton b cc chi ti t c a m t sinh vin v cc phng th c th c thi trn cc chi ti t . L m t l p tr u t ng c t o ra cho php ci t a th a k trong Java. B ng 3.2: Ki u d li u tham chi u

p ki u
C th b n s g p tnh hu ng khi c ng m t bi n c d ng integer v i m t bi n c d ng float. x l tnh hu ng ny, Java s d ng tnh nng p ki u (type casting) c a cc ph n m m tr c C, C++. Lc ny m t ki u d li u s chuy n i sang ki u khc. Khi s d ng tnh ch t ny, b n c n th n tr ng v khi i u ch nh d li u c th b sai gi tr . o n m sau y th c hi n php c ng m t gi tr d u ph y gi tr nguyn (integer). ng (float) v i m t

float c=34.896751f; Int b = (int)c +10;


u tin gi tr d u ph y ng c c i thnh gi tr nguyn 34. Sau n c c ng v i 10 v k t qu l gi tr 44 c lu vo b. S n i r ng l qu trnh lm trn s theo h ng n i r ng khng lm m t thng tin v l n c a m i gi tr .Bi n i theo h ng n i r ng chuy n m t gi tr sang m t d ng khc c r ng ph h p hn so v i nguyn b n. Bi n i theo h ng l i thu nh l i lm m t thng tin v l n c a gi tr c chuy n i. Chng khng c th c hi n khi th c hi n php gn. v d trn gi tr th p phn sau d u ph y s b m t.

3.6 Cc bi n
Cc ng d ng s d ng cc bi n lu tr cc d li u c n thi t ho c cc d li u c t o ra trong qu trnh th c thi chng trnh. Cc bi n c xc nh b i m t tn bi n v c m t ph m vi tc ng. Ph m vi tc ng c a bi n c xc nh m t cch r rng trong chng trnh. M i bi n c khai bo trong m t kh i chng trnh ch c tc ng trong ph m vi kh i , khng c ngha v khng c php truy nh p t bn ngoi kh i. Vi c khai bo m t bi n bao g m 3 thnh ph n: ki u bi n, tn c a n v gi tr ban u c gn cho bi n (khng b t bu c). khai bo nhi u bi n ta s d ng d u ph y phn cch cc bi n, Khi khai bo bi n, lun nh r ng Java phn bi t ch th ng v ch in hoa (case -sensitive).

C php:

Khoa Cng ngh Thng tin

ih c L t

Trang 48

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Datatype indentifier [=value] [, indentifier[=value] ];


khai bo m t bi n nguyn (int) c tn l counter dng l 1, ta c th th c hi n pht bi u sau y: lu gi tr ban u

int counter = 1;
Java c nh ng yu c u h n ch t tn bi n m b n c th gn gi tr vo. Nh ng h n ch ny cng gi ng cc h n ch khi t tn cho cc nh danh m ta th o lu n cc ph n tr c c a chng ny.

Khai bo m ng
M ng c dng lu tr cc kho n m c cng ki u d li u li n k nhau trong b nh . M i l n ta khai bo kch th c c a m t m ng, n s khng th thay i. D li u trn m ng c th l ki u d li u nguyn thu ho c i t ng. Cng nh cc bi n, ta c th gn cc gi tr vo m ng t i cc ph n t c t o ra trong m ng. N u khng, Java s gn gi tr m c nh vo t t c cc ph n t c a m ng, gi tr m c nh ph thu c vo ki u d li u. V d : n u ki u d li u l nguyn th gi tr m c nh ban u s l 0. M ng c th Cch khai bo Ch n thu n khai bo Khai bo v t o m ng c khai bo b ng ba cch : M t Ch n thu n khai bo m ng C php Datatype identifier[] Datatype identifier[] =new datatype [size ] V d char ch[ ];khai bo m ng k t c tn ch char ch[] = new char [10 ];Khai b o m t m ng ch v lu tr 10 k t char ch [] = {A,B,C,D }; khai bo m ng ch v lu 4 ch ci ki u k t

Khai bo v c p pht b nh cho cc ph n t m ng s d ng ton t new Khai bo,ki n Khai bo t o v kh i m ng,c p pht t o b nh cho n v gn cc gi tr ban u cho cc ph n t c a m ng

Datatype identifier[] = {value1,value2valueN };

B ng 3.3 Khai bo m ng xc nh tn v s ph n t c a m ng ta c n xem xt cc ph n t m ng.S ph n t b t u v i 0 cho ph n t u,1 cho ph n t th hai v c ti p nh v y.

Khoa Cng ngh Thng tin

ih c L t

Trang 49

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

3.7 Phng th c trong m t l p


Phng th c xc nh giao di n cho ph n l n cc l p. Trong khi Java cho php b n nh ngha cc l p m khng c n phng th c. B n c n nh ngha phng th c truy c p d li u m b n lu trong m t l p. Phng th c c nh ngha nh m t hnh ng ho c m t tc v th t s c a i t ng. N cn c nh ngha nh m t hnh vi m trn cc thao tc c n thi t c th c thi.

C php access_specifier modifier datatype method_name(parameter_list){ //body of method } Trong : access_specifier: Ch nh truy c p vo phng th c. t thu c tnh cho phng th c.

modifier: Cho php b n

datatype: Ki u d li u m phng th c tr v . N u khng c m t gi tr no c tr v , ki u d li u c th l void. method_name: Tn c a phng th c parameter_list: Ch a tn c a tham s c s d ng trong phng th c v ki u d li u. D u ph y c dng phn cch cc tham s . V d khai bo phng th c trong m t l p
o n m sau y nh ngha l p Temp ch a m t gi tr nguyn (int). L p ny ch a hai phng th c l: show() v main(). C hai phng th c u c kh nng truy c p bn ngoi l p khi chng c khai bo nh public. N u chng khng tr v m t gi tr no, ki u d li u tr v c nh ngha nh ki u void. Phng th c show() hi n th m t gi tr c a bi n x. phng th c main(), hai th d c a i t ng thu c l p Temp c khai bo. i t ng th nh t g m gi tr m c nh c a bi n x. N c hi n th ngay khi g i phng th c show() l n u tin. Gi tr c a x c thay i dng cho cho i t ng th hai. N c hi n th khi ta g i phng th c show() l n th hai.

Chng trnh 3.3 class Temp{ static int x=10;//variable public static void show()/*method*/{

Khoa Cng ngh Thng tin

ih c L t

Trang 50

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

System.out.println(x); } public static void main(String args[]){ Temp t = new Temp();// object 1 t.show();//method call Temp t1=new Temp();// object 2 t1.x=20; t1.show(); } }

Cc ch

nh truy xu t c a phng th c

Cc ch nh truy xu t dng gi i h n kh nng truy nh p vo m t phng th c. Java cung c p cc ch nh truy xu t sau y: Cng c ng (Public): Phng th c c ch nh truy xu t public c th c nhn th y t m i gi ho c m i l p. B o v (Protected): Cc l p m r ng t l p hi n hnh trong cng m t gi, ho c t i cc gi khc nhau c th truy c p cc phng th c la i ny. Ring t (Private): Phng th c ring t ch c th c truy c p nh phng th c cng c ng itrong cng m t l p.

Cc b ngha phng th c
Cc b ngha phng th c cho php ta thi t l p cc thu c tnh c a phng th c. Java cung c p cc b ngha sau: Tnh (static): phng th c c th c g i m khng c n n i t ng. N ch c s d ng i v i cc d li u v cc phng th c tnh khc. Tr u t ng (abstract): Ng r ng phng th c khng c m t m (code) v n s c b sung cc l p con (subclass). Lo i phng th c ny c s d ng trong cc l p k th a. K t thc (final): Phng th c khng th c th a k ho c ghi (Overridden). T nhin (native): Ch ra r ng ph n thn c a phng th c c vi t trn cc ngn ng khc Java v d C, ho c C++. ng b (synchronized): S d ng v i phng th c trong qu trnh th c thi threads. N cho php ch m t thread c truy c p vo kh i m t i m t th i i m.
Khoa Cng ngh Thng tin ih c L t

Trang 51

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Linh ho t (volatile): c s d ng v i cc bi n thng bo r ng gi tr c a bi n c th c thay i vi l n khi th c thi chng trnh v gi tr c a n khng c t vo thanh ghi. B ng d i y ch ra ni m cc b ngha c s d ng: B ngha public private protected abstrac final native volatile Phng th c Yes Yes Yes Bi n Yes Yes Yes L p Yes Yes (Nested class) Yes (Nested class) Yes Yes No No

Yes No Yes Yes Yes No No Yes B ng 3.4 S d ng cc b ngha

Phng th c n p ch ng v ghi
Nh ng phng th c c n p ch ng (overload) l nh ng phng th c trong cng m t l p, c cng m t tn song c danh sch cc tham s khc nhau. S d ng vi c n p ch ng phng th c th c thi cc phng th c gi ng nhau i v i cc ki u d li u khc nhau.V d phng th c swap() c th b n p ch ng b i cc tham s c a ki u d li u khc nh integer, double v float Phng th c c ghi (overriden) l phng th c c m t l p cha cng nh cc l p k th a. Phng th c ny cho php m t l p t ng qut ch nh cc phng th c s l phng th c chung trong cc l p con.V d l p xc nh phng th c t ng qut area(). Phng th c ny c th c hi n th c trong m t l p con tm di n tch m t hnh c th nh hnh ch nh t, hnh vung Phng th c n p ch ng l m t hnh th c a hnh trong qu trnh bin d ch. Cn phng th c ghi l m t hnh th c a hnh trong qu trnh th c thi. o n chng trnh sau m t n p ch ng phng th c c th c hi n nh th no

//defined once protected void perfomTask(double salary){ . System.out.prinln(Salary is : + salary); . }


Khoa Cng ngh Thng tin ih c L t
Trang 52

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

//overloaded defined the second time with different parameters protected void performTask(double salary, int bonus){ System.out.println(Total Salary is: + salary+bonus); . }
Phng th c kh i t o c a l p c th c n p ch ng. Phng th c ghi c nh ngha l i cc l p con. o n m sau y m t phng th c ghi . y ta dng t kho this bi u th i t ng hi n hnh, trong khi super c s d ng ch i t ng l p cha. Phng th c ghi khng ph i l phng th c static (non-static).

lass SupperClass // T o l p c b n { int a; SuperClass() { } SuperClass(int b) { a=b; } public void message() { System.out.println("In the super class"); } } //overloaded constructor // constuctor

Khoa Cng ngh Thng tin

ih c L t

Trang 53

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

class SubClass Extends SuperClass {// derriving a class int a; SubClass(int a) {//subclass constructor this.a; } public void message(){ // overiding the base class message() System.out.prinln(In the sub class); } }
chi u By gi chng ta s t o ra m t n n nh sau: i t ng l p cha v gn m t l p nh tham

SuperClasss spObj=new SubClass(22); Cu l nh spObj.message() thu c phng th c l p c a SubClass. y ki u i t ng c gn cho spObj s ch c xc nh khi chng trnh th c thi. i u ny c bi t d i khi ni m lin k t ng (dynamic binding).

Phng th c kh i t o l p
Phng th c kh i t o l p l m t lo i phng th c c bi t r t khc v i cc phng th c thng th ng. N khng c ki u tr v . N c tn trng v i tn c a l p. Hm kh i t o l p th c thi nh m t phng th c ho c m t ch c nng bnh th ng song n khng tr v b t c m t gi tr no. Ni chung chng c dng kh i t o cc bi n thnh vin c a m t l p v n c g i m i khi b n t o ra i t ng c a l p . Phng th c kh i t o l p c hai lo i: T ng minh (explicit): B n c th l p trnh nh ng phng th c kh i t o l p khi nh ngha l p. Khi t o m t i t ng c a m t l p, nh ng gi tr m b n truy n vo ph i kh p v i nh ng tham s c a phng th c kh i t o (s l ng, th t v ki u d li u c a cc tham s ) Ng m nh (implicit): Khi b n khng nh ngha m t phng th c kh i t o cho m t l p, JVM cung c p m t phng th c kh i t o ng m nh. B n c th nh ngha nhi u phng th c kh i t o cho m t l p. Gi ng nh cc phng th c khc, phng th c kh i t o l p c th b n p ch ng (overload)

V d m t phng th c kh i t o

Khoa Cng ngh Thng tin

ih c L t

Trang 54

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

o n m sau y nh ngha m t phng th c kh i t o t ng minh cho m t l p Employee. Phng th c kh i t o bao g m tn v tu i. Chng c coi nh cc tham s v gn cc gi tr c a chng vo cc bi n c a l p. Ch r ng t kho this c s d ng tham chi u n i t ng hi n hnh c a l p.

Chng trnh 3.4 class Employee{ String name; int age; Employee (String varname, int varage){ this.name = varname; this.age = varage; } public static void main (String arg[]){ Employee e = new Employee ("Allen, 30); } }

Phng th c kh i t o c a l p d n xu t
Phng th c kh i t o c a m t l p d n xu t c tn trng v i tn c a l p d n xu t . Cu l nh dng g i phng th c kh i t o c a cha ph i l cu l nh u tin trn phng th c kh i t o c a l p con . L do l l p cha hnh thnh tr c khi c cc l p con.

3.8 Cc ton t
M t chng trnh th c t bao hm vi c t o ra cc bi n. Cc ton t k t h p cc gi tr n ho c cc bi u th c con thnh nh ng bi u th c m i, ph c t p hn v c th tr v gi tr . i u ny lin quan n vi c th c hi n cc php ton logic, s h c, quan h v so snh trn cc bi u th c. Java cung c p nhi u d ng ton t sau: Ton t Ton t Ton t Ton t Ton t Ton t s h c bit quan h logic i u ki n gn

Khoa Cng ngh Thng tin

ih c L t

Trang 55

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Cc ton t s h c
Cc ton h ng c a cc ton t s h c ph i d ng s . Cc ton h ng ki u boolean khng s d ng c, song cc ton h ng k t cho php s d ng lo i ton t ny. M t vi ki u ton t c li t k trong b ng d i y. Ton t + M t C ng.Tr v gi tr t ng hai ton h ng V d 5+3 tr v k t qu l 8 Tr Tr v gi tr khc nhau gi a hai ton h ng ho c gi tr ph nh c a ton h ng. V d 5-3 k t qu l 2 v 10 tr v gi tr m c a 10 Nhn Tr v gi tr l tch hai ton h ng. V d 5*3 k t qu l 15 Chia Tr v gi tr l thng c a php chia % V d 6/3 k t qu l 2 Php l y modulo Gi tr tr v l ph n d c a php chia ++ -+= V d 10%3 gi tr tr v l 1 Tng d n Tng gi tr c a bi n ln 1. V d a++ tng ng v i a= a+1 Gi m d n Gi m gi tr c a bi n 1 n v . V d a-- tng ng v i a=a-1 C ng v gn gi tr C ng cc gi tr c a ton h ng bn tri vo ton h ng bn ph i v gn gi tr tr v vo ton h ng bn tri. -= V d c+=a tng ng c=c+a Tr v gn gi tr Tr cc gi tr c a ton h ng bn tri vo ton ton h ng bn ph i v gn gi tr tr v vo ton h ng bn tri. *= V d c-= a tng ng v I c=c-a Nhn v gn Nhn cc gi tr c a ton h ng bn tri v i ton ton h ng bn ph i
Khoa Cng ngh Thng tin ih c L t

* /

Trang 56

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

v gn gi tr tr v vo ton h ng bn tri. /= V d c *= a tng ng v i c=c*a Chia v gn Chia gi tr c a ton h ng bn tri cho ton ton h ng bn ph i v gn gi tr tr v vo ton h ng bn tri. %= V d c /= a tng ng v i c=c/a L y s d v gn Chia gi tr c a ton h ng bn tri cho ton ton h ng bn ph i v gn gi tr s d vo ton h ng bn tri. V d c%=a tng ng v i c=c%a B ng 3.5 Cc ton t s h c Chng trnh sau m t vi c s d ng ton t s h c:

class ArithmeticOp { public static void main(String args[]){ int p=5,q=12,r=20,s; s=p+q; System.out.println(p+q is +s); s=p%q; System.out.println(p%q is +s); s*=r; System.out.println(s*=r is +s); System.out.println(Value of p before operation is +p); p++; System.out.println(Value of p after operation is +p); double x=25.75,y=14.25,z; z=x-y; System .out.println(x-y is +z);

Khoa Cng ngh Thng tin

ih c L t

Trang 57

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

z-=2.50; System.out.println(z-=2.50 is +z); System.out.println(Value of z before operation is+z); z--; System.out.println(Value of z after operation is+z); z=x/y; System .out.println(x/y is +z); } }
u ra c a chng trnh l

p+q is 17 p%q is 5 s*=r is 100 Value of p before operation is 9.0 Value of z after operation is 8.0 x/y is 1.8070175438596429

Ton t bit
Cc ton t dang Bit cho php ta thao tc trn t ng Bit ring bi t trong cc ki u d li u nguyn thu . Ton t Bit d a trn c s i s Boolean. N th c hi n php tnh trn hai bit c v tr tng ng trn hai ton h ng t o ra m t k t q a m i. M t vi d ng ton t ki u ny c li t k d i y Ton t ~ & M t Ph nh bit (NOT) Tr v gi tr m c a m t s . V d a=10 th ~a=-10 Ton t AND Tr v gi tr l 1 n u cc ton h ng l 1 v 0 trong cc tr ng h p khc. V d n u a=1v b=0 th a&b tr v gi tr 0 Ton t OR

Khoa Cng ngh Thng tin

ih c L t

Trang 58

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Tr v gi tr l 1 n u m t trong cc ton h ng l 1 v 0 trong cc tr ng h p khc. V d n u a=1v b=0 th aIb tr v gi tr 1 Exclusive OR Tr v gi tr l 1 n u ch m t trong cc ton h ng l 1 v tr v 0 trong cc tr ng h p khc. V d n u a=1v b=1 th a^b tr v gi tr 0 D ch sang ph i Chuy n ton b cc bt cu m t s sang ph i m t v tr, gi nguyn d u c a s m. Ton h ng bn tri l s b d ch cn s bn ph i ch s v tr m cc bt c n d ch.

>>

<<

V d x=31 t c l 00011111 v y x>>2 s l 00000111. D ch sang tri Chuy n ton b cc bt cu m t s sang tri m t v tr, gi nguyn d u cu s m. Ton h ng bn tri l s b d ch cn s bn ph i ch s v tr m cc bt c n d ch. B ng 3.6 Cc ton t Bit

Cc ton t quan h
Cc ton t quan h ki m tra m i quan h gi a hai ton h ng. K t qu c a m t bi u th c c dng cc ton t quan h l nh ng gi tr Boolean (logic ng ho c sai). Cc ton t quan h c s d ng trong cc c u trc i u khi n. Ton t == M t So snh b ng Ton t ny ki m tra s tng ng c a hai ton h ng V d if (a= =b) tr v gi tri True n u gi tr c a a v b nh nhau So snh khc Ki m tra s khc nhau c a hai ton h ng > V d if(a!=b) Tr v gi tr true n u a khc b L n hn Ki m tra gi tr c a ton h ng bn ph i l n hn ton h ng bn tri hay khng V du if(a>b) . Tr v gi tr true n u a l n hn b,ng c lai (nh hn ho c b ng ), tr v False Nh hn

!=

<

Khoa Cng ngh Thng tin

ih c L t

Trang 59

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Ki m tra gi tr c a ton h ng bn ph i c nh hn ton h ng bn tri hay khng V du if(a<b) . Tr v gi tr true n u a nh hn b , ng c l i (l n hn ho c b ng tr v False L n hn ho c b ng Ki m tra gi tr c a ton h ng bn ph i c l n hn ho c b ng ton h ng bn tri hay khng V du if(a>=b) . Tr v gi tr true n u a l n hn ho c b ng b , ng c l i (nh hn tr v False Nh hn ho c b ng Ki m tra gi tr c a ton h ng bn ph i c nh hn ho c b ng ton h ng bn tri hay khng V du if(a<=b) . Tr v gi tr true n u a nh hn ho c b ng b , ng c l i (l n hn tr v false) B ng 3.6 Cc ton t quan h o n chng trnh sau y m t vi c s d ng cc ton t quan h

>=

<=

Chng trnh 3.6 class RelationalOp { public static void main (String args[]){ float a= 10.0f; double b=10.0; if (a== b) System.out.println(a and b are equal); else System.out.println(a and b are not equal); } }
K t qu chng trnh s hi n th

a and b are not equal

Khoa Cng ngh Thng tin

ih c L t

Trang 60

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Trong chng trnh trn c a v b l nh ng s c d u ph y ng, d ng d li u c khc nhau, a l ki u float cn b l ki u double. Tuy v y chng khng ph i l cng m t ki u. B i v y khi ki m tra gi tr c a cc ton h ng, ki u d li u c n ph i c ki m tra.

Cc ton t logic
Cc ton t logic lm vi c v i cc ton h ng Boolean. M t vi ton t ki u ny c ch ra d i y Ton t & M t V (AND) Tr v m t gi tr ng (True) n u ch khi c hai ton t c gi tr True V d : if(sciencemarks>90) AND (mathmarks>75) th gn Y cho bi n c nh n h c b ng Ho c (OR) Tr v gi tr True n u m t gi tr l True ho c c hai True u l

V d N u age_category is Senior_citizen OR special_category is handicapped th gi m gi tua l hnh. Gi cng s c gi m n u c hai i u ki n u c th a mn XOR Tr v gi tr True n u ch m t trong cc gi tr l True, cc tr ng h p cn l i cho gi tr False (sai) Ton h ng n t NOT. Chuy n gi tr t True sang False v ng c l i. V d : Qu trnh th c thi cc dng l nh ti p t c cho thc chng trnh. B ng 3.8 Cc ton t logic n khi k t

Cc ton t

i u ki n
c bi t v n g m ba thnh ph n c u

Ton t i u ki n l m t lo i ton t thnh bi u th c i u ki n

C php :
bi u th c 1?bi u th c 2: bi u th c 3;

Khoa Cng ngh Thng tin

ih c L t

Trang 61

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

bi u th c 1: Bi u th c logic. Tr tr v gi tr True ho c False bi u th c 2: Gi tr tr v n u bi u th c 1 xc nh l True

bi u th c 3: Gi tr tr v n u bi u th c 1 xc nh l False Cu l nh sau y ki m tra c nh ng ng i i lm b ng v thng c tu i l n hn 65 khng v gn m t tiu chu n cho h . N u nh ng ng i ny c tu i l 55, tiu chu n gn l Regular

CommuterCategory=(CommuterAge>65)?Senior Citizen: Regular

tr

Ton t gn (=) dng gn m t gi tr vo m t bi n. B n c th gn nhi u gi n nhi u bi n cng m t lc.

V d o n l nh sau gn m t gi tr cho bi n num. Th gi tr trong bi n num c gn cho nhi u bi n trn m t dng l nh n.

int num = 20000; int p,q,r,s; p=q=r=s=num;


Dng l nh cu i cng c th c hi n t ph i qua tri. u tin gi tr bi n num c gn cho s, sau gi tr c a s c gn cho r v c ti p nh v y.

Th t u tin c a cc ton t
Cc bi u th c c vi t ra ni chung g m nhi u ton t . Th t u tin quy t nh tr t t th c hi n cc ton t trn cc bi u th c. B ng d i y li t k th t th c hi n cc ton t trong Java Th t 1. 2. 3. 4. 5. Ton t Cc ton t n nh +,-,++,-Cc ton t s h c v cc ton t d ch nh *,/,+,-,<<,>> Cc ton t quan h nh >,<,>=,<=,= =,!= Cc ton t logic v Bit nh &&,II,&,I,^ Cc ton t gn nh =,*=,/=,+=,-= B ng 3.9 Th t u tin

Thay

i th t u tin

thay i th t u tin trn m t bi u th c, b n c th s d ng d u ngo c n. T ng ph n c a bi u th c c gi i h n trong ngo c n c th c hi n tr c tin. N u b n s dng nhi u ngo c n l ng nhau th ton t n m trong ngo c n

Khoa Cng ngh Thng tin

ih c L t

Trang 62

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

pha trong s th c thi tr c, sau n cc vng pha ngoi. Nhng trong ph m vi m t ngo c n th quy t c th t u tin v n gi nguyn tc d ng.

3.9

nh d ng d li u xu t dng chu i thot

Nhi u khi d li u xu t c hi n th trn mn hnh,chng c n ph i c nh d ng. Vi c nh d ng ny c n s tr gip c a chu i thot (Escape sequences) do Java cung c p Chng ta hy xem v d d i y

System.out.println(Happy\tBirthday);
Cho ta d li u xu t nh sau : Happy Birthday

B ng d i y li t k m t s ch i thot v cng d ng c a chng Chu i thot \n \r \t \\ \ \ M t a con tr n dng k ti p (B t u m t dng m i ) a con tr v u dng (Gi ng k t carriage return) a con tr n v tr Tab-Stop (Nh v tr Tab cu k t ) In v ch cho ng c (backslash) In d u nhy n () In d u nhy kp () B ng 3.10 Cc chu i thot

3.10

i u khi n lu ng

T t c cc mi tr ng pht tri n ng d ng u cung c p m t quy trnh ra quy t nh (decision-making) c g i l i u khi n lu ng, n i u khi n vi c th c thi ng d ng. i u khi n lu ng cho php ng i pht tri n ph n m m ki m tra s t n t i c a m t i u ki n no v ra quy t nh ph h p v i i u ki n . Vng l p l m t c u trc chng trnh gip b n c th dng th c hi n vi c l p l i cc hnh ng khi th c thi chng trnh m khng c n vi t l i cc o n chng trnh nhi u l n. i u khi n r nhnh M nh M nh Vng l p Vng l p while Vng l p do-while Vng l p for if-else swich-case

Khoa Cng ngh Thng tin

ih c L t

Trang 63

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Cu l nh if-else
Cu l nh if-else ki m tra k t qu c a m t i u ki n v th c thi m t thao tc ph h p trn c s k t qu . D ng c a cu l nh if-elsse r t n gi n
C php If (conditon){ action 1 statements; } else{ action 2 statements; }

Condition: Bi u th c Boolean nh ton t so snh. Bi u th c ny tr v gi tr True ho c False action 1: Cc dng l nh c th c thi khi gi tr tr v l True else: T kho xc v gi tr False nh cc cu l nh ti p sau c th c hi n n u i u ki n tr

action 2: Cc cu l nh c th c thi n u i u ki n tr v gi tr False o n chng trnh sau ki m tra xem cc s l ch n hay l v hi n th thng bo ph h p

Chng trnh 3.7 class CheckNumber{ public static void main(String args[]{ int num =10; if(num %2 == 0) System.out.println (num+ is an even number); else System.out.println (num +is an odd number); }

Khoa Cng ngh Thng tin

ih c L t

Trang 64

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

}
o n chng trnh trn num c gn gi tr nguyn l 10. Trong cu l nh if-else i u ki n num %2 tr v gi tr 0 v i u ki n th c hi n l True. Thng bo 10 is an even number c in ra. Lu r ng cho n gi ch c m t cu l nh tc ng c vi t trong o n if v else, b i v y khng c n ph i c a vo d u ngo c mc. Hnh v d i y m t cch dng if-else: Tn i u ki n Tng lng Hnh 3.4 If-else Tom Gim Else-if c John > 3 nm kinh else nghi m Henry

if

Cu l nh switch-case
Pht bi u switch-case c th c s d ng t i cu l nh if-else. N c s d ng trong tnh hu ng m t bi u th c cho ra nhi u k t qu . Vi c s d ng cu l nh switch-case cho php vi c l p trnh d dng v n gi n hn.

C php swich (expression){ case value:action 1 statement; break; case value:action 2 statement; break; : case valueN: actionN statement; break; default: default_action statement; }
expession - Bi n ch a m t gi tr xc nh

value1,value 2,.valueN: Cc gi tr h ng s ph h p v i gi tr trn bi n expression . action1,action2actionN: Cc pht bi u c th c thi khi m t tr ng h p tng ng c gi tr True

Khoa Cng ngh Thng tin

ih c L t

Trang 65

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

break: T kho c s d ng b qua t t c cc cu l nh sau v ginh quy n i u khi n cho c u trc bn ngoi switch default: T kha tu ch n c s d ng ch r cc cu l nh no c th c hi n ch khi t t c cc tr ng h p nh n gi tr False default - action: Cc cu l nh c th c hi n ch khi t t c cc tr ng h p nh n gi tr False o n chng trnh sau xc nh gi tr trong m t bi n nguyn v hi n th ngy trong tu n c th hi n d i d ng chu i. ki m tra cc gi tr n m trong kho ng 0 n 6, chng trnh s thng bo l i n u n m ngoi ph m vi trn.

Chng trnh 3.8 class SwitchDemo{ public static void main(String agrs[]) { int day =4; switch(day) { case 0 : System.out.println(Sunday); break; case 1 : System.out.println(Monday); break; case 2 : System.out.println(Tuesday); break; case 3 : System.out.println(Wednesday); break; case 4 : System.out.println(Thursday); break; case 5: System.out.println(Friday); break;

Khoa Cng ngh Thng tin

ih c L t

Trang 66

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

case 6 :

System.out.println(Satuday); break;

default: System.out.println(Invalid day of week); } } }


N u gi tr c a b n day l 4 ,chng trnh s hi n th Thursday,v c ti p nh v y .

Vng l p While
Vng l p while c s d ng khi vng l p c th c hi n mi cho n khi i u ki n th c thi v n l True. S l ng l n l p khng c xc nh tr c song n s ph thu c vo t ng i u ki n.

C php while(condition){ action statement; : }


condition: Bi u th c Boolean, n tr v gi tr True ho c False. Vng l p s ti p t c cho n khi no gi tr True c tr v . action statement: Cc cu l nh c th c hi n n u condition nh n gi tr True o n chng trnh sau tnh giai th a c a s 5. Giai th a c tnh nh tch 5*4*3*2*1.

Chng trnh 3.9 class WhileDemo{ public static void main(String args[]){ int a = 5,fact = 1; while (a >= 1) {

Khoa Cng ngh Thng tin

ih c L t

Trang 67

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

fact *=a; a--; } System.out.println(The Factorial of 5 is +fact); } }


v d trn, vng l p c th c thi cho n khi i u ki n a>=1 l True. Bi n a c khai bo bn ngoi vng l p v c gn gi tr l 5. Cu i m i vng l p, gi tri c a a gi m i 1. Sau nm vng gi tr c a a b ng 0. i u ki n tr v gi tr False v vng l p k t thc. K t qu s c hi n th The factorial of 5 is 120 o n chng trnh sau hi n thi t ng c a 5 s ch n u tin

Chng trnh 3.11 class ForDemo{ public static void main(String args[]){ int i=1,sum=0; for (i=1;i<=10;i+=2) sum+=i; System.out.println (sum of first five old numbers is +sum); } }
v d trn, i v sum l hai bi n c gn cc gi tr u l 1 v 0 tng ng. i u ki n c ki m tra v khi n cn nh n gi tr True, cu l nh tc ng trong vng l p c th c hi n. Ti p theo gi tr c a i c tng ln 2 t o ra s ch n ti p theo. M t l n n a, i u ki n l i c ki m tra v cu l nh tc ng l i c th c hi n. Sau nm vng, i tng ln 11, i u ki n tr v gi tr False v vng l p k t thc. Thng bo: Sum of first five odd numbers is 25 c hi n th .

Khoa Cng ngh Thng tin

ih c L t

Trang 68

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Tm t t bi h c
L nh import c s d ng trong chng trnh truy c p cc gi th vi n Java. Chng trnh Java ch a m t t p cc gi. Chng trnh c th ch a cc dng gi i thch. Trnh bin d ch s b qua cc dng gi i thch ny. Token l thnh ph n nh nh t c a chng trnh. C nm lo i token
inh danh (identifiers) T kha (keywords) K t phn cch (separators) Nguyn d ng (Literals) Cc ton t

Java c cc ki u d li u xy d ng s n g I l ki u d li u nguyn thu . Cc bi n c khai bo v I m t d li u xc nh. Hy th n tr ng khi khai bo tn bi n lo i tr kh nng nh m l n. Java cung c p cc ch nh truy xu t sau y :
Cng c ng (public) B o v (protected) Ring t (private)

Java cung c p cc b ngha (modifiers) sau y:


Tnh (static) Tr u t ng (abstract) final

Kh i t o hm c hai ki u :
T ng minh (Explicit) Ng m nh (Implicit)

Java cung c p nhi u d ng ton t :


Cc ton t s h c Cc ton t bit Cc ton t quan h Cc ton t logic Ton t u ki n Ton t gn

ng d ng Java c m t l p ch a phng th c main. Cc tham s c th c truy n vo phng th c main nh cc tham s l nh (command line parameters). Java cung c p nh ng c u trc sau: if-else

Khoa Cng ngh Thng tin

ih c L t

Trang 69

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

switch for while do while

Khoa Cng ngh Thng tin

ih c L t

Trang 70

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Ki m tra s ti n b
1. Trong Java, ki u d li u d ng byte n m trong gi i h n t . n 2. Hy ch cc danh nh h p l : a. Tel_num b. Emp1 c. 8678 d. batch.no 3. Cho bi t k t qu thu c khi th c hi n o n chng trnh sau? class me { public static void main(String srgs[ ]) { int sales=820; int profit=200; System.out.println((sale +profit)/10*5); } } 4. .l s ci t c a cc hnh ng c a i t ng 5. Phng th c public c th truy c p phng th c private trong cng m t l p. ng/Sai 6. static hm r ng phng th c khng c m v c b sung trong cc l p con ng/Sai Khi b n khng nh nghi m t hm kh i t o cho m t l p, JVM s cung c p m t hm m c nh ho c m t hm kh i t o n (implicit). ng/Sai Vng l p while th c thi t nh t m t l n th m ch n u i u ki n c xc nh l False ng/Sai

Khoa Cng ngh Thng tin

ih c L t

Trang 71

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Bi t p
1. Hy vi t m t o n chng trnh in ra dng ch Welcome to the world of Java 2. Hy vi t hai phng th c kh i t o t ng minh cho m t l p dng tnh di n tch hnh ch nh t. Khi m t gi tr c truy n vo phng th c kh i t o, n cho r ng di v chi u r ng b ng nhau v b ng gi tr truy n vo. Lc , n s tnh di n tch tng ng. Khi hai gi tr c truy n vo, n s tnh di n tch hnh ch nh t. 3. Vi t m t chng trnh th c hi n nh ng vi c sau y: a. Khai bo v gn gi tr u cho cc bi n m v n l 100 v 200 tng ng. b. Theo cc i u ki n: n u m b ng 0, hi n th k t qu tng ng. c. N u m l n hn n , hi n th k t qu tng ng. d. Ki m tra gi tr n l ch n hay l . 4. Vi t m t chng trnh hi n th t ng cc b i s c a 7 n m gi a 1 v 100. 5. Vi t chng trnh c ng b y s h ng c a dy sau: 1!+2!+3!.

Khoa Cng ngh Thng tin

ih c L t

Trang 72

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Chng 4:

CC GI & GIAO DI N
N i dung chnh
nh ngha m t giao di n Ci t m t giao di n S d ng giao di n nh l m t ki u d li u nh ngha gi T o v s d ng cc gi Vai tr c a cc gi trong vi c i u khi n truy c p Nh ng thnh ph n c a gi java.lang Nh ng thnh ph n c a gi java.util

4.1 Gi i thi u
Gi v giao di n l hai thnh ph n chnh c a chng trnh Java. Cc gi c lu tr theo ki u phn c p, v c nh p m t cch t ng minh vo nh ng l p m i c nh ngha. Cc giao di n c th c s d ng ch nh m t t p cc phng th c. Cc phng th c ny c th c hi n th c b i m t hay nhi u l p. M t t p tin ngu n Java c th ch a m t ho c t t c b n ph n sau y: M t cu l nh khai bo gi. Nh ng cu l nh nh p thm cc gi ho c cc l p khc vo chng trnh. M t khai bo l p cng c ng. M t s cc l p d ng ring t c a gi. M t t p tin ngu n Java s c khai bo l p public n. T t c nh ng pht bi u khc tu ch n. Chng trnh nn c vi t theo th t : t tn gi, l nh nh p cc gi, v nh ngha l p.

4.2 Cc giao di n
Giao di n l m t trong nh ng khi ni m quan tr ng nh t c a ngn ng Java. N cho php m t l p c nhi u l p cha. Cc chng trnh Java c th th a k ch m t l p t i m t th i i m, nhng c th hi n th c hng lo t giao di n. Giao di n c s d ng thay th m t l p tr u t ng, khng c m t s k th a m th c thi no. Giao di n tng t nh cc l p tr u t ng. S khc nhau ch m t l p tr u t ng c th c nh ng hnh vi c th , nhng m t giao di n th khng th c m t phng th c c th no c hnh vi c a c a ring mnh. Cc giao di n c n c hi n th c. M t l p tr u t ng c th c th a k , nhng khng th t o ra c i t ng.

Cc b c

t o m t giao di n c li t k

d i y:

nh ngha giao di n: M t giao di n c

nh ngha nh sau:

Khoa Cng ngh Thng tin

ih c L t

Trang 73

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Chng trnh 4.1 //Giao di n v i cc phng th c public interface myinterface{ public void add(int x,int y); public void volume(int x,int y,int z); } //Giao di n nh ngha cc h ng s

public interface myconstants{ public static final double price=1450.00; public static final int counter=5; }
Chng trnh trn c d ch nh sau:

javac myinterface.java
M t giao di n c hi n th c v i t kho implement. Trong tr ng h p trn, giao di n cho php ng d ng m i quan h is a . V d :

class demo implements myinterface


N u nhi u hn m t giao di n c th c thi, cc tn s m t d u ph y. i u ny c trnh by nh sau: c ngn cch v i nhau b i

class Demo implements MyCalc, Mycount


Hy ghi nh cc lu sau trong khi t o m t giao di n: T t c cc phng th c trong cc giao di n ny ph i l ki u public. Cc phng th c c nh ngha trong m t l p m l p ny hi n th c giao di n.

Hi n th c giao di n
Cc giao di n khng th th a k cc l p, nhng chng c th th a k cc giao di n khc. N u khi b n hi n th c m t giao di n m th a k cc giao di n khc, b n nh ngha cc phng th c trong giao di n m i giao di n th a k . Trong v d trn, cc phng th c ch c khai bo, m khng c nh ngha. Cc phng th c ph i c nh ngha trong m t l p m l p hi n th c giao di n ny. Ni m t cch khc, b n c n ch ra hnh vi c a phng th c. T t c cc phng th c trong cc giao di n

Khoa Cng ngh Thng tin

ih c L t

Trang 74

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

ph i l ki u public. B n khng c s d ng cc t kha b sung khc nh protected, private,.. khi khai bo cc phng th c trong giao di n. o n m Chng trnh 4.2 bi u di n m t giao di n c ci t nh th no:

Chng trnh 4.2 import java.io.*; class Demo implements myinterface{ public void add(int x,int y) { System.out.println( +(x+y)); //Gi s phng th c add c khai bo trong giao di n } public void volume(int x,int y,int z) { System.out.println( +(x*y*z)); //Gi s phng th c volume c khai bo trong giao di n } public static void main(String args[]){ Demo d=new Demo(); d.add(10,20); d.volume(10,10,10); } }
Khi nh ngha m t giao di n m i, c ngha l nh ngha m t ki u d li u tham chi u m i. Ta c th s d ng cc tn giao di n b t c ni u nh b t k ki u d li u khc. Ch c m t th hi n c a l p m l p th c thi giao di n c th c gn cho m t bi n tham chi u. Ki u c a bi n tham chi u l tn c a giao di n.

4.3 Cc gi
Gi c coi nh cc th m c, l ni b n t ch c cc l p v cc giao di n c a b n. Cc chng trnh Java c t ch c nh nh ng t p c a cc gi. M i gi g m c nhi u l p, v/ho c cc giao di n c coi nh l cc thnh vin c a n. l m t

Khoa Cng ngh Thng tin

ih c L t

Trang 75

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

phng n thu n l i lu tr cc nhm c a nh ng l p c lin quan v i nhau d i m t ci tn c th . Khi b n ang lm vi c v i m t chng trnh ng d ng, b n t o ra m t s l p. Cc l p c n c t ch c m t cch h p l. i u tr nn d dng khi ta t ch c cc t p tin l p thnh cc gi khc nhau. Hy t ng t ng r ng m i gi gi ng nh m t th m c con. T t c cc i u m b n c n lm l t cc l p v cc giao di n c lin quan v i nhau vo cc th m c ring, v i m t ci tn ph n nh c m c ch c a cc l p. Ni tm l i, cc gi c ch cho cc m c ch sau: Chng cho php b n t ch c cc l p thnh cc n v nh hn (nh l cc th m c), v lm cho vi c xc nh v tr tr nn d dng v s d ng cc t p tin c a l p m t cch ph h p. Gip trnh cho vi c t tn b xung t (trng l p tn). Khi b n lm vi c v i m t s cc l p b n s c m th y kh quy t nh t tn cho cc l p v cc phng th c. i lc b n mu n s d ng tn gi ng nhau m tn lin quan n l p khc. Cc gi gi u cc l p trnh vi c t tn b xung t. Cc gi cho php b n b o v cc l p, d li u v phng th c m c r ng hn trn m t n n t ng class-to-class. Cc tn c a gi c th c s d ng nh n d ng cc l p. Cc gi cng c th ch a cc gi khc. t o ra m t l p l thnh vin c a gi, b n c n b t u m ngu n c a b n v i m t khai bo gi, nh sau:

package mypackage;
Hy ghi nh cc i m sau trong khi t o gi: o n m ph i b t u v i m t pht bi u package. i u ny ni ln r ng l p c nh ngha trong t p tin l m t ph n c a gi xc nh. M ngu n ph i n m trong cng m t th m c, m th m c l i l tn gi c a b n. Quy c r ng, cc tn gi s b t u b ng m t ch th ng phn bi t gi a l p v gi. Cc pht bi u khc c th xu t hi n sau khai bo gi l cc cu l nh nh p, sau chng b n c th b t u nh ngha l p c a b n. Tng t t t c cc t p tin khc, m i l p trong m t gi c n c bin d ch. cho chng trnh Java c a b n c kh nng s d ng cc gi , hy nh p (import) chng vo m ngu n c a b n. S khai bo sau y l h p l v khng h p l :

H pl package mypackage; import java.io.*; Khng h p l import java.io.*;

Khoa Cng ngh Thng tin

ih c L t

Trang 76

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

package mypackage;
C cc tu ch n sau trong khi nh p vo m t gi: C th nh p vo m t t p tin c th t gi:

import java.mypackage.calculate
C th nh p ton b gi:

import java.mypackage.*;
My o Java s qu n l cc thnh ph n n m trong cc gi c nh p vo. L nh nh p import -java.io.*. B n thn Java c ci t s n m t t p cc gi, b ng d i y c p n m t vi gi c s n c a Java:

Gi java.lang java.io java.applet java.awt java.util java.net

M t Khng c n ph i khai bo nh p. Gi ny lun c nh p cho b n. Bao g m cc l p tr gip cho b n t t c cc thao tc vo ra. Bao g m cc l p b n c n th c thi m t applet trong trnh duy t. Cc thnh ph n xy d ng giao di n ho (GUI). Cung c p nhi u l p v nhi u giao di n ti n ch khc nhau, nh l cc c u trc d li u, l ch, ngy thng, v.v.. Cung c p cc l p v cc giao di n cho vi c l p trnh m ng TCP/IP. B ng 4.1 Cc gi trong Java.

Bn c nh , Java cn cung c p thm nhi u gi pht tri n ng d ng v applet. N u b n khng khai bo cc gi trong o n m c a b n, th cc l p v cc giao di n c a b n sau khi k t thc s n m trong m t gi m c nh m khng c tn. Thng th ng, gi m c nh ny ch c ngha cho cc ng d ng nh ho c cc ng d ng t m th i. Khi b n b t u vi c pht tri n cho m t ng d ng l n, b n c khuynh h ng pht tri n m t s cc l p. B n c n t ch c cc l p trong cc th m c khc nhau d dng truy c p. lm c i u ny, b n ph i t chng vo cc gi. ngha l n nh t c a gi l b n c kh nng s d ng cc tn l p gi ng nhau, nhng b n ph i t chng vo cc gi khc nhau.

4.3.1 T o m t gi
Gi l m t phng th c h u d ng nhm cc l p m trnh c cc tn trng nhau. Cc l p v i nh ng tn gi ng nhau c th t vo cc gi khc nhau. Cc l p c nh ngha b i ng i s d ng cng c th c nhm l i trong cc gi. Cc b c sau y cho php t o nn m t gi do ng i dng nh ngha:

Khoa Cng ngh Thng tin

ih c L t

Trang 77

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Khai bo gi b ng cch s d ng c php thch h p. o n m ph i b t u v i khai bo gi. i u ny ch ra r ng l p c nh ngha trong t p tin l m t ph n c a gi xc nh.

package mypackage;
S d ng pht bi u import nh p cc gi chu n theo yu c u.

import java.util.*;
Khai bo v nh ngha cc l p s n m trong gi . T t c cc thnh ph n c a gi s l public, c th c truy c p t bn ngoi. My o Java (JVM) qu n l t t c cc ph n t n m trong gi .

package mypackage; //khai bo gi import java.util.*; public class Calculate // nh ngha m t l p { int var; Calculate(int n) { var = n; //cc phng th c // public class Display // nh ngha m t l p { //Cc phng th c } } }

Khoa Cng ngh Thng tin

ih c L t

Trang 78

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Lu cc nh ngha trn trong m t t p tin v i ph n m r ng .java, v d ch cc l p c nh ngha trong gi. Vi c d ch c th th c hi n v i tham s -d. Ch c nng ny t o m t th m c trng v i tn gi, v t t p tin .class vo th m c c ch r.

javac d d:\temp Calculate.java


N u khai bo gi khng c trong chng trnh, l p ho c giao di n s n m trong gi m c nh m khng c tn. Ni chung, gi m c nh ny th ch c ngha cho cc ng d ng nh ho c t m th i. Hy ghi nh cc i m sau y khi b n khai thc cc gi do ng i dng nh ngha trong cc chng trnh khc: M ngu n c a cc chng trnh ph i t n t i trong cng m t th m c v i gi c nh ngha b i ng i s d ng. cho cc chng trnh Java khc s d ng c cc gi , hy khai bo chng vo o n m ngu n. nh p m t l p ta dng:

import java.mypackage.Calculate;
nh p ton b m t gi, ta lm nh sau:

import java.mypackage.*;
T o m t tham chi u sau: n cc thnh ph n c a gi. Ta dng o n m n gi n

import java.io.*; import mypackage.Calculate; class PackageDemo{ public static void main(String args[]){ Calculate calc = new Calculate(); } }
N u pht bi u import cho gi khng c s d ng, th khi s d ng l p ph i ch ra l p gi no. C php nh sau:

mypackage.Calculate calc = new mypackage.Calculate();

4.3.2 Thi t l p ng d n cho l p


Chng trnh d ch v chng trnh thng d ch tm ki m cc l p trong th m c hi n hnh, v t p tin nn ch a cc l p c a JDK. i u ny c ngha cc t p tin nn

Khoa Cng ngh Thng tin

ih c L t

Trang 79

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

ch a cc l p c a JDK v th m c hi nh hnh ch a m ngu n t ng c t vo classpath. Tuy nhin, trong m t vi tr ng h p, b n c n ph i t thi t l p classpath. Classpath l m t danh sch cc th m c, danh sch ny tr gip tm ki m cc t p tin .class tng ng. Thng th ng, ta khng nn thi t l p mi tr ng classpath lu di. N ch thch h p khi thi t l p CLASSPATH ch y chng trnh, ch thi t l p ng d n cho vi c th c thi hi n th i.

javac classpath c:\temp Packagedemo.java


Th t c a cc m c trong classpath r t quan tr ng. Khi b n th c thi o n m c a b n, my o Java s tm ki m cc m c trong classpath theo th t cc th m c trong classpath, cho n khi n tm th y l p c n tm. V d c a m t gi nh sau:

Chng trnh 4.3 package mypackage; public class calculate{ public double volume(double height, double width,double depth){ return (height*width*depth); } public int add(int x,int y){ return (x+y); } public int divide(int x,int y){ return (x/y); } }
s d ng gi ny, b n c n ph i: Nh p l p c s d ng. Nh p ton b gi. S d ng cc thnh ph n c a gi. B n c n d ch t p tin ny. N c th c d ch v i tu ch n d, nh m t th m c v i tn c a gi v t t p tin .class vo th m c ny. javac n t o

Khoa Cng ngh Thng tin

ih c L t

Trang 80

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

javac d c:\temp calculate.java


Chng trnh bin d ch t o m t th m c c g i l mypackage trong th m c temp, v lu tr t p tin calculate.class vo th m c ny. V d sau bi u di n cch s d ng m t gi:

Chng trnh 4.4 import java.io.*; import mypackage.calculate; class PackageDemo{ public static void main(String args[]){ calculate calc = new calculate(); int sum = calc.add(10,20); double vol = calc.volume(10.3f,13.2f,32.32f); int div = calc.divide(20,4); System.out.println(The addition is: +sum); System.out.println(The Volume is: +vol); System.out.println(The division is: +sum); } }
N u b n s d ng m t l p t m t gi khc, m khng s d ng khai bo import cho gi , th khi , b n c n ph i s d ng tn l p v i tn gi. mypackage.calculate calc = new mypackage.calculate( );

4.4 Gi v i u khi n truy xu t


Cc gi ch a cc l p v cc gi con. Cc l p ch a d li u v o n m. Java cung c p nhi u m c truy c p thng qua cc l p, cc gi v cc ch nh truy c p. B ng sau y s tm t t quy n truy c p cc thnh ph n c a l p: Cng l p Cng gi- l p th a k (Subclass) public Yes Yes protected Yes Yes No modifier Yes Yes private Yes No

Khoa Cng ngh Thng tin

ih c L t

Trang 81

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Cng gi-khng Yes th a k (nonSubclass) Khc gi-l p th a Yes k (subclass) Khc gi-khng Yes th a k (nonSubclass) B ng 4.2: Truy c p

Yes Yes No

Yes No No

No No No

n cc thnh ph n c a l p.

4.5 Gi java.lang
M c nh, m i chng trnh java u nh p gi java.lang. V th , khng c n l nh nh p gi java.lang ny trong chng trnh. L p bao b c Cc ki u d li u nguyn th y th khng ph i l cc i t ng. V th , chng khng th t o ra hay truy c p b ng phng th c. t o v thao tc ki u d li u nguyn thu , ta s d ng l p bao b c tng ng. B ng sau li t k cc l p trnh bao b c. Cc phng th c c a m i l p ny c trong ph n ph l c. Ki u d li u boolean byte char double float int long short B ng 4.3: Cc l p trnh bao b L p trnh bao b c Boolean Byte Character Double Float Integer Long Short c cho cc ki u d li u nguyn thu .

V d m t vi phng th c c a l p wrapper:

Boolean wrapBool = new Boolean(false); Integer num1 = new Integer(31); Integer num2 = new Integer(3); Int sum = num1.intValue()*num2.intValue(); //intValue() l m t hm c a l p trnh bao b c Integer.
Chng trnh sau y minh h a cch s d ng l p wrapper cho ki u d li u int

Chng trnh 4.5

Khoa Cng ngh Thng tin

ih c L t

Trang 82

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

class CmdArg{ public static void main(String args[]){ int sum = 0; for(int i = 0;i<args.length;i++) sum+= Integer.parseInt(args[i]); System.out.println(T ng l: +sum); } }
Vng l p for c s d ng tm t ng c a cc s c truy n vo t dng l nh. Cc s c lu tr trong m ng String args[]. Thu c tnh length xc nh s cc ph n t trong m ng args[]. M ng args[] l ki u String. V th , cc ph n t ph i c i sang ki u d li u int tr c khi c ng chng. Qu trnh chuy n i c th c hi n v i s gip c a l p trnh bao b c Integer. Phng th c parseInt() trong l p Integer th c hi n qu trnh chuy n i c a ki u d li u chu i sang ki u d li u s nguyn. T t c cc l p trnh bao b c, ngo i tr l p Character c m t phng th c tnh valueOf() nh n m t chu i, v tr v m t gi tr s nguyn c. Cc l p bao b c c a byte, int, long, v short cung c p cc h ng s MIN_VALUE v MAX_VALUE. Cc l p bao b c c a double v long cng cung c p cc h ng POSITIVE_INFINITY v NEGATIVE_INFINITY.

4.5.1 L p String
Chu i l m t dy cc k t . L p String cung c p cc phng th c thao tc v i cc chu i. N cung c p cc phng th c kh i t o (constructor) khc nhau: String str1 = new String( ); //str1 ch a m t chu i r ng. String str2 = new String(Hello World); //str2 ch a Hello World char ch[] = {A,B,C,D,E}; String str3 = new String(ch); //str3 ch a ABCDE

Khoa Cng ngh Thng tin

ih c L t

Trang 83

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

String str4 = new String(ch,0,2); //str4 ch a AB v 0- tnh t k t b t u. u, 2- l s l ng k t k t k t b t

Ton t + c s d ng c ng chu i khc vo chu i ang t n t i. Ton t + ny c g i nh l n i chu i. y, n i chu i c th c hi n thng qua l p StringBuffer. Chng ta s th o lu n v l p ny trong ph n sau. Phng th c concat( ) c a l p String cng c th th c hi n vi c n i chu i. Khng gi ng nh ton t +, phng th c ny khng th ng xuyn n i hai chu i t i v tr cu i cng c a chu i u tin. Thay vo , phng th c ny tr v m t chu i m i, chu i m i s ch a gi tr c a c hai. i u ny c th c gn cho chu i ang t n t i. V d :

String strFirst, strSecond, strFinal; StrFirst = Charlie; StrSecond = Chaplin; //.b ng cch s d ng phng th c concat( ) t i. StrFinal = strFirst.concat(strSecond);
Phng th c concat( ) ch lm vi c v i hai chu i t i m t th i i m.

gn v i m t chu i ang t n

4.5.2 Chu i m c

nh

M t chng trnh Java c th ch a nhi u chu i. String Pool i di n cho t t c cc ch c t o trong chng trnh. M i khi m t chu i c t o, String Pool tm ki m trong n, n u tm th y n u chu i t n t i th khng t o th hi n m ch gn th tm th y cho chu i m i. Vi c ny ti t ki m r t nhi u khng gian b nh . V d :

String day = Monday; String weekday = Monday;


y, m t th hi n cho bi n day, bi n c gi tr l Monday, c t o trong String Pool. Khi chu i b ng ch weekday c t o, c gi tr gi ng nh c a bi n day, m t th hi n ang t n t i c gn n bi n weekday. V c hai bi n day v weekday cng u nh m ch vo chu i gi ng h t nhau trong String Pool. Hnh nh sau minh ho khi ni m c a String Pool.

Khoa Cng ngh Thng tin

ih c L t

Trang 84

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

day

Weekday

1 2 3 4 N

Sunday Monday Hello Aptech World

Hnh 4.1 Khi ni m c a String Pool.

4.5.3 Cc phng th c c a l p String


Trong ph n ny, chng ta s xem xt cc phng th c c a l p String.

charAt( )
Phng th c ny tr v m t k t t i m t v tr trong chu i. V d :

String name = new String(Java Language); char ch = name.charAt(5);


Bi n ch ch a gi tr L, t v tr cc s b t u t 0.

startsWith( )
Phng th c ny tr v gi tr ki u logic (Boolean), ph thu c vo chu i c b t u v i m t chu i con c th no khng. V d :

String strname = Java Language; boolean flag = strname.startsWith(Java);


Bi n flag ch a gi tr true.

endsWith( )
Phng th c ny tr v m t gi tr ki u logic, ph thu c vo chu i k t thc b ng m t chu i con no khng, V d :

String strname = Java Language; boolean flag = strname.endsWith(Java);


Bi n flag ch a gi tr false.

copyValueOf( )

Khoa Cng ngh Thng tin

ih c L t

Trang 85

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Phng th c ny tr v m t chu i c rt ra t m t m ng k t c truy n nh m t i s . Phng th c ny cng l y hai tham s nguyn. Tham s u tin ch nh v tr t ni cc k t ph i c rt ra, v tham s th hai ch nh s k t c rt ra t m ng. V d :

char name[] = {L,a,n,g,u,a,g,e}; String subname = String .copyValueOf(name,5,2);


By gi bi n subname ch a chu i ag.

toCharArray( )
Phng th c ny chuy n chu i thnh m t m ng k t . V d :

String text = new String(Hello World); char textArray[] = text.toCharArray( ); indexOf( )


Phng th c ny tr v th t c a m t k t no , ho c m t chu i trong ph m vi m t chu i. Cc cu l nh sau bi u di n cc cch khc nhau c a vi c s d ng hm.

String day = new String(Sunday); int index1 = day.indexOf(n); //ch a 2

int index2 = day.indexOf(z,2); //ch a 1 n u z khng tm th y t i v tr 2.

int index3 = day.indexOf(Sun); //ch a m c 0 toUpperCase( )


Phng th c ny tr v ch hoa c a chu i.

String lower = new String(good morning); System.out.println(Uppercase: +lower.toUpperCase( ));


Khoa Cng ngh Thng tin ih c L t

Trang 86

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

toLowerCase( )
Phng th c ny tr v ch th ng c a chu i.

String upper = new String(APTECH); System.out.println(Lowercase: +upper.toLowerCase( )); trim()


Phng th c ny c t b kho ng tr ng hai u chu i. Hy th th y s khc nhau tr c v sau khi c t b kho ng tr ng. o n m sau

String space = new String( System.out.println(space);

Spaces

);

System.out.println(space.trim()); //Sau khi c t b kho ng tr ng equals()


Phng th c ny so snh n i dung c a hai i t ng chu i.

String name1 = Aptech, name2 = APTECH; boolean flag = name1.equals(name2);


Bi n flag ch a gi tr false.

4.5.4 L p StringBuffer
L p StringBuffer cung c p cc phng th c khc nhau thao tc m t i t ng d ng chu i. Cc i t ng c a l p ny r t m m d o, l cc k t v cc chu i c th c chn vo gi a i t ng StringBuffer, ho c n i thm d li u vo t i v tr cu i. L p ny cung c p nhi u phng th c kh i t o. Chng trnh sau minh ho cch s d ng cc phng th c kh i t o khc nhau t o ra cc i t ng c a l p ny.

Chng trnh 4.6 class StringBufferCons{ public static void main(String args[]){ StringBuffer s1 = new StringBuffer(); StringBuffer s2 = new StringBuffer(20); StringBuffer s3 = new StringBuffer(StringBuffer);

Khoa Cng ngh Thng tin

ih c L t

Trang 87

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

System.out.println(s3 = + s3); System.out.println(s2.length()); //ch a 0 System.out.println(s3.length()); //ch a 12 System.out.println(s1.capacity()); //ch a 16 System.out.println(s2.capacity()); //ch a 20 System.out.println(s3.capacity()); //ch a 28 } }
length() v capacity() c a StringBuffer l hai phng th c hon ton khc nhau. Phng th c length() c p n s cc k t m i t ng th c ch a, trong khi capacity() tr v t ng dung l ng c a m t i t ng (m c nh l 16) v s k t trong i t ng StringBuffer. Dung l ng c a StringBuffer c th thay i v i phng th c ensureCapacity(). i s int c truy n n phng th c ny, v dung l ng m i c tnh ton nh sau:

NewCapacity = OldCapacity * 2 + 2
Tr c khi dung l ng c a StringBuffer c tra: N u dung l ng(NewCapacity) m i l n hn i s c truy n cho phng th c ensureCapacity(), th dung l ng m i (NewCapacity) c t. N u dung l ng m i nh hn i s c truy n cho phng th c ensureCapacity(), th dung l ng c t b ng gi tr tham s truy n vo. Chng trnh 4.7 minh ho dung l ng c tnh ton v c t nh th no. t l i, i u ki n sau s c ki m

Chng trnh 4.7 class test{ public static void main(String args[]){
StringBuffer s1 = new StringBuffer(5); System.out.println(Dung l ng c a b nh //ch a 5 s1.ensureCapacity(8); m = +s1.capacity());

Khoa Cng ngh Thng tin

ih c L t

Trang 88

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

System.out.println(Dung l ng c a b nh //ch a 12 s1.ensureCapacity(30); System.out.println(Dung l ng c a b nh //ch a 30

m = +s1.capacity());

m = +s1.capacity());

} }
Trong o n m trn, dung l ng ban u c a s1 l 5. Cu l nh

s1.ensureCapacity(8);
Thi t l p dung l ng c a s1 n 12 =(5*2+2) b i v dung l ng truy n vo l 8 nh hn dung l ng c tnh ton l 12 .

s1.ensureCapacity(30);
Thi t l p dung l ng c a s1 n 30 b i v dung l ng truy n vo l 30 th l n hn dung l ng c tnh ton (12*2+2).

4.5.5 Cc phng th c l p StringBuffer


Trong ph n ny, chng ta s xem xt cc phng th c c a l p StringBuffer v i m t chng trnh.

append()
Phng th c ny n i thm m t chu i ho c m t m ng k t vo cu i cng c a i t ng StringBuffer. V d :

StringBuffer s1 = new StringBuffer(Good); s1.append(evening);


Gi tr trong s1 by gi l goodevening.

insert()
Phng th c ny c hai tham s . Tham s u tin l v tr chn. Tham s th hai c th l m t chu i, m t k t (char), m t gi tr nguyn (int), hay m t gi tr s th c (float) c chn vo. V tr chn s l n hn hay b ng 0, v nh hn hay b ng chi u di c a i t ng StringBuffer. B t k i s no, tr k t ho c chu i, c chuy n sang chu i v sau m i c chn vo. V d :

StringBuffer str = new StringBuffer(Java sion);

Khoa Cng ngh Thng tin

ih c L t

Trang 89

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

str.insert(1,b);
Bi n str ch a chu i Jbava sion.

charAt()
Phng th c ny tr v m t gi tr k t trong c ch nh.V d : i t ng StringBuffer t i v tr

StringBuffer str = new StringBuffer(James Gosling); char letter = str.charAt(6); setCharAt()


Phng th c ny c s d ng thay th k t trong m t StringBuffer b ng m t k t khc t i m t v tr c ch nh.

//ch a G

StringBuffer name = new StringBuffer(Jawa); name.setCharAt(2,v);


Bi n name ch a Java.

setLength()
Phng th c ny thi t l p chi u di c a i t ng StringBuffer. N u chi u di c ch nh nh hn chi u di d li u hi n t i c a n, th cc k t th a s b c t b t. N u chi u di ch nh nhi u hn chi u di d li u th cc k t null c thm vo ph n cu i c a StringBuffer

StringBuffer str = new StringBuffer(10); str.setLength(str.length() +10); getChars()


Phng th c ny c s d ng trch ra cc k t t i t ng StringBuffer, v sao chp chng vo m t m ng. Phng th c getChars() c b n tham s sau: Ch s u: v tr b t u, t ni m k t c l y ra.

Ch s k t thc: v tr k t thc M ng: M ng ch, ni m cc k t c sao chp. c sao chp vo m ng ch

V tr b t u trong m ng ch: Cc k t t v tr ny. V d :


Khoa Cng ngh Thng tin ih c L t

Trang 90

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

StringBuffer str = new StringBuffer(Leopard); char ch[] = new char[10]; str.getChars(3,6,ch,0);


By gi bi n ch ch a par

reverse()
Phng th c ny o ng c n i dung c a m t m t i t ng StringBuffer khc. V d : i t ng StringBuffer, v tr v

StringBuffer str = new StringBuffer(devil); StringBuffer strrev = str.reverse();


Bi n strrev ch a lived.

4.5.6 L p java.lang.Math
L p ny ch a cc phng th c tnh (static) Chng c m t nh sau: C php l Math.<tn hm> th c hi n cc thao tc ton h c.

abs()
Phng th c ny tr v gi tr tuy t i c a m t s . i s c truy n n n c th l ki u int, float, double, ho c long. Ki u d ki u byte v short c chuy n thnh ki u int n u chng c truy n t i nh l m t i s . V d :

int num = -1; Math.abs(num) //tr v 1. ceil()


Phng th c ny tm th y s nguyn nh nh t l n hn ho c b ng truy n vo. is c

floor()
Phng th c ny tr v s nguyn l n nh t nh hn ho c b ng truy n vo. i s c

System.out.println(Math.ceil(8.02)); //tr v 9.0 System.out.println(Math.ceil(-1.3)); //tr v -1.0

Khoa Cng ngh Thng tin

ih c L t

Trang 91

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

System.out.println(Math.ceil(100)); //tr v 100.0 System.out.println(Math.floor(-5.6)); //tr v -6.0 System.out.println(Math.floor(201.1)); //tr v 201 System.out.println(Math.floor(100)); //tr v 100 max()
Phng th c ny tm gi tr l n nh t trong hai gi tr c truy n vo. Cc s c truy n vo c th l ki u int, long, double, v float. i

min()
Phng th c ny tm gi tr nh nh t trong hai gi tr c truy n vo. Cc s c truy n vo c th l ki u int, long, double v float. i

round()
Phng th c ny lm trn Math.round(34.5) tr v 35. i s c d u ph y ng. V d , cu l nh

random()
Phng th c ny tr v m t s ng u nhin ki u double gi a 0.0 v 1.0.

sqrt()
Phng th c ny tr v cn b c hai c a m t s . V d , cu l nh Math.sqrt(144) tr v 12.0.

sin()
Phng th c ny tr v sine c a m t s , n u gc c truy n V d : Math.sin(Math.PI/2) tr v 1.0, gi tr c a sin 450. PI/2 radian = 90 . Gi tr c a PI c n b ng radian.

nh ngha trong l p Math (Math.PI).

cos()
Phng th c ny tr v cosine c a m t gc tnh b ng radian.

tan()

Khoa Cng ngh Thng tin

ih c L t

Trang 92

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Phng th c ny tr v tan c a m t gc tnh b ng radian.

4.5.7 L p Runtime
L p Runtime ch a thng tin v mi tr ng th c thi. L p ny c s d ng cho vi c qu n l b nh , v vi c th c thi c a cc qu trnh x l khc. M i chng trnh Java c m t th hi n c a l p ny, cho php ng d ng giao ti p v i mi tr ng. N khng th c kh i t o, m t ng d ng khng th t o ra m t th hi n c a thu c l p ny. Tuy nhin, chng ta c th tham chi u th hi n trong lc th c hi n chng trnh t vi c dng phng th c getRuntime(). By gi , chng ta bi t r ng vi c thu gom cc d li u khng thch h p trong Java l m t ti n trnh t ng, v ch y m t cch nh k. kch ho t m t cch th cng b thu th p d li u khng cn c s d ng ta g i phng th c gc() trn i t ng Runtime hi n th i. xem chi ti t vi c c p pht b nh , s d ng cc phng th c totalMemory() v freeMemory().

Runtime r = Runtime.getRunTime(); .. .. long freemem = r.freeMemory(); long totalmem = r.totalMemory(); r.gc();


B ng sau trnh by m t vi phng th c c a l p ny: Phng th c exit(int) ngha D ng vi c th c thi, v tr v gi tr c a chng trnh cho h i u hnh. N u thot bnh th ng th tr v 0; gi tr khc 0 cho thot khng bnh th ng. Tr v kch th c b nh cha s d ng tnh b ng byte Tr v th hi n Runtime G i b ph n thu th p rc. Tr v kch th c b nh tnh b ng byte. Ch y chng trnh mi tr ng bn ngoi B ng 4.4 L p Runtime

freeMemory() getRuntime() gc() totalMemory() exec(String)

Chng trnh 4.7 class RuntimeDemo{ public static void main(String args[]) {
Khoa Cng ngh Thng tin ih c L t

Trang 93

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Runtime r = Runtime.getRuntime(); Process p = null; try { p = r.exec(calc.exe); } catch(Exception e){ System.out.println(Error executing calculator); } } }
C th tham chi u n Runtime hi n hnh thng qua phng th c Runtime.getRuntime(). Sau , ch y chng trnh calc.exe v tham chi u n calc.exe trong i t ngProcess.

4.5.8 L p System
L p System cung c p cc ti n chi nh l, dng vo, dng ra chu n v dng l i. N cng cung c p phng th c truy c p cc thu c tnh lin quan n h th ng Runtime c a Java, v cc thu c tnh mi tr ng khc nhau nh l, phin b n, ng d n, hay cc d ch v , v.v..Cc tr ng c a l p ny l in, out, v err, cc tr ng ny tiu bi u cho dng vo, ra v l i chu n tng ng. B ng sau m t cc phng th c c a l p ny: Phng th c exit(int) gc() getProperties() setProperties() currentTimeMillis() arrayCopy(Object, int, Object, int, int) M c ch D ng vi c th c thi, v tr v gi tr c a o n m. 0 cho bi t c th thot ra m t cch bnh th ng. G i b ph n thu th p rc. Tr v thu c tnh c a h th ng th i gian ch y Java. Thi t l p cc thu c tnh h th ng hi n hnh. Tr v th i gian hi n t i b ng mili giy (ms), c tnh t lc 0 gi ngy 01 thng 01 nm 1970. Sao chp m ng. B ng 4.5 L p System.

Khoa Cng ngh Thng tin

ih c L t

Trang 94

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

L p System khng th t o th hi n c. o n m trong chng trnh sau v hi n th m t vi cc thu c tnh mi tr ng Java.

Chng trnh 4.9 class SystemDemo{ public static void main(String args[]){ System.out.println(System.getProperty(java.class.path)); System.out.println(System.getProperty(java.home)); System.out.println(System.getProperty(java.class.version)); System.out.println(System.getProperty(java.specification.vendor)); System.out.println(System.getProperty(java.specification.version)); System.out.println(System.getProperty(java.vendor)); System.out.println(System.getProperty(java.vendor.url)); System.out.println(System.getProperty(java.version)); System.out.println(System.getProperty(java.vm.name)); } }
M i thu c tnh c n in ra c n c cung c p nh m t tham s (d ng chu i) n phng th c System.getProperty(). Phng th c ny s tr v thng tin tng ng v phng th c System.out.println() in ra mn hnh. K t qu chng trnh trn nh sau:

Khoa Cng ngh Thng tin

ih c L t

Trang 95

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Hnh 4.2 V d v l p System

4.5.9 L p Class
Cc th hi n c a l p ny ch a tr ng thi th i gian th c hi n c a m t i t ng trong ng d ng Java ang ch y. i u ny cho php chng ta truy c p thng tin v i t ng trong th i gian ch y. Chng ta c th l y m t i t ng c a l p ny, ho c m t th hi n b ng m t trong ba cch sau: S d ng phng th c getClass() c a i t ng.

S d ng phng th c tnh forName() c a l p l y m t th hi n c a l p thng qua tn c a l p . S d ng m t i t ng ClassLoader n p m t l p m i. L p Class khng c phng th c xy d ng. Chng trnh sau minh ho cch s d ng phng th c c a m t l p truy c p thng tin c a l p :

Chng trnh 4.10 interface A{ final int id = 1; final String name = Diana; } class B implements A{ int deptno; } class ClassDemo{ public static void main(String args[]) { A a = new B(); B b = new B(); Class x; x = a.getClass(); System.out.println(a is object of type: +x.getName()); x= b.getClass();

Khoa Cng ngh Thng tin

ih c L t

Trang 96

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

System.out.println(b is object of type: +x.getName()); x=x.getSuperclass(); System.out.println(x.getName()+ is the superclass of b.); } }


K t qu ch y chng trnh c m t nh hnh d i y:

Hnh 4.3 Qu trnh xu t ra cc k t qu c a l p Class.

4.5.10 L p Object
L p Object l m t l p cha c a t t c cc l p. D l m t l p do ng i dng nh ngha khng th a k l i b t k m t l p no khc, theo m c nh n th a k l p Object. M t vi cc phng th c c a l p Object c bi u di n bn d i: Phng th c equals(Object) finalize() notify() notifyAll() toString() wait() M c ch So snh i t ng hi n t i v i i t ng khc. Phng th c cu i cng. Thng th ng b nh ngha l p con. Thng bo cho Thread (lu ng) m hi n th i trong tr ng thi ang ch . Thng bo t t c cc Thread (lu ng) hi n hnh trong tr ng thi ch . Tr v m t chu i i di n cho i t ng. a Thread (lu ng) vo tr ng thi ch . B ng 4.6 L p Object.

Trong chng trnh sau, chng ta khng khai bo b t k l p ho c gi no. By gi , chng ta c th t o b ng cch s d ng phng th c equals(). B i v, theo m c nh l p ObjectDemo m r ng l p Object.

Chng trnh 4.11 Class ObjectDemo{ public static void main(String args[]) {

Khoa Cng ngh Thng tin

ih c L t

Trang 97

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

if (args[0].equals(Aptech)) System.out.println(Yes, Aptech is the right choice!); } }

4.6 Gi java.util
Gi Java.util cung c p m t s l p ti n ch Java, th ng xuyn trong t t c cc lo i chng trnh ng d ng. N bao g m m t s l p sau: Hashtable Random Vector StringTokenizer

4.6.1 L p Hashtable
L p Hashtable m ngha trong gi java.util. (value). V d , n c th trnh n nh ng d n, ch r ng l p tr u t ng Dictionary, l p ny cng c nh Hashtable c s d ng nh x kho (key) n gi tr c s d ng nh x cc tn n tu i, nh ng ng i l p c danh cng vi c n lng, v c nh v y.

Hashtable m r ng kch th c khi cc ph n t c thm vo. Khi m t Hashtable m i, b n c th ch nh dung l ng ban u v y u t n p (load factor). i u ny s lm cho hashtable tng kch th c ln, b t c lc no vi c thm vo m t ph n t m i lm v t qua gi i h n hi n hnh c a Hashtable. Gi i h n c a Hashtable l dung l ng nhn ln b i cc y u t c n p.V d : m t b ng bm v i dung l ng 100, v m t y u t n p l 0.75 s c m t gi i h n l 75 ph n t .
Cc phng th c xy d ng cho b ng bm c bi u di n trong b ng sau: Constructor Hashtable(int) Purpose Xy d ng m t b ng m i v i dung l ng ban u c ch nh. Hashtable(int, float) Xy d ng m t l p m i v i dung l ng ban u c ch nh v y u t n p. Hashtable() Xy d ng m t l p m i b ng cch s d ng gi tr m c nh cho dung l ng ban u v y u t n p. B ng 4.7 Cc phng th c xy d ng Hashtable.

Hashtable hash1 = new Hashtable(500,0.80);


Trong tr ng h p ny, B ng bm hash1 s lu tr 500 ph n t . Khi b ng bm lu tr v a y 80% (m t y u t n p vo c a 0.80), kch th c t i a c a n s

Khoa Cng ngh Thng tin

ih c L t

Trang 98

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

c tng ln. M i ph n t trong m t hashtable bao g m m t kho v m t gi tr . Cc ph n t c thm vo b ng bm b ng cch s d ng phng th c put(), v c truy l c b ng cch s d ng phng th c get(). Cc ph n t c th c xo t m t b ng bm v i phng th c remove(). Cc phng th c contains() v containsKey() c th c s d ng tra c u m t gi tr ho c m t kho trong b ng bm. M t vi phng th c c a Hashtable c tm t t trong b ng sau: Phng th c clear() clone() contains(Object) M c ch Xo t t c cc ph n t t b ng bm. T o m t b n sao c a Hashtable. Tr v True n u b ng bm ch a cc i t ng c ch nh. containsKey(Obje Tr v True n u b ng bm ch a kho c ch nh. ct) elements() Tr v m t t p h p ph n t c a b ng bm. get(Object key) Tr v i t ng c kho c ch nh. isEmpty() Tr v true n u b ng bm r ng. keys() Tr v t p h p cc kho trong b ng bm. put(Object, Thm m t ph n t m i vo b ng bm (Object, Object) l Object) kho v gi tr . rehash() Thay i b ng bm thnh m t b ng bm l n hn. remove(Object Xo m t i t ng c cho b i kho c ch nh. key) size() Tr v s ph n t trong b ng bm. toString() Tr v i di n chu i c nh d ng cho b ng bm. B ng 4.8 Cc phng th c l p Hashtable. Chng trnh sau s d ng l p Hashtable. Trong chng trnh ny, tn c a cc t p nh l cc kho, v cc nm l cc gi tr . contains c s d ng tra c u ph n t nguyn 1969, th y c danh sch ch a b t k cc t p nh t 1969. containsKey c s d ng tm ki m cho kho Animals, tm t p nh trong b ng bm. Phng th c get() c s d ng tm t p nh Wish You Were Here c trong b ng bm khng. Phng th c get() tr v ph n t cng v i kho (tn v nm).

Chng trnh 4.12 import java.util.*; public class HashTableImplementer{ public static void main(String args[]) { //t o m t b ng bm m i Hashtable ht = new Hashtable(); //thm cc t p nh t t nh t c a Pink Floyd

Khoa Cng ngh Thng tin

ih c L t

Trang 99

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

ht.put(Pulse, new Integer(1995)); ht.put(Dark Side of the Moon, new Integer(1973)); ht.put(Wish You Were Here, new Integer(1975)); ht.put(Animals, new Integer(1997)); ht.put(Ummagumma, new Integer(1969)); //Hi n th b ng bm System.out.println(Initailly: +ht.toString()); //ki m tra cho b t k t p nh no t 1969 if(ht.contains(new Integer(1969))) System.out.println(An album from 1969 exists); //ki m tra cho t p nh cc con th if(ht.containsKey(Animals)) System.out.println(Animals was found); //Tm ra Integer year = (Integer)ht.get(Wish You Were Here); System.out.println(Wish in+year.toString()); //Xo m t t p nh System.out.println(Removing Ummagumma\r\n); ht.remove(Ummagumma); //Duy t qua t t c cc kho trong b ng. System.out.println(Remaining:\r\n); for(Enumeration enum = ht.keys(); enum.hasMoreElements();) System.out.println((String)enum.nextElement()); } }
Khoa Cng ngh Thng tin ih c L t

you

Were

Here

was

released

Trang 100

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

K t qu s ch y chng trnh nh sau:

Hnh 4.4 K t qu c a HashTableImplementer

4.6.2 L p Random
L p ny l m t b t o s gi ng u nhin. C hai phng th c xy d ng c nh ngha. M t trong nh ng phng th c xy d ng ny l y gi tr kh i u nh m t tham s . Phng th c xy d ng khc khng c tham s , v s d ng th i gian hi n t i nh m t gi tr kh i u. Vi c xy d ng m t b t o s ng u nhin v i m t gi tr kh i u l m t t ng hay, tr khi b n mu n b t o s ng u nhin lun t o ra m t t p cc gi tr gi ng nhau. M t khc, th nh tho ng n r t h u ch t o ra trnh t gi ng nhau c a cc s random. i u ny c ngha trong vi c g r i chng trnh. M t khi b t o s ng u nhin c t o ra, b n c th s d ng b t k cc phng th c sau y c p m t gi tr t n: nextDouble() nextFloat() nextGaussian() nextInt() nextLong() Cc phng th c xy d ng v cc phng th c c a l p Random c tm t t trong b ng sau: Phng th c random() random(long) nextDouble() nextFloat() nextGaussian() M c ch t o ra m t b t o s ng u nhin m i T o ra m t b t o s ng u nhin m i d a trn gi tr kh i t o c ch nh. Tr v m t gi tr ki u double k ti p gi a 0.0 n 1.0 t b t o s ng u nhin. Tr v m t gi tr ki u float k ti p gi a 0.0F v 1.0F t b t o s ng u nhin. Tr v gi tr ki u double c phn ph i Gaussian k ti p t b t o s ng u nhin. T o ra cc gi tr Gaussian s c m t gi tr trung bnh c a 0, v m t
ih c L t

Khoa Cng ngh Thng tin

Trang 101

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

l ch tiu chu n c a 1.0. Tr v gi tr ki u Integer k ti p t m t b t o s ng u nhin. nextLong() Tr v gi tr ki u long k ti p t m t b t o s ng u nhin. setSeed(long) Thi t l p gi tr kh i t o t b t o s ng u nhin. B ng 4.9 Cc phng th c l p Random. nextInt()

4.6.3 L p Vector
M t trong cc v n v i m t m ng l chng ta ph i bi t n l n nh th no khi chng ta t o n. Trong th c t c nhi u tr ng h p khng th xc nh kch th c c a m ng tr c khi t o n. L p Vector c a Java gi i quy t v n ny. N cung c p m t d ng m ng v i kch th c ban u, m ng ny c th tng thm khi nhi u ph n t c thm vo. M t l p Vector lu tr cc m c l ki u Object, n c th dng lu tr cc th hi n c a b t k l p Java no. M t l p Vector c th lu tr cc ph n t khc nhau, cc ph n t khc nhau ny l th hi n c a cc l p khc nhau. T i b t k th i i m, m t l p Vector c dung l ng lu tr m t s l ng no cc ph n t . Khi m t l p Vector dng h t dung l ng c a n, th dung l ng c a n c gia tng b i m t s l ng ring cho Vector . L p Vector cung c p ba phng th c xy d ng khc nhau m c th chng ta ch nh dung l ng kh i t o, v tng s l ng c a m t Vector, khi n c t o ra. Cc phng th c xy d ng ny c tm t t trong b ng sau: Phng th c xy d ng M c ch Vector(int) T o ra m t l p Vector m i v i dung l ng ban u c ch nh. Vector(int, int) T o ra m t l p Vector m i v i dung l ng ban u c ch nh, v l ng tng. Vector() T o ra m t l p Vector m i v i dung l ng kh i t o m c nh, v l ng tng m c nh. B ng 4.10 cc phng th c xy d ng c a l p Vector. M t ph n c thm vo m t l p Vector b ng cch s d ng phng th c addElement(). Tng t , m t ph n t c th c thay th b ng cch s d ng phng th c setElementAt(). M t l p Vector c th tm ki m b ng cch s d ng phng th c contains(), phng th c ny n gi n ch tm s xu t hi n c a m t i t ng trong Vector. Phng th c elements() tr v m t t p h p cc i t ng c lu tr trong l p Vector. Cc phng th c ny v cc phng th c thnh vin khc c a l p Vector c tm t t trong b ng d i y: Phng th c addElement(Object) capacity() clone() contains(Object) M c ch Thm ph n t c ch nh vo l p Vector. Tr v dung l ng hi n th i c a l p Vector. sao chp l p vector, nhng khng ph i l cc ph n t c a n. Tr v True n u l p Vector ch a i t ng

Khoa Cng ngh Thng tin

ih c L t

Trang 102

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

c ch nh. Sao chp cc ph n t c a l p Vector vo m ng c ch nh. elementAt(int) L y ph n t v tr c ch nh. elements() Tr v m t b ng li t k c a cc ph n t trong l p Vector. ensureCapacity(int) m b o r ng l p Vector c th lu tr t nh t dung l ng t i thi u c ch nh. firstElement() Tr v ph n t u tin trong l p Vector. indexOf(Object) Tm ki m l p Vector, v tr v ch m c u tin tm th y i t ng. indexOf(Object, int) Tm ki m l p Vector b t u t v tr ch nh, tr v v tr u tin tm th y. insertElementAt(Object, Chn i t ng c ch nh t i v tr c int) ch nh. isEmpty() Tr v True n u l p Vector khng c ph n t . lastElement() Tr v ph n t cu i cng trong l p Vector. lastIndexOf(Object) Tm ki m lp Vector, v tr v ch m c c a i t ng tm th y cu i cng. lastIndexOf(Object, int) Tm ki m l p Vector b t u t i s ch m c c ch nh, v tr v ch m c c a ph n t cu i cng tm th y. removeAllElements() Xo t t c cc ph n t t l p Vector. removeElement(Object) Xo i t ng c ch nh t l p Vector. removeElementAt(int) Xo i t ng t i ch m c c ch nh. setElementAt(Object, int) Thay th i t ng t i ch m c c ch nh v i i t ng c ch nh. setSize(int) Thi t l p kch th c c a l p Vector thnh kch th c m i c ch nh. Size() Tr v s c a cc ph n t hi n th i trong l p Vector. toString() Tr v m t chu i ch a n i dung c a l p Vector. trimToSize() nh l i kch th c c a l p Vector di chuy n dung l ng th a trong n. B ng 4.11 Cc phng th c l p Vector copyInto(Object []) Chng trnh sau t o ra m t l p Vector vect. N ch a 6 ph n t : Numbers In Words, One, Two, Three, Four, Five. Phng th c removeElement() c s d ng xo cc ph n t t vect.

Chng trnh 4.13 import java.util.*; public class VectorImplementation{ public static void main(String args[]) {

Khoa Cng ngh Thng tin

ih c L t

Trang 103

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Vector vect = new Vector(); vect.addElement(One); vect.addElement(Two); vect.addElement(Three); vect.addElement(Four); vect.addElement(Five); vect.insertElementAt(Numbers In Words,0); vect.insertElementAt(Four,4); System.out.println(Size: +vect.size()); System.out.println(Vector ); for(int i = 0; i<vect.size(); i++){ System.out.println(vect.elementAt(i)+ , ); } vect.removeElement(Five); System.out.println(); System.out.println(Size: +vect.size()); System.out.println(Vector ); for(int i = 0;i<vect.size();i++) { System.out.print(vect.elementAt(i)+ , ); } } }
Qu trnh hi n th k t qu s c m t nh hnh d i.

Khoa Cng ngh Thng tin

ih c L t

Trang 104

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Hnh 4.5 K t qu c a chng trnh minh ho l p Vector.

4.6.4 L p StringTokenizer
M t l p StringTokenizer c th s d ng tch m t chu i thnh cc ph n t (token) nh hn. V d , m i t trong m t cu c th coi nh l m t token. Tuy nhin, l p StringTokenizer i xa hn vi c phn tch cc t trong cu. tch ra cc thnh token ta c th tu bi n ch ra m t t p d u phn cch cc token khi kh i t o i t ng StringTokenizer. N u ta khng ch ra t p d u phn cch th m c nh l d u tr ng (space, tab, ...). Ta cng c th s d ng t p cc ton t ton h c (+, *, /, v -) trong khi phn tch m t bi u th c. B ng sau tm t t 3 phng th c xy d ng c a l p StringTokenizer: Phng th c xy d ng StringTokenizer(String) ngha T o ra m t i t ng StringTokenizer m i d a trn chu i c ch nh. StringTokenizer(String, Strng) T o ra m t i t ng StringTokenizer m i d a trn (String, String) chu i c ch nh v m t t p cc d u phn cch. StringTokenizer(String, String, T o ra m t i t ng StringTokenizer d a boolean) trn chu i c ch nh, m t t p cc d u phn cch, v m t c hi u cho bi t n u cc d u phn cch s c tr v nh cc token hay khng. B ng 4.12 Cc phng th c xy d ng c a l p StringTokenizer. trn c s d ng trong cc v d sau:

Cc phng th c xy d ng

StringTokenizer st1 = new StringTokenizer(A Stream of words); StringTokenizer st2 = new StringTokenizer(4*3/2-1+4, +-*/, true); StringTokenizer st3 = new StringTokenizer(aaa,bbbb,ccc, ,);

Khoa Cng ngh Thng tin

ih c L t

Trang 105

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Trong cu l nh u tin, StringTokenizer c a st1 s c xy d ng b ng cch s d ng cc chu i c cung c p v d u phn cch m c nh. D u phn cch m c nh l kho ng tr ng, tab, cc k t xu ng dng. Cc d u phn cch ny th ch s d ng khi phn tch vn b n, nh v i st1. Cu l nh th hai trong v d trn xy d ng m t i t ng StringTokenizer cho cc bi u th c ton h c b ng cch s d ng cc k hi u *, +, /, v -. Cu l nh th 3, StringTokenizer c a st3 s d ng d u ph y nh m t d u phn cch. L p StringTokenizer ci t giao di n Enumeration. V th , n bao g m cc phng th c hasMoreElements() v nextElement(). Cc phng th c c th s d ng c a l p StringTokenizer c tm t t trong b ng sau: Phng th c countTokens() hasMoreElements() M c ch Tr v s cc token cn l i. Tr v True n u cn c token ang c nh d u trong chu i. N th gi ng h t nh hasMoreTokens. hasMoreTokens() Tr v True n u cn c token ang c nh d u trong chu i. N gi ng h t nh hasMoreElements. nextElement() Tr v token k ti p trong chu i. N th gi ng nh nextToken. nextToken() Tr v Token k ti p trong chu i. N th gi ng nh nextElement. nextToken(String) Thay i b d u phn cch b ng chu i c ch nh, v sau tr v token k ti p trong chu i. B ng 4.13 Cc phng th c l p StringTokenizer. Hy xem xt chng trnh cho bn d i. Trong v d ny, hai i t ng StringTokenizer c t o ra. u tin, st1 c s d ng phn tch m t bi u th c ton h c. Th hai, st2 phn tch m t dng c a cc tr ng c phn cch b i d u ph y. C hai tokenizer, phng th c hasMoreTokens() v nextToken() c s d ng duy t qua t p cc token, v hi n th cc token.

Chng trnh 4.13 import java.util.*; public class StringTokenizerImplementer{ public static void main(String args[]){ // t m t bi u th c ton h c v t o m t tokenizer cho chu i .

String mathExpr = 4*3+2/4;

Khoa Cng ngh Thng tin

ih c L t

Trang 106

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

StringTokenizer st1 = new StringTokenizer(mathExpr,*+/-, true); //trong khi v n cn cc token, hi n th mathExpr: ); while(st1.hasMoreTokens()) System.out.println(st1.nextToken()); //t o m t chu i c a cc tr ng c phn cch b i d u ph y v t o //m t tokenizer cho chu i. String commas = field1,field2,field3,and field4; StringTokenizer st2 = new StringTokenizer(commas,,,false); //trong khi v n cn token, hi n th . System.out.println(Comma-delimited tokens : ); while (st2.hasMoreTokens()) System.out.println(st2.nextToken()); } }
K t qu ch y chng trnh c m t nh hnh d i.

System.out.println(Tokens of

Hnh 4.6 K t qu ch y chng trnh minh ho l p StringTokenizer.

Khoa Cng ngh Thng tin

ih c L t

Trang 107

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Tm t t bi h c
Khi khng c s thi hnh th a k , m t giao di n c s d ng thay cho m t l p tr u t ng. M t gi l m t th m c t ch c cc giao di n v cc l p c a b n. CLASSPATH l m t danh sch c a cc th m c m JVM tm ki m cc t p tin l p. L p java.lang.Math cung c p cc phng th c th c hi n cc hm ton h c. Cc ki u d li u nguyn th y c th c x l truy c p thng qua cc l p trnh bao b c (Wrapper) c a chng. Cc l p String c s d ng t o v x l chu i, cc chu i c th c gn, c th c so snh v c n i vo nhau. String Pool i di n cho t t c cc chu i c t o ra trong m t chng trnh. L p StringBuffer cung c p cc phng th c khc nhau x l chu i. Cc i t ng c a l p ny th linh ng hn. l, cc k t ho c cc chu i c th c chn vo gi a i t ng StringBuffer, ho c c n i vo v tr cu i cng c a chu i. L p Runtime ng gi mi tr ng th i gian ch y. L p System cung c p cc ti n ch nh l, xu t, nh p chu n, v cc lu ng l i. java.util ch a cc l p sau:

Hashtable Random Vector StringTokenizer

L p Hashtable c th c s d ng t o m t m ng c a cc kho v cc gi tr . N cho php cc ph n t c tra c u b i kho ho c gi tr . L p Random l m t b t o s gi ng u nhin m c th tr v cc gi tr ki u integer, d u ph y ng (floating-point), ho c phn b Gaussian. L p Vector c th s d ng lu tr b t k cc i t ng no. N c th lu tr cc i t ng c a nhi u l p khc nhau. L p StringTokenizer cung c p m t c ch m m d o cho vi c phn tch cc chu i.

Khoa Cng ngh Thng tin

ih c L t

Trang 108

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Ki m tra s ti n b
1. lun l l nh u tin tr c cc l nh: import, class trong chng trnh Java. 2. M t giao di n c th ch a nhi u cc phng th c. ng/Sai 3. Trong khi t o gi, th m ngu n ph i n m trong th m c c tn nh tn gi. ng/Sai 4. ..l m t danh sch c a cc th m c, m JVM s tm ki m cc t p tin l p. 5. L p bao b c (wrapper) cho cc ki u d li u double v long cung c p hai h ng s l .v... 6. phng th c c s d ng thay th m t k t trong l p StringBuffer b ng m t k t khc t i v tr c ch nh. 7. ... c s d ng nh x cc kho v i cc gi tr . 8. Phng th c. c a l p StringTokenizer tr v s token cn l i.

Khoa Cng ngh Thng tin

ih c L t

Trang 109

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Bi t p
1. T o m t giao di n v s d ng n trong m t chng trnh c a Java hi n th bnh phng v lu th a 3 c a m t s . 2. T o m t gi v vi t m t hm, hm tr v giai th a c a m t i s c truy n vo trong m t chng trnh. hi n th 3. Vi t m t chng trnh b ng cch s d ng cc hm c a l p Math bnh phng c a cc s l n nh t v nh nh t c a m t t p cc s c nh p vo b i ng i s d ng t i dng l nh. 4. Hy t o ra s ghi nh c a chnh b n, ni m nh ng con s c nh p vo nh sau: Joy Jack Tina 34543 56765 34567 B ng 4.14

Chng trnh ph i lm nh sau:


Ki m tra xem s 3443 c t n t i trong s ghi nh c a b n hay khng. Ki m tra xem m u tin c a Jack c hi n h u trong s ghi nh c a b n hay khng. Hi n th s i n tho i c a Tina. Xo s i n tho i c a Joy. Hi n th cc m u tin cn l i. 5. Vi t m t chng trnh m nh p vo m t s i n tho i t i dng l nh, nh m t chu i c d ng (091) 022-6758080. Chng trnh s hi n th m qu c gia (091), m vng (022), v s i n tho i (6758080) (S d ng l p StringTokenizer).

Khoa Cng ngh Thng tin

ih c L t

Trang 110

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Chng 5

AWT
N i dung chnh
Gi S S S X i thi u v AWT d ng cc Component d ng cc Container d ng cc Layout Manager l s ki n c a cc Component

5.1 Gi i thi u v AWT


Cc ng d ng ph n m m hi n nay r t thn thi n v c trnh by nhi u mn hnh giao di n h a p m t. Cc ngn ng l p trnh hi n nay cung c p cc i t ng h a, chng c th c i u khi n b i ng i l p trnh, hay b i ng i s d ng. M t trong s nh ng k t qu quan tr ng nh t chnh l cc ngn ng hi n nay c d a trn Giao di n ng i dng h a (Graphical User Interface - GUI). Trong chng ny, ta s th o lu n v Java h tr tnh nng GUI cng cc s thi hnh c a chng. GUI cung c p ch c nng nh p li u theo cch thn thi n v i ng i dng. GUI a d ng t ng d ng n ng d ng v c th ch a nhi u i u khi n nh h p vn b n, nhn, h p danh sch hay cc i u khi n khc. Cc ngn ng l p trnh khc nhau cung c p nhi u cch khc nhau t o GUI. Cc ngn ng nh VB hay VC++ c th cung c p ch c nng ko v th trong khi ph n m m gi ng nh C++ yu c u ng i l p trnh ph i vi t ton b m xy d ng GUI. M t ph n t GUI c thi t l p b ng cch s d ng th t c sau: T o i t ng Xc nh s xu t hi n ban u c a i t ng Ch ra n n m u Thm ph n t vo giao di n trn mn hnh M t thnh ph n GUI l m t i t ng tr c quan. Ng i dng tng tc v i i t ng ny thng qua con tr chu t hay bn phm. Cc thnh ph n nh l button, label v.v c th c nhn th y trn mn hnh. B t k ci g chung cho t t c cc thnh ph n GUI u c tm th y trong l p Component. t o cc i t ng GUI chng ta c n nh p gi java.awt. AWT l vi t t t c a Abstract Windowing Toolkit. AWT l m t b cc l p trong Java cho php chng ta t o GUI v ch p nh n cc nh p li u c a ng i dng thng qua bn phm v chu t. AWT cung c p cc thnh ph n khc nhau t o GUI hi u qu v li cu n ng i s d ng. Cc thnh ph n ny ny c th l: V t ch a (Container)

Khoa Cng ngh Thng tin

ih c L t

Trang 111

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Thnh ph n (Component) Trnh qu n l cch trnh by (Layout manager) h a (Graphic) v cc tnh nng v (draw) Phng ch (Font) S ki n (Event) Gi AWT ch a cc l p, giao di n v cc gi khc. Hnh sau y m t m t ph n nh c a h th ng phn c p l p AWT.
Object

CheckboxGroup

MenuComponent

BorderLayout

Component

FlowLayout

GridLayout

Hnh 5.1 H th ng cy phn c p l p AWT

5.2 Container
Container l vng m b n c th t cc thnh ph n giao di n c a b n vo . B t c v t g m k th a t l p Container s l v t ch a. Applet l m t v t ch a, applet c d n xu t t Panel, l p Panel l i c d n xu t t l p Container. M t v t ch a c th ch a nhi u ph n t , cc ph n t ny c th c v hay c t mu tu thch. B n hy xem v t ch a nh m t c a s . Nh khung (frame), pane, latch, hook, v cc thnh ph n c kch th c nh hn khc. Gi java.awt ch a m t l p g i l Container. L p ny tr c ti p hay gin ti p phi sinh ra hai v t ch a c s d ng ph bi n nh t l Frame v Panel. Frame v Panel l cc v t ch a th ng c s d ng. Frame l c a s cl p nhng ng c l i Panel l vng n m trong c a s khc. Panel khng c cc ng bin, chng c trnh by trong m t c a s do trnh duy t hay appletviewer cung c p. Appletviewer l m t cng c c JDK h tr xem cc applet. Frame l l p con c a Window. Chng c trnh by trong m t c a s c l p, c a s ny c ch a cc ng bin xung quanh.

5.2.1 Frame
Frame khng ph thu c vo applet v trnh duy t. Frame c th ho t ng nh m t v t ch a hay nh m t thnh ph n (component). B n c th s d ng m t trong nh ng constructor sau t o m t frame: Frame(): T o m t frame nhng khng hi n th (invisible) Frame(String title): T o m t frame khng hi n th , c tiu Chng trnh 5.1 minh ho cch t o m t Frame. .

Khoa Cng ngh Thng tin

ih c L t

Trang 112

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Chng trnh 5.1

import java.awt.*; class FrameDemo extends Frame{ public FrameDemo(String title){ super(title); } public static void main(String args[]){ FrameDemo f=new FrameDemo(I have been Frameed!!!); f.setSize(300,200); f.setVisible(true); } }
L p Framedemo l m t l p con c a l p Frame. L p FrameDemo ny c m t phng th c kh i t o, trong phng th c kh i t o ny ta cho g i phng th c super(). N s g i phng th c kh i t o c a l p cha (trong tr ng h p ny l Frame). M c ch c a super() l g i phng th c kh i t o c a l p cha. N s t o m t i t ng c a l p con, l p con ny s t o Frame. Tuy nhin, Frame v n khng nhn th y c v khng c kch th c. lm c i u ny, ta s d ng hai phng th c n m trong phng th c main: setSize() v setVisible(). K t xu t c a chng trnh gi ng nh hnh 5.2

Hnh 5.2 Frame

5.2.2 Panel
Panel c s d ng
Khoa Cng ngh Thng tin

nhm m t s cc thnh ph n l i v i nhau. Cch n


ih c L t

Trang 113

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

gi n nh t

t o m t panel l s d ng phng th c kh i t o c a n, hm Panel().

Chng trnh 5.2 ch ra cch t o m t panel: Chng trnh 5.2

import java.awt.*; class Paneltest extends Panel{ public static void main(String args[]){ Paneltest p=new Paneltest(); Frame f=new Frame(Testing a Panel); f.add(p); f.setSize(300,200); f.setVisible(true); } public Paneltest(){ } }
Panel khng th c nhn th y tr c ti p. Do , chng ta c n thm panel n m t frame. V v y ta c n t o m t frame m i v thm Panel m i c t o ny vo . Tuy nhin, frame s khng nhn th y c, v khng c kch th c. Chng ta s d ng hai phng th c trong phng th c main setSize() v setVisible() thi t l p kch th c v hi n th frame. K t xu t c a chng trnh:

Hnh 5.3 Panel

Khoa Cng ngh Thng tin

ih c L t

Trang 114

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

5.2.3 Dialog
L p Dialog tng t nh l p Frame, ngha l Dialog l l p con c a l p Window. i t ng dialog c t o nh sau:

Frame myframe=new Frame(My frame); // calling frame String title = Title; boolean modal = true; // whether modal or not Dialog dlg=new Dialog(myframe, title, modal);
Tham s modal ch ra r ng dialog s ngn ch n b t k tng tc no x y n v i cc c a s c m khc, trong khi dialog ang c hi n th trn mn hnh. Ki u h p tho i ny ngn ch n ng i dng tng tc v i cc c a s khc (c a cng ng d ng) trn mn hnh, cho t i khi dialog c ng l i.

5.3 Thnh ph n (Component)


M t thnh ph n c th c t trn giao di n ng i dng, c th c thay i kch th c hay lm cho nhn th y, n. V d c dng ph bi n nh t l Textfield, Label, Checkbox, Textarea v.v V cc thnh ph n cao c p khc nh Scrollbar, Scrollpane v Dialog. Tuy nhin chng khng c s d ng th ng xuyn.
TextField TextComponent TextArea Button C o m p o n e n t Label Checkbox List Choice Container Canvas Scrollbar

Panel Window

Applet Frame Dialog

Hnh 5.4 Cc l p thnh ph n By gi chng ta hy xt m t s thnh ph n th ng c s d ng.

Khoa Cng ngh Thng tin

ih c L t

Trang 115

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

5.3.1 Nhn (Label)


L p ny c s d ng trnh by m t String. N khng th c s a i. y l m t chu i ch c. S d ng m t trong nh ng constructor sau y t o m t label: Label() T o m t Label tr ng. Label(String labeltext) T o m t Label v i n i dung c cho. Label(String labeltext, int alignment) T o m t Label v i m t ch Label.RIGHT hay Label.CENTER. d i: Phng th c setFont(Font f) setText(String s) getText() Ch c nng Thay i phng ch c a Label Thi t l p nhn cho Label L y n i dung hi n t i c a nhn B ng 5.1 Cc phng th c c a Label Chng trnh 5.3 ch ra cch s d ng c a Label: Chng trnh 5.3 canh l , canh l c th l Label.LEFT, b ng bn

Cc phng th c c s d ng ph bi n c a label c trnh by

import java.awt.*; class Labeltest extends Frame{ Label label1=new Label(This is just a label); public Labeltest(String title){ super(title); add(label1); } public static void main(String args[]){ Labeltest f=new Labeltest(Label);

Khoa Cng ngh Thng tin

ih c L t

Trang 116

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

f.setSize(300,200); f.show(); } }
Label s hi n th ch khi n c thm vo container. y, Frame l container m thnh ph n Label c thm vo. Vi c ny c th c hi n b ng cch s d ng phng th c add(). K t xu t c a chng trnh c ch ra hnh 5.5

Hnh 5.5 Label

5.3.2 vn b n (TextField)
M t Textfield l m t vng ch ch a m t dng vn b n, trong vn b n c th c hi n th hay c nh p vo b i ng i dng. Trong Java, m t trong nh ng constructor sau c th c s d ng t o m t Textfield: TextField(): T o m t textfield m i. TextField(int columns): T o m t textfield m i v i s c t c cho tr c. TextField(String s): T o m t textfield m i v i chu i vn b n c cho tr c. TextField(String s, int columns): T o m t textfield m i v i n i dung v s c t c cho tr c. Cc phng th c th ng c s d ng c a sau: Phng th c setEchoChar(char) setText(String s) getText() setEditable(boolean) isEditable() i t ng TextField c tm t t trong b ng

Ch c nng t cc k t c hi n ra thay th k t nh p vo. Gn n i dung cho TextField. L y n i dung c a TextField. Xc nh TextField c so n th o c hay khng. N ch c so n th o khi gi tr tham s truy n vo l True. Xc nh xem tr ng c ang trong mode so n th o hay khng. Gi tr tr v ki u Boolean.

Khoa Cng ngh Thng tin

ih c L t

Trang 117

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

B ng 5.2 Cc phng th c c a TextField Chng trnh 5.4 ch ra cch s d ng c a TextField: Chng trnh 5.4

import java.awt.*; class TextFieldtest extends Frame{ TextField tf1=new TextField(30); public TextFieldtest(String title){ super(title); setLayout(new FlowLayout()); add(tf1); } public static void main(String args[]){ TextFieldtest f=new TextFieldtest(TextField); f.setSize(300,200); f.show(); } }
Trong chng trnh ny, chng ta s d ng phng th c setLayout() thay i cch trnh by c a cc thnh ph n trn v t ch a. Layout manager c ch c nng x p x p cc thnh ph n trong m t v ch a. K t xu t c a chng trnh c ch ra hnh bn d i:

Hnh 5.6 TextField

Khoa Cng ngh Thng tin

ih c L t

Trang 118

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

5.3.3 Vng vn b n (TextArea)


M t Textarea c s d ng khi vn b n nh p vo c trn hai hay nhi u dng. Textarea c m t scrollbar. TextArea l m t tr ng vn b n c th c so n th o v i nhi u dng. t om Textarea, lm theo cc b c sau: 1) T o m t i t ng. 2) Ch ra s dng, s c t i t ng ny c n c. 3) B tr ph n t ny trn mn hnh. Trong Java, b n c th s d ng cc constructor sau t o TextArea:

TextArea(): T o m t TextArea m i. TextArea(int rows, int cols): T o m t TextArea m i v i s l ng c t v dng c cho tr c. TextArea(String text): T o m t TextArea m i v cnoij dung c cho tr c. TextArea(String text, int rows, int cols): T o m t TextArea m i v i dung, s dng v s c t c cho tr c. Cc phng th c th ng c s d ng nhi u nh t c a TextArea: Phng th c setText(String) getText() setEdiable(boolean) isEdiable() insertText(String, int) replaceText(String, int, int) Ch c nng Gn n i dung cho TextArea. Tr v n i dung c a TextArea. Xc nh xem TextAreac th c so n th o hay khng. TextArea c th c so n th o khi gi tr ny l True. Xc nh xem TextArea c ang trong ch so n th o c khng. Tr v gi tr l ki u Boolean. Chn chu i c vo v tr c cho tr c. Thay th vn b n n m gi a v tr int, int cho tr c.

B ng 5.3 Cc phng th c c a TextArea Chng trnh 5.5 ch ra cch s d ng c a TextArea: Chng trnh 5.5

import java.awt.*; class TextAreatest extends Frame{ Label lbl=new Label(Details); TextArea ta1=new TextArea(); public TextAreatest(String title){

Khoa Cng ngh Thng tin

ih c L t

Trang 119

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

super(title); setLayout(new FlowLayout()); add(lbl); add(ta1); } public static void main(String args[]){ TextAreatest t=new TextAreatest(TextArea); t.setSize(300,200); t.show(); } }
K t xu t c a chng trnh c ch ra hnh bn d i:

Hnh 5.7 TextArea

5.3.4 Button (nt n)


Nt n hay cn g i l nt l nh l m t ph n khng th thi u c a b t k GUI no. S d ng button l cch d nh t nh n cc tc ng c a ng i dng. t om t button, b n lm theo cc b c sau: 1) T o ph n t Button v i m t nhn ch ra m c ch c a Button. 2) B tr ph n t ny trn mn hnh. 3) Hi n th ph n t trn mn hnh. S d ng m t trong hai constructor sau Button() Button(String text) S d ng setLabel() v getLabel()
Khoa Cng ngh Thng tin

t o cc button trong Java:

thi t l p v l y gi tr nhn c a button. V d


Trang 120

ih c L t

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

gi n sau y s t o ra 3 button c trnh by trong chng trnh 5.6: Chng trnh 5.6

import java.awt.*; class Buttontest extends Frame{ Button b1 = new Button(red); Button b2 = new Button(Green); Button b3 = new Button(Blue); public Buttontest(String title){ super(title); setLayout(new FlowLayout()); add(b1); add(b2); add(b3); } public static void main(String args[]){ Buttontest t= new Buttontest(Button); t.setSize(300,200); t.show(); } }
K t xu t c a chng trnh c ch ra hnh 5.8.

Hnh 5.8 Button

Khoa Cng ngh Thng tin

ih c L t

Trang 121

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

5.3.5 Checkbox v RadioButton


Checkbox c s d ng khi ng i dng ti n hnh ch n m t hay nhi u ty ch n. Ng i dng ph i click trn cc checkbox ch n hay b ch n chng. M t radiobutton cng tng t nh m t checkbox. N c s d ng nh m t option button xc nh cc ch n l a. B n ch c th ch n m t option trong nhm cc nt radiobutton, ng c l i b n c th ch n nhi u hn m t checkbox t i m t th i i m. Lm theo cc b c sau t o cc checkbox hay radiobutton: 1) 2) 3) 4) T o ph n t . Xc nh tr ng thi kh i u c a ph n t (ch n hay khng ch n). B tr cc ph n t trn mn hnh. Hi n th cc ph n t trn mn hnh. t o

Thnh ph n checkbox c th s d ng m t l p ph c g i l CheckboxGroup ra cc radiobutton. S d ng cc constructor sau t o cc checkbox trong Java: Checkbox(): T o m t checkbox tr ng. Checkbox(String text): T o m t checkbox v i nhn c cho. t o cc radiobutton, u tin chng ta t o i t ng CheckboxGroup nh sau:

CheckboxGroup cg=new CheckboxGroup(); Sau chng ta t o cc i t ng, nhw sau:

Checkbox male=new Checkbox(male, cg, true); Checkbox female=new Checkbox(female, cg, false); Chng ta s d ng cc phng th c setState() v getState() tr ng thi c a checkbox. thi t l p v nh n v

Chng trnh 5.7 minh h a cch s d ng c a cc checkbox v cc radiobutton: Chng trnh 5.7

import java.awt.*; class Checkboxtest extends Frame{ Label l1=new Label(CheckBoxes); Checkbox b1=new Checkbox(red,true); Checkbox b2=new Checkbox(Green,false); Checkbox b3=new Checkbox(Blue,false);

Khoa Cng ngh Thng tin

ih c L t

Trang 122

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Label l2=new Label(Radiobuttons); CheckboxGroup cb=new CheckboxGroup(); Checkbox b4=new Checkbox(small,cb,true); Checkbox b5=new Checkbox(medium,cb,false); Checkbox b6=new Checkbox(large,cb,false); public Checkboxtest(String title){ super(title); setLayout(new GridLayout(8,1)); add(l1); add(b1); add(b2); add(b3); add(l2); add(b4); add(b5); add(b6); } public static void main(String args[]){ Checkboxtest t=new Checkboxtest(Checkbox and radiobutton); t.setSize(300,200); t.show(); } }
u tin chng ta t o m t i t ng Frame, i t ng ny ho t ng nh m t container s ch a thnh ph n checkbox m ta t o. Sau ta t o 6 checkbox, 02 checkbox c nh d u ch n. lm c i u ny, ta a gi tr true nh m t tham s cho hm contructor Checkbox, ngoi ra cn c m t tham s String l nhn c a
Khoa Cng ngh Thng tin ih c L t

Trang 123

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

checkbox. hi n th cc i u khi n ny theo d ng l i, ta ph i thi t l p cch trnh by v d ng GridLayout c 8 dng v 1 c t. Cu i cng, ta t o m t bi u hi n cho l p Checkboxtest v thi t l p kch th c cho Frame. hi n th n, ta cho g i phng th c show(). K t xu t c ch ra hnh bn d i:

Hnh 5.9 Checkbox

5.3.6 Danh sch ch n l a (Choice List)


Th nh tho ng, r t c n thi t trnh by m t danh sch cc ch n l a n ng i dng trn m t GUI. Ng i dng c th click vo m t hay nhi u m c t danh sch. M t danh sch ch n l a c t o b ng cch s d ng m t s cc chu i hay cc gi tr vn b n. t o cc danh sch ch n l a, hy lm theo cc b c c cho sau y:

1) 2) 3) 4)

T o danh sch cc ph n t . Thm cc m c (c ki u l String) vo danh sch, m i l n ch thm c m t m c. B tr danh sch trn mn hnh. Hi n th danh sch trn mn hnh.

Java h tr l p Choice cho php chng ta t o cc danh sch ch a nhi u m c. Khi danh sch v a c t o ra, n s r ng. Choice colors=new Choice(); M i th i i m ch thm c m t item b ng cch s d ng phng th c addItem nh c ch ra bn d i: colors.addItem(Red); colors.addItem(Green); Chng trnh 5.8 minh h a cch t o m t danh sch ch n l a: Chng trnh 5.8

Khoa Cng ngh Thng tin

ih c L t

Trang 124

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

import java.awt.*; class Choicetest extends Frame{ Label l1=new Label(What is your favorite color); Choice colors=new Choice(); public Choicetest(String title){ super(title); setLayout(new FlowLayout()); add(l1); colors.addItem(White); colors.addItem(Red); colors.addItem(Orange); colors.addItem(Green); colors.addItem(Yellow); colors.addItem(Blue); colors.addItem(Black); add(colors); } public static void main(String args[]){ Choicetest t=new Choicetest(Choice list); t.setSize(300,200); t.show(); } }
K t xu t c ch ra hnh bn d i:

Khoa Cng ngh Thng tin

ih c L t

Trang 125

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Hnh 5.10 Danh sch ch n l a

5.4 Qu n l cch trnh by (Layout manager)


Layout manager i u khi n cch trnh by v t l c a cc ph n t GUI nh l button, textbox, option button v.v M t layout manager t ng b tr cc thnh ph n ny trong container. Cc ki u trnh by khc nhau: Flow layout Border layout Card layout Grid layout GridBag Layout T t c cc thnh ph n m chng ta v a t o s d ng layout manager m c nh. Cho v d , FlowLayout l cch trnh by m c nh c a m t applet. Layout manager ny s t ng x p x p cc thnh ph n. T t c cc thnh ph n c t trong m t container, v c x p x p nh layout manager tng ng. Layout manager c thi t l p b ng phng th c setLayout(). By gi chng ta s tm hi u chi ti t cc cch trnh by v cch b tr cc thnh ph n c a ta vo nh ng v tr mong mu n.

5.4.1 FlowLayout manager


FlowLayout l layout manager m c nh cho Applet v Panel. Cc thnh ph n c x p x p t gc tri trn n gc ph i d i c a mn hnh. Khi m t s thnh ph n c t o, chng c x p x p theo hng, t tri sang ph i. Cc constructor c a FlowLayout:

FlowLayout mylayout = new FlowLayout() // constructor //constructor with alignment specified FlowLayout exLayout=new FlowLayout(FlowLayout.RIGHT); setLayout(exLayout); //setting the layout to Flowlayout
Cc i u khi n c th c canh v bn tri, bn ph i hay gi a. canh cc i u

Khoa Cng ngh Thng tin

ih c L t

Trang 126

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

khi n v bn ph i, b n s d ng c php sau:

setLayout(new FlowLayout(FlowLayout.RIGHT));
Chng trnh 5.9 minh h a v FlowLayout manager. Chng trnh 5.9

import java.awt.*; class Fltest extends Frame{ Button b1=new Button(Center Aligned Button 1); Button b2=new Button(Center Aligned Button 2); Button b3=new Button(Center Aligned Button 3); public Fltest(String title){ super(title); setLayout(new FlowLayout(FlowLayout.CENTER)); add(b1); add(b2); add(b3); }

public static void main(String args[]){ Fltest t=new Fltest(Flow Layout); t.setSize(300,200); t.show(); } }
K t xu t c a chng trnh ch ra hnh 5.11.

Khoa Cng ngh Thng tin

ih c L t

Trang 127

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Hnh 5.11 Flowlayout

5.4.2 BorderLayout Manager


BorderLayout l layout manager m c nh cho Window, Frame v Dialog. Layout ny x p x p t i a 5 thnh ph n trong m t container. Nh ng thnh ph n ny c th c t cc h ng North, South, East, West v Center c a container. NORTH t nh c a container. EAST t pha bn ph i c a container. SOUTH t pha d i c a container. WEST t pha bn tri c a container. CENTER t gi a c a container. thm m t thnh ph n vo vng North, b n s d ng c php sau:

Button b1=new Button(North Button); // khai bo thnh ph n setLayout(new BorderLayout()); // thi t l p layout add(b1,BorderLayout.NORTH); // thm thnh ph n vo layout
Cc thnh ph n v n gi nguyn v tr tng i c a chng k c khi container b thay i kch th c. Cc thnh ph n c t trong vng North, South c dn n m ngang trong khi cc thnh ph n t trong vng East v West l i c dn th ng ng. Cc thnh ph n c t trong vng center s c dn u vo nh ng khu v c n m gi a c a container.

add(b2,BorderLayout.CENTER); // thm thnh ph n vo vng center


Khi t t c cc thnh ph n c nh sau: t vo cc vng tng ng, lc Frame s gi ng

Khoa Cng ngh Thng tin

ih c L t

Trang 128

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Hnh 5.12 BorderLayout BorderLayout c th ch a nhi u hn 5 thnh ph n. th c hi n i u ny, chng ta c th s d ng cc Panel v i cc layout khc nhau ch a cc thnh ph n, v sau t cc panel ny vo trong BorderLayout.

5.4.3 CardLayout Manager


CardLayout c th lu tr m t ngn x p cc giao di n. M i giao di n gi ng nh m t b ng (card). B ng th ng l i t ng Panel. M t thnh ph n c l p nh button s i u khi n cch trnh by cc b ng l p trn cng. u tin, chng ta b tr t p h p cc thnh ph n c yu c u trn cc panel tng ng. M i panel s c b tr vo cc layout khc nhau. V d :

panelTwo.setLayout(new GridLayout(2,1));
Panel chnh s ch a nh ng panel ny. Chng ta thi t l p layout c a panel chnh l Cardlayout nh sau:

CardLayout card=new CardLayout(); panelMain.setLayout(card);


B c k ti p l thm cc panel khc vo panel chnh:

panelMain.add(Red Panel, panelOne); panelMain.add(Blue Panel, panelTwo);


Phng th c add() s d ng hai tham s . Tham s c a panel v tham s th hai l tn i t ng Panel. Chng trnh 5.10 minh h a CardLayout: Chng trnh 5.10 u tin l m t String lm nhn

import java.awt.*;

Khoa Cng ngh Thng tin

ih c L t

Trang 129

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

import java.applet.*; /*<applet code=CardLayoutDemo.class height=100></applet>*/ public class CardLayoutDemo extends Applet{ Button back,next; Label lbl1,lbl2,lbl3,lbl4; TextField other1; Panel p1,first,second,third,fourth; CardLayout c1; public void init(){ back=new Button(Back); next=new Button(Next); add(back); add(next); c1=new CardLayout(); p1=new Panel(); p1.setLayout(c1);// Set panel layout to CardLayout width=300

lbl1=new Label(First); lbl2=new Label(Second); lbl3=new Label(Third); lbl4=new Label(Fourth);

//First panel first=new Panel(); first.add(lbl1);


Khoa Cng ngh Thng tin ih c L t

Trang 130

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

//Second panel second=new Panel(); second.add(lbl2);

//Third panel third=new Panel(); third.add(lbl3);

//Fourth panel fourth=new Panel(); fourth.add(lbl4);

//Add panels to the card deck panel p1.add(1,first); p1.add(2,second); p1.add(3,third); p1.add(4,fourth); add(p1); } }
K t xu t c a chng trnh nh sau:

Khoa Cng ngh Thng tin

ih c L t

Trang 131

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Hnh 5.13 CardLayout Trong hnh bn trn, cc panel c thm vo panel chnh nh l cc th ring bi t. V th ch c th u tin m i c th y trn mn hnh. Nhng ng i dng c th i u h ng sang cc panel khc s d ng cc phng th c c a CardLayout.

5.4.4. GridLayout Manager


GridLayout tr gip vi c chia container vo trong l i. Cc thnh ph n c t trong cc giao c a dng v c t. M i l i nn ch a t nh t m t thnh ph n. M t l i c s d ng khi t t c cc thnh ph n c cng kch th c. GridLayout c t o nh sau: Gridlayout g1=new GridLayout(4,3); 4 l s dng v 3 l s c t. Chng trnh 5.11 minh h a cch trnh by l i: Chng trnh 5.11

import java.awt.*; class Gltest extends Frame{ Button btn[]; String str[]={1, 2, 3, 4, 5, 6, 7, 8, 9}; public Gltest(String title){ super(title); setLayout(new GridLayout(3,3)); btn=new Button[str.length]; for (int i=0; i<str.length;i++){

Khoa Cng ngh Thng tin

ih c L t

Trang 132

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

btn[i]=new Button(str[i]); add(btn[i]); } } public static void main(String args[]){ Gltest t=new Gltest(Grid Layout); t.setSize(300,200); t.show(); } }
K t xu t chng trnh nh sau:

Hnh 5.14 GridLayout

5.4.5 GridBagLayout Manager


GridBagLayout l cch trnh by hi u qu v ph c t p hn b t c cch trnh by no khc. Layout ny t cc thnh ph n vo v tr chnh xc. V i layout ny, cc thnh ph n khng c n c cng kch th c. N tng t nh GridLayout manager, khi cc thnh ph n c x p x p trong l i theo dng v c t. Tuy nhin, th t t cc thnh ph n khng theo nguyn t c t tri sang ph i v t trn xu ng d i.

GridBagLayout gb=new GridBagLayout() ContainerName.setLayout(gb);

Khoa Cng ngh Thng tin

ih c L t

Trang 133

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

s d ng layout ny, b n c n cung c p thng tin v kch th c v v tr c a m i thnh ph n. L p GridBagLayoutConstraints ch a t t c cc thng tin m l p GridLayout c n b tr v nh kch th c m i thnh ph n. B ng sau li t k danh sch cc bi n thnh vin c a l p GridBagConstraints: Cc bi n thnh vin weightx, weighty gridwidth, gridheight ipadx, ipady M c ch Ch ra s phn ph i c a kho ng tr ng trong GridBagLayout. Gi tr m c nh cho cc bi n ny l 0. Ch ra s l ng cc (cell) chi u ngang v chi u d c trong vng hi n th c a m t thnh ph n. Ch ra l ng lm thay i chi u cao v chi u r ng t i thi u c a thnh ph n. N s thm 2*ipadx vo chi u r ng t i thi u v 2*ipady vo chi u cao t i thi u c a thnh ph n. Gi tr m c nh cho c hai l 0. Ch ra cch x p x p cc thnh ph n trong cell. M c nh s t vo gi a cell. Cc thnh vin d li u tnh (static) sau y c th c s d ng: GridBagConstraints.NORTH GridBagConstraints.EAST GridBagConstraints.WEST GridBagConstraints.SOUTH GridBagConstraints.NORTHEAST GridBagConstraints.SOUTHEAST gridx, gridy Ch ra v tr cell s t thnh ph n. Khi thi t l p gi tr c a gridx l GridbagConstraints.RELATIVE th thnh ph n c thm s n m v tr bn ph i c a thnh ph n cu i cng. Ch ra cch m m t thnh ph n c b tr vo cell th no n u nh cell l n hn thnh ph n. M c nh l kch th c thnh ph n khng thay i.

anchor

fill

B ng 5.4 Cc bi n thnh vin c a l p GridBagConstraints B ng sau y cung c p m t danh sch cc bi n d li u tnh l cc gi tr cho bi n fill: Gi tr GridBagConstraints.NONE GridBagConstraints.HORIZONTA L GridBagConstraints.VERTICAL GridBagConstraints.BOTH
Khoa Cng ngh Thng tin

M t M c nh, khng lm thay i kch th c c a thnh ph n. Tng chi u r ng c a thnh ph n theo chi u ngang (HORIZONTAL) lm cho thnh ph n kh p v i chi u ngang. Tng chi u cao c a thnh ph n theo chi u ng (VERTICAL) lm cho thnh ph n kh p v i chi u d c. Tng chi u r ng, chi u cao c a thnh

ih c L t

Trang 134

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

insets

ph n theo c chi u ngang v chi u d c. Xc nh kho ng cch top, buttom, left v right gi a cc thnh ph n. M c nh l 0. B ng 5.5 Cc bi n thnh vin d li u tnh c a bi n fill

S d ng phng th c setConstraints() Cho v d :

thi t l p cc h ng s cho m i thnh ph n.

gblay.setConstraints(lb1, gbc);
gblay l i t ng c a l p GridBagLayout, lbl l thnh ph n Label v gbc l t ng c a l p GridBagConstraints. Chng trnh 5.12 minh h a m t v d c a GridBagLayout v GridBagConstraints. Chng trnh 5.12 i

import java.awt.*; class Gbltest extends Frame{ TextArea ta; TextField tf; Button b1,b2; CheckboxGroup cbg; Checkbox cb1,cb2,cb3,cb4; GridBagLayout gb; GridBagConstraints gbc; public GBltest(String title){ super(title); gb=new GridBagLayout(); setLayout(gb); gbc=new GridBagConstraints(); ta=new TextArea(Textarea,5,10); tf=new TextField(enter your name);

Khoa Cng ngh Thng tin

ih c L t

Trang 135

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

b1=new Button(TextArea); b2=new Button(TextField);

cbg=new CheckboxGroup(); cb1=new Checkbox(Bold, cbg,false); cb2=new Checkbox(Italic, cbg,false); cb3=new Checkbox(Plain, cbg,false); cb4=new Checkbox(Bold/Italic, cbg,true);

gbc.fill=GridBagConstraints.BOTH; addComponent(ta,0,0,4,1);

gbc.fill=GridBagConstraints.HORIZONTAL; addComponent(b1,0,1,1,1);

gbc.fill=GridBagConstraints.HORIZONTAL; addComponent(b2,0,2,1,1);

gbc.fill=GridBagConstraints.HORIZONTAL; addComponent(cb1,2,1,1,1);

gbc.fill=GridBagConstraints.HORIZONTAL; addComponent(cb2,2,2,1,1);

gbc.fill=GridBagConstraints.HORIZONTAL;

Khoa Cng ngh Thng tin

ih c L t

Trang 136

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

addComponent(cb3,3,1,1,1);

gbc.fill=GridBagConstraints.HORIZONTAL; addComponent(cb4,3,2,1,1);

gbc.fill=GridBagConstraints.HORIZONTAL; addComponent(tf,4,0,1,3); }

public void addComponent(Component c, int row, int col, int nrow, int ncol){ gbc.gridx=col; gbc.gridy=row;

gbc.gridwidth=ncol; gbc.gridheight=ncol;

gb.setConstraints(c,gbc); add(c); } public static void main(String args[]){ Gbltest t=new Gbltest(GridBag Layout); t.setSize(300,200); t.show(); } }

Khoa Cng ngh Thng tin

ih c L t

Trang 137

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Khi m t container b thay i kch th c v khi kho ng tr ng ph t n t i, cc thnh ph n c chi u r ng l n hn s chi m gi nhi u kho ng tr ng hn l cc thnh ph n c gi tr v chi u r ng nh hn. K t xu t c a chng trnh c ch ra hnh 5.15

Hnh 5.15 GridBagLayout Gi i thch o n m trn:

gbc.fill=GridBagConstraints.BOTH;
Thnh vin fill c a l p GridBagConstraints ch ra thnh ph n c th c m r ng theo h ng n m ngang v th ng ng. C php sau m t thnh ph n ch c m r ng theo h ng n m ngang:

gbc.fill=GridBagConstraints.HORIZNTAL;
C php sau s thm vo thnh ph n TextArea v i s dng v s c t c n chi m:

addComponent(ta,0,2,4,1);
0 Kh i 2 Kh i u t dng th 0 u t dng th 2

4 ta chi m gi 4 dng 1 ta chi m 1 c t

S d ng c php sau

b tr cc thnh ph n vo trong dng v c t no :

gbc.gridx=col; gbc.gridy=row;

Khoa Cng ngh Thng tin

ih c L t

Trang 138

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

y (gridx, gridy) l c t v dng ni m thnh ph n c th c t vo. S d ng c php sau ch ra s l ng cc c t v dng m cc thnh ph n c th chi m gi :

gbc.gridwitdh=ncol; gbc.gridheight=nrow;
y, gridwidth xc nh s l ng cc c t m m t thnh ph n chi m gi gridheight xc nh s l ng cc dng m m t thnh ph n chi m gi . v

Khi m t container b thay i kch th c v khi kho ng tr ng ph t n t i, cc thnh ph n c chi u r ng l n hn s chi m gi nhi u kho ng tr ng hn l cc thnh ph n c gi tr v chi u r ng nh hn.

5.5 X l cc s ki n
Cc h th ng GUI x l cc tng tc ng i dng v i s tr gip c a m hnh h ng s ki n (event-driven). Tng tc c a ng i dng c th l di chuy n chu t, nh n phm, nh phm v.vT t c cc thao tc ny thi t l p m t s ki n c a m t lo i no . Vi c x l nh ng s ki n ny ph thu c vo ng d ng. AWT x l m t vi s ki n. Mi tr ng m cc ng d ng ny c thi hnh v d nh trnh duy t cng c th x l cc s ki n khc. Ng i l p trnh cng c n ph i x l nh ng s ki n nh t nh v c n ph i vi t hm x l cc s ki n . ng d ng c n ng k m t hm x l s ki n v i m t i t ng. Hm x l s ki n ny s c g i b t c khi no s ki n tng ng pht sinh. JDK1.2 lm vi c theo m hnh x l s ki n ny. Trong quy trnh ny, ng d ng cho php b n ng k cc phng th c handler, hay g i l listener v i cc i t ng. Nh ng handler ny t ng c g i khi m t s ki n thch h p pht sinh. M t Event Listener l ng nghe m t s ki n no m m t i t ng thi t l p. M i event listener cung c p cc phng th c x l nh ng s ki n ny. L p thi hnh listener c n ph i nh ngha nh ng phng th c ny. s d ng m hnh ny, b n lm theo cc b c sau:

Ci

t giao di n listener thch h p. C u trc nh sau:

public class MyApp extends Frame implements ActionListener Xc nh t t c cc thnh ph n t o ra s ki n. Cc thnh ph n c th l cc button, label, menu item, hay window. Cho v d , ng k m t thnh ph n v i listener, ta c th s d ng:

Khoa Cng ngh Thng tin

ih c L t

Trang 139

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

exitbtn.addActionListener(This); Xc nh t t c cc s ki n c x l. Cc s ki n c th l m t ActionEvent n u m t button c click hay m t mouseEvent n u nh chu t c ko i. Thi hnh cc phng th c c a listener v vi t hm x l s ki n tng ng v i cc phng th c. B ng sau y ch ra cc s ki n khc nhau v m t v chng: L p s ki n ActionEvent AdjustmentEvent ComponentEvent FocusEvent ItemEvent WindowEvent TextEvent MouseEvent KeyEvent Cc giao di n c n c ci ActionListener AdjustmentListener ComponentListener FocusListener ItemListener WindowListener TextListener MouseListener MouseMotionListener KeyListener Cc giao di n nh ngha m t s phng th c x l m i s ki n. Nh ng phng th c ny s c n p ch ng trong l p m ci t nh ng giao di n ny. Chng trnh sau y s d ng m t ActionListener m t button. ActionEvent c hai phng th c: x l cc s ki n lin quan v i M t Pht sinh khi m t button c nh n, m t item trong danh sch ch n l a c nh n p (doubleclick) hay m t menu c ch n. Pht sinh khi m t thanh scrollbar c s d ng. Pht sinh khi m t thnh ph n c thay i kch th c, c di chuy n, b n hay lm cho ho t ng c. Pht sinh khi m t thnh ph n m t hay nh n focus t bn phm. Pht sinh khi m t m c menu c ch n hay b ch n; hay khi m t checkbox hay m t item trong danh sch c click. Pht sinh khi m t c a s c kch ho t, c ng, c m hay thot. Pht sinh khi gi tr trong thnh ph n textfield hay textarea b thay i. Pht sinh khi chu t di chuy n, c click, c ko hay th ra. Pht sinh khi bn phm n, nh . t x l m t trong s nh ng s ki n ny l:

Khoa Cng ngh Thng tin

ih c L t

Trang 140

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

getSource(): tr v ngu n c a s ki n. toString(): tr v chu i tng ng v i s ki n. Chng trnh 5.13 trnh by cch tnh g p i c a m t s c nh p vo. Chng trnh ny c th c hi n b ng cch k t h p cc phng th c c a l p, ngha l cc phng th c x l s ki n v giao di n. Vi c click trn m t button s lm kh i ng ActionEvent v g i phng th c actionPerformed(). N s ki m tra button c click v i s tr gip c a hm getSource v tr v k t qu thch h p. Chng trnh 5.13

import java.awt.*; import java.awt.event.*; class evttest extends Frame implements ActionListener{ Label lab=new Label(Enter a number); TextField tf1=new TextField(5); TextField tf2=new TextField(5); Button btnResult=new Button(Double is); Button ext=new Button(exit); public evttest(String title){ super(title); setLayout(new FlowLayout()); btnResult.addActionListener(this); ext.addActionListener(this); add(lab); add(tf1); add(btnResult); add(tf2); add(ext); }
public void actionPerformed(ActionEvent ae){
Khoa Cng ngh Thng tin ih c L t

Trang 141

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

if (ae.getSource()==btnResult){ int num=Integer.parseInt(tf1.getText())*2; tf2.setText(String.valueOf(num)); } if (ae.getSource()==ext){ System.exit(0); } } public static void main(String args[]){ evttest t=new evttest(Event handling); t.setSize(300,200); t.show(); } } K t xu t c a chng trnh c ch ra hnh bn:

Hnh 5.16 X l s ki n

Hnh 5.17 ch ra m t ph n c a cy phn c p cc l p c a gi event.

Khoa Cng ngh Thng tin

ih c L t

Trang 142

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Object

java.util.EventObject

Java.awt.Event

ActionEvent

AdjustmentEvent

ComponentEvent

ItemEvent

ContainerEvent

InputEvent

FocusEvent

WindowEvent

KeyEvent

MouseEvent

Hnh 5.17 Gi Event Hnh sau ch ra th t phn c p cc giao di n c a cc event listener.


ActionListener AdjustmentListener E v e n t L i s t e n e r ContainerListener FocusListener ItemListener KeyListener MouseListener MouseMotionListener TextListener WindowListener

Hnh 5.18 Event Listener Hnh sau l danh sch cc listener c s d ng cho cc thnh ph n ch ra.

Khoa Cng ngh Thng tin

ih c L t

Trang 143

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

ActionListener

Button List MenuItem TextField

Hnh 5.19 Action Listener


ItemListener

Choice Checkbox List

Hnh 5.20 Item Listener


WindowListener

Dialog Frame

Hnh 5.21 Window Listener Cc listener cho l p Component c ch ra


Component

hnh 5.22:

ComponentListener FocusListener KeyListener MouseListener MouseMotionLIstener

Hnh 5.22 Cc Component

Khoa Cng ngh Thng tin

ih c L t

Trang 144

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

5.6 Th c n (menu)
Ngn ng Java c m t t p h p cc l p i t ng t o cc menu. C hai lo i menu pull down v pop-up. Menu lm cho ng d ng ta xy d ng d s d ng hn. Ta ch c t duy nh t m t thanh menubar trong m t frame. Menubar l m t thanh n m ngang c t t i nh c a frame. N li t k cc m c ch n khc nhau hay cn g i l menu. M t menu c l p c th ch a cc m c ch n con, cc m c con ny c g i l Menu Item. Java cung c p cc Checkbox MenuItem, chng c th c b t hay m , ph thu c vo tr ng thi. Hnh 5.14 minh h a cch s d ng c a menubar, menu, menuItem, v CheckboxMenuItem. Chng trnh 5.14

import java.awt.*; import java.awt.event.*; class MyFrame extends Frame implements ActionListener, MouseListener{ MenuItem exitItem; PopupMenu optionsMenu; Frame frame; public MyFrame(){ setTitle("Menu Example"); setSize(300,200); MenuBar mbar=new MenuBar(); setMenuBar(mbar); Menu fileMenu=new Menu("File"); mbar.add(fileMenu); fileMenu.addActionListener(this); MenuItem newItem=new MenuItem("New"); fileMenu.add(newItem); MenuItem openItem=new MenuItem("Open"); fileMenu.add(openItem);

Khoa Cng ngh Thng tin

ih c L t

Trang 145

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

fileMenu.addSeparator(); MenuItem saveItem=new MenuItem("Save"); fileMenu.add(saveItem); MenuItem saveAsItem=new MenuItem("Save As"); fileMenu.add(saveAsItem); fileMenu.addSeparator(); exitItem=new MenuItem("Exit"); fileMenu.add(exitItem); saveAsItem.addActionListener(this); Menu editMenu=new Menu("Edit"); mbar.add(editMenu); editMenu.addActionListener(this); MenuItem cutItem=new MenuItem("Cut"); editMenu.add(cutItem); MenuItem copyItem=new MenuItem("Copy"); editMenu.add(copyItem); MenuItem pasteItem=new MenuItem("Paste"); editMenu.add(pasteItem); editMenu.addSeparator(); Menu helpMenu=new Menu("Help"); mbar.add(helpMenu); helpMenu.addActionListener(this); MenuItem contentItem=new MenuItem("Content"); helpMenu.add(contentItem); MenuItem indexItem=new MenuItem("Index");

Khoa Cng ngh Thng tin

ih c L t

Trang 146

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

helpMenu.add(indexItem); Menu findMenu=new Menu("Find"); helpMenu.add(findMenu); addMouseListener(this); MenuItem nameItem=new MenuItem("Search by Name"); findMenu.add(nameItem); MenuItem cacheItem=new MenuItem("Search from cache"); findMenu.add(cacheItem); optionsMenu=new PopupMenu("Options"); editMenu.add(optionsMenu); optionsMenu.addActionListener(this); MenuItem readItem=new MenuItem("Read Only"); optionsMenu.add(readItem); optionsMenu.addSeparator(); Menu formatMenu=new Menu("Format text"); optionsMenu.add(formatMenu); this.add(optionsMenu); formatMenu.addActionListener(this); CheckboxMenuItem insertItem=new CheckboxMenuItem("Insert",true); formatMenu.add(insertItem); CheckboxMenuItem overtypeItem=new CheckboxMenuItem("Overtype",false); formatMenu.add(overtypeItem); } public void actionPerformed(ActionEvent ae){ if (ae.getActionCommand().equals("Exit")){
Khoa Cng ngh Thng tin ih c L t

Trang 147

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

System.exit(0); } }
public void mouseEntered(MouseEvent m){} public void mouseExited(MouseEvent m){} public void mouseClicked(MouseEvent m){ optionsMenu.show(this,m.getX(),m.getY()); } public void mouseReleased(MouseEvent m){} public void mousePressed(MouseEvent m){} public static void main(String[] args){ MyFrame frame=new MyFrame(); frame.show(); } } Khi b n th c thi chng trnh trn, m t mn hnh v i cc trnh n File, Edit v Help c hi n th . Khi b n click vo m c File, b n s th y k t xu t sau y:

Hnh 5.23 Pull-down Menu M t menu c th ch a cc menu con. Khi b n click vo trnh n Help, 3 m c con c tn l Content, Index v Find s xu t hi n. Trong trnh n Find, c 2 m c con l

Khoa Cng ngh Thng tin

ih c L t

Trang 148

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Search by name v Search from Cache. M t khc m t pop-up menu s hi n ra n u b n nh n chu t ph i trn mn hnh:

Hnh 5.24 Pop-up menu Cc m c ch n c trnh by trn pop-up menu l Read-Only v Format text. M c Format text c 2 m c con l Insert v Overtype. Nh ng m c ch n con ny thu c ki u CheckboxMenuItem. Khi b n click vo m c ch n, n s c nh d u v b n c th th y d u ch n tng ng trn m c c ch n . Ngn ng Java cung c p cc l p khc nhau. Nh ng l p ny c s d ng t o thanh Menubar, Menu, MenuItem v CheckboxMenuItem trong chng trnh.

5.7 L p Graphics
Java cung c p gi AWT cho php ta v cc hnh ho . L p Graphics bao g m t p h p r t nhi u phng th c. Nhng phng th c ny c s d ng v b tc hnh no trong cc hnh sau: Oval Rectangle Square Circle Lines Text B n c th v nh ng hnh ny b ng b t c mu no. Frame, Applet v Canvas l cc mi tr ng hi n th ho . v b t c hnh nh no chng ta c n ph i c n n ho (Graphical Background). c c m t n n ho , chng ta goi phng th c getGraphics() hay b t c phng th c no trong cc phng th c sau y: repaint() c g i khi c n v l i nh ng update(Graphics g)
Khoa Cng ngh Thng tin ih c L t

i t ng v .

Trang 149

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

c g i m t cch t

ng b i phng th c repaint(). i t ng c a l p

Phng th c ny s xo nh ng i t ng v , v truy n n cho Graphics g i phng th c paint(); paint(Graphics g) c g i b i phng th c update(). i t ng c truy n cho phng th c ny c dng v cc hnh nh ho khc nhau.

v . Phng th c ny dng

Vi c g i phng th c paint() l p i l p l i thng qua phng th c repaint() s xo i cc hnh v tr c . v cc hnh m i m v n gi l i nh ng hnh v tr c , chng ta c n override l i phng th c update().

public void update (Graphics g){ paint (g); }


y, phng th c update() s khng xo nh ng i t ng v , nhng ch g i phng th c paint(). lm c i u ny, n truy n i tng c a l p Graphics ho c GraphicsContext cho phng th c paint(). y, i t ng c a l p Graphics l g.

5.7.1 V cc chu i, cc k t v cc byte


v ho c in m t chu i, l p Graphics cung c p phng th c drawString(). C php nh sau:

drawString (String str, int xCoor, int yCoor);


Ba tham s l: Chu i c n v . To X trn frame, ni chu i c n c v . To Y trn frame, ni chu i c n c v . v ho c xu t cc k t trn frame, l p Graphics cung c p phng th c drawChars. C php nh sau:

drawChars (char array[], int offset, int length, int xCoor, int yCoor);
Ch thch cc tham s : M ng cc k t . V tr b t u, n i cc k t cv .

Khoa Cng ngh Thng tin

ih c L t

Trang 150

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

S cc k t c n c v . To X, ni cc k t c n c v . To Y, ni cc k t c n c v . L p Graphics cung c p phng th c drawBytes() C php c a phng th c ny nh sau: v ho c in cc byte ra frame.

drawBytes (byte array[], int offset, int length, int xCoor, int yCoor);
5 tham s c a phng th c trn l: M ng cc byte. V tr offset hay v tr b t S byte c n v . To X. To Y. u.

i v i m t k t ho c m t m ng cc byte, chng ta c th in m t ph n c a m ng m thi. y, to x v y l to tnh theo dng. Chng trnh 6.4 minh ho cch v chu i, cc k t v cc byte. Chng trnh 5.15

import java.awt.*; public class DrawStrings extends Frame{ public DrawStrings(){ super ("Draw strings, characters, bytes"); setSize (300, 300); setVisible (true); } public void paint(Graphics g){ g.drawString ("Good Morning", 50, 50); g.drawString ("Good Afternoon", 50, 75); g.drawString ("Good Night", 50, 100); char ch[] = {'a','b','c','d','e','f'};

Khoa Cng ngh Thng tin

ih c L t

Trang 151

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

g.drawChars(ch,2,4,50,125); byte b[] = {100,101,102,103,104,105,106,107}; g.drawBytes(b,1,6,50,150); } public static void main (String args[]){ new DrawStrings(); } }
Chng trnh trn v chu i, k t t m t m ng k t , v v cc byte t m ng cc byte. B n ph i import gi java.awt s d ng cc i t ng ho c s n trong gi ny. Ta ph i lm i u ny v l p Graphics n m trong gi ny. Sau y l k t qu c a chng trnh trn:

Hnh 5.25 Strings, characters v bytes

5.7.2 V

ng th ng v hnh Oval
v ng th ng v hnh

Sau y l c php c a cc phng th c c s d ng oval: drawLine (int x1, int y1, int x2, int y2); drawOval (int xCoor, int yCoor, int width, int height); setColor (Color c); fillOval (int xCoor, int yCoor, int width, int height); Phng th c drawLine() nh n cc tham s sau:
Khoa Cng ngh Thng tin ih c L t

Trang 152

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

To To To To

X, ni b Y, ni b X, ni k Y, ni k

t uv t uv t thc v t thc v

(x1). (y1). (x2). (y2).

Phng th c ny b t u v t i to x1 v y1, v k t thc t i to x2 v y2. v nhng ng th ng c mu, chng ta thi t l p m t mu no . Phng th c setColor dng thi t l p mu cho hnh nh ho . Trong chng trnh ny, chng ta s d ng cu l nh sau ch n mu xanh: g.setColor (Color.blue); Phng th c drawOval() nh n 4 thng s sau: To X. To Y. Chi u r ng c a hnh Oval. Chi u cao c a hnh Oval. i v i hnh oval r ng, th gi tr c a chi u r ng l n hn chi u cao, v ng c l i v i hnh oval cao. i

Phng th c fillOval() nh n 4 thng s , nhng n s t hnh oval. S d ng phng th c setColor t mu t. g.setColor(Color.cyan); y, hnh oval s h th ng c h tr . c t v i mu cyan. L p Color cung c p cc mu khc nhau m

5.7.3 V hnh ch nh t v hnh ch nh t bo gc


Sau y l c php c a cc phng th c c dng nh t bo gc: v hnh ch nh t v hnh ch

drawRect (int xCoor, int yCoor, int width, int height); fillRect (int xCoor, int yCoor, int width, int height); drawRoundRect (int xCoor, int yCoor, int width, int height, int arcwidth, int archeight); fillRoundRect (int xCoor, int yCoor, int width, int height, int arcwidth, int archeight); Phng th c drawRect() c dng nh n 4 tham s sau: To X c a gc trn bn tri To Y c a gc trn bn tri Chi u r ng c a hnh ch nh t Chi u cao c a hnh ch nh t v hnh ch nh t n gi n. Phng th c ny

Khoa Cng ngh Thng tin

ih c L t

Trang 153

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Phng th c ny v hnh ch nh t c chi u r ng v chi u cao cho tr c, b t u t i to X, Y. Chng ta c th thi t l p mu c a hnh ch nh t. y, chng ta ch n mu . Cu l nh s nh sau: g.setColor (Color.red); Phng th c drawRoundRect() v hnh ch nh t c cc gc trn. Phng th c ny nh n 6 tham s , trong 4 tham s u th gi ng v i phng th c drawRect. Hai tham s khc l: arcwidth c a hnh ch nh t archeight c a hnh ch nh t y, arcwidth lm trn gc tri v gc ph i c a hnh ch nh t. archeight lm trn gc trn nh v gc y c a hnh ch nh t. V d , arcwidth = 20 c ngha l hnh ch nh t c lm trn c nh tri v c nh ph i m i c nh 10 pixel. Tng t , archeight = 40 s t o ra hnh ch nh t c lm trn t nh n y 20 pixel. Pixel l n v o. N l n v nh nh t trong vng v . t hay v hnh ch nh t v hnh ch nh t bo gc, chng ta s d ng phng th c fillRect() v fillRoundRect(). Nh ng phng th c ny nh n cc tham s gi ng v i phng th c drawRect() v drawRoundRect(). Nh ng phng th c ny v cc hnh nh v i m t mu cho tr c ho c m i mu hi n hnh. L nh sau dng v hnh v i mu xanh: g.setColor(Color.green);

5.7.4 V hnh ch nh t 3D v v cung


Sau y l c php c a cc phng th c dng v hnh ch nh t 3D v hnh cung:

draw3Drect (int xCoord, int yCoord, int width, int height, boolean raised); drawArc(int xCoord, int yCoord, int width, int height, int arcwidth, int archeight); fillArc(int xCoord, int yCoord, int width, int height, int arcwidth, int archeight);
Phng th c draw3Drect() nh n 5 tham s . 4 tham s u th tng t v i phng th c v hnh ch nh t. Tuy nhin, gi tr c a tham s th 5 quy t nh l hnh ch ny ny c 3 chi u hay khng. Tham s th 5 c ki u d li u l boolean. Gi tr ny True c ngha l hnh ch nh t l 3D. Phng th c drawArc() nh n 6 tham s sau: To x To y Chi u r ng c a cung c v . Chi u cao c a cung c v . Gc b t u. r ng c a cung (gc c a cung) so v i gc ban

u.

Khoa Cng ngh Thng tin

ih c L t

Trang 154

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Phng th c fillArc() cng nh n 6 tham s gi ng nh phng th c drawArc(), nhng n v cung v t cung v i mu hi n th i.

5.7.5 V hnh PolyLine


Chng trnh sau l y cc i m t hai m ng c a phng th c ny nh sau: v m t lo t cc ng th ng. C php

drawPolyline (int xArray[], int yArray[], int totalPoints); g.setFont (new Font(Times Roman, Font.BOLD, 15));
Phng th c drawPolyline() nh n 3 tham s sau: M ng lu tr to x c a cc i m. M ng lu tr to y c a cc i m. T ng s i m c n v . v cc ng th ng ta l y cc i m t hai m ng nh sau: (array1[0], array2[0]) (array1[1], array2[1]) (array1[2], array2[2]). S ng th ng v c lun nh hn s truy n vo thng s th 3 c a phng th c drawPolyline(). Chng trnh 6.5 minh ho cc v polyline. Chng trnh 5.16

import java.awt.*; class PolyLines extends Frame{ int x1[] = {50, 75, 95, 115, 135}; int y1[] = {50, 30, 60, 75, 60}; int x2[] = {67, 82, 95, 120, 135}; int y2[] = {150, 130, 160, 155, 180}; public PolyLines()//constructor{ super ("Poly Lines"); setSize (300, 300); setVisible (true); }

Khoa Cng ngh Thng tin

ih c L t

Trang 155

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

public void paint (Graphics g){ g.drawPolyline (x1, y1, 5); g.setFont (new Font("Times Roman", Font.BOLD, 15)); g.drawString("Current Color is black", 100, 100); g.setColor(Color.blue); g.drawPolyline (x2, y2, 5); g.drawString ("Current Color is blue", 100, 200); } public static void main (String args[]){ new PolyLines(); } }
K t qu c a chng trnh c minh ho hnh 6.7

Hnh 5.26. Minh h a PolyLine

5.7.6 V v t a gic
L p Graphics cung c p hai phng th c v a gic. Phng th c u tin nh n m t i t ng c a l p Polygon. Phng th c th c 2 l y hai m ng i m, v t ng s i m c n v . Chng ta s s d ng phng th c 2 v a gic. C php c a drawPolygon() nh sau:

Khoa Cng ngh Thng tin

ih c L t

Trang 156

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

drawPolygon(int x[], int y[], int numPoints); C php c a fillPolygon() nh sau: fillPolygon (int x[], int y[], int numPoints); Chng trnh d i y l y cc i m t 2 m ng v a gac. Phng th c drawPolygon() nh n 3 tham s sau gi ng nh phng th c drawPolyline() M ng lu tr to x c a cc i m. M ng lu tr to y c a cc i m. T ng s i m c n v . Chng trnh 5.17

import java.awt.*; class PolyFigures extends Frame{ int x1[] = {50, 25, 40, 100, 80}; int x2[] = {80, 30, 50, 150, 100, 170}; int y1[] = {50, 70, 120, 120, 80}; int y2[] = {150, 170, 200, 220, 240,190}; public PolyFigures(){ super ("Poly figures"); setSize(300, 300); setVisible (true); } public void paint (Graphics g){ g.drawPolygon (x1, y1, 5); g.setColor (Color.cyan); g.fillPolygon (x2, y2, 6); } public static void main (String args[]){ new PolyFigures();
Khoa Cng ngh Thng tin ih c L t

Trang 157

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

} }
Sau y l k t qu c a chng trnh trn:

Hnh 5.27. Hnh minh h a Polygon

5.8 i u khi n mu
Trong Java, chng ta i u khi n mu b ng cch dng 3 mu chnh l (red), xanh l cy (green), xanh dng (blue). Java s d ng m hnh mu RGB. i t ng c a l p Color ch a 3 s nguyn cho cc tham s red, green, blue. B ng sau trnh by gi tr c th c c a cc mu : Thnh ph n Ph mvi Red 0-255 Green 0-255 Blue 0-255 B ng 6.2 Ph m vi gi tr c a cc thnh ph n mu S d ng cc gi tr trn m t mu nh sau: t o ra m t mu tu thch. C php c a hm d ng t o ra

color (int red, int green, int blue);


B ng sau hi n th cc gi tr c a cc mu th ng g p: Mu White Light Gray Gray Dark Gray Black Red 255 192 128 64 0 Green 255 192 128 64 0 Blue 255 192 128 64 0

Khoa Cng ngh Thng tin

ih c L t

Trang 158

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Pink 255 175 175 Orange 255 200 0 Yellow 255 255 0 Magenta 255 0 255 B ng 6.3 Cc gi tr RGB Cc i t ng mu khc nhau c th c th c dng v ho c t cc l nh sau: c t o b ng nh ng gi tr ny. Nh ng i ny i t ng ho . V d , t o mu h ng, ta dng

color c = new Color (255, 175, 175);


Ta c th thi t l p mu b ng cch dng l nh sau:

g.setColor (c); //g l

i t ng c a l p Graphics
t o ra m t mu tu . cho d hn, l p Color

S d ng k t h p cc gi tr RGB cung c p s n m t s mu.

color.white color.black color.orange color.gray color.lightgray color.darkgray color.red color.green color.blue color.pink color.cyan color.magenta color.yellow B ng 6.4 Cc mu th ng g p o n m sau minh ho cch t o m t mu tu :

Color color1 = new Color (230, 140, 60); Color color4 = new Color (90, 210, 130); g.setColor (color1); int myred = color1.getRed (); int mygreen = color1.getGreen (); int myblue = color1.getBlue(); color1 = color1.darker(); color4 = color4.brighter();

5.9 i u khi n Font


Java cung c p l p Font trong gi java.awt cho php s d ng cc lo i font khc
Khoa Cng ngh Thng tin ih c L t

Trang 159

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

nhau. L p ny bao g m m t s phng th c. s d ng font, chng ta nn ki m tra xem h th ng c h tr hay khng. Phng th cgetAllFont() tr v t t c cc font m h th ng h tr . Tr c tin, khai bo m t i t ng c a l p GraphicsEnvironment nh sau:

GraphicsEnvironment ge; ge = GraphicsEnvironment.getLocalGraphicsEnvironment ();


i t ng ny s d ng c php sau l y t t c cc font c trong m ng Font:

Font f[] = ge.getAllFonts();


Phng th c getAllFont() c s d ng y. Phng th c getAllFonts() thu c l p GraphicsEnvironment. y l l p tr u t ng, do ta khng th kh i t o l p ny. truy c p phng th c getAllFont(), chng ta s d ng phng th c getLoacalGraphicsEnvironment() c a l p GraphicsEnvironment.

ge = GraphicsEnvironment.getLocalGraphicsEnvironment ();
Tham chi u n l p ny c gn cho bi n ge. Bi n ny g i phng th c getAllFont(). Chng ta s d ng cc font khc nhau hi n th cc chu i khc nhau. Phng th c getFont() tr v font m c nh dng hi n th chu i, khi khng c ch n font no c .

Font defaultFont = g.getFont (); //g l

i t ng Graphics

g.drawString (Default Font is , 30, 50);


thay i font m c nh c a h th ng thnh font khc, chng ta t o l p Font. Phng th c kh i t o c a Font c 3 tham s sau: i t ng c a

Tn c a font. Ta c th l y tn thng qua phng th c getFontList(). Ki u c a font. V d : Font.BOLD, Font.PLAIN, Font.ITALIC. Kch th c font. C php sau minh ho nh ng thng s trn:

Font f1 = new Font (SansSerif, Font.ITALIC, 16); g.setFont (f1);


Ba tham s c truy n y l: SanSerif tn c a font, Font.BOLD ki u font, 14 l kch th c c a font. Nh ng thng s ny t o ra i t ng f1. Chng ta c th k t h p 2 ki u font l i v i nhau. Hy xt v d sau:

Font f3 = new Font (Monospaced, Font.ITALIC+Font.BOLD, 20);


y ki u font c a f3 v a m, v a nghing.

Khoa Cng ngh Thng tin

ih c L t

Trang 160

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

5.10 L p FontMetric
L p ny xc nh kch th c c a cc k t khc nhau thu c cc lo i font khc nhau. Xc nh kch th c bao g m chi u cao (height), baseline, descent, v leading. i u ny r t c n thi t v cc k t khi in u chi m m t kch th c ring. B n c n tnh kch th c c n thi t khi in cc k t trnh cc k t ln nhau. Height: chi u cao c a font. Baseline (Dng c s ): xc nh c s c a cc k t (khng k ph n th p nh t c a k t ) Ascent: kho ng cch t ng baseline n nh c a k t . Descent: kho ng cc t baseline y c a k t . Leading: kho ng cch gi a cc ch . Chng trnh 6.7 minh ho vi c s d ng cc phng th c khc nhau m l p FontMetrics c. Trong chng trnh ny, chng ta s d ng cc phng th c khc nhau xem xt chi ti t cc lo i font khc nhau. L p FontMetric l l p tr u t ng. Phng th c getFontMetrics() c tham s l i t ng c a l p Font, v FontMetrics i i v i m t font no .

FontMetrics fm = g.getFontMetrics (f1);


L nh ny t o i t ng fm c a l p FontMetrics, cng v i i t ng f1. By gi , chng ta s d ng fm l y chi ti t c a font. Cc phng th c getHeight, getAscent(), getDescent(), v getLeading() tr v chi ti t c a font. Phng th c getFont() c a l p FontMetrics tr v Font m g n v i i t ng l p FontMetrics. Phng th c getName() c a l p Font tr v tn Font. Chng trnh 5.18

import java.awt.*; class FontMetricsUse extends Frame{ public FontMetricsUse(){ super ("Detail of Fonts"); setSize (400, 300); setVisible(true); }

public void paint (Graphics g){ Font f1 = new Font ("Times Roman", Font.PLAIN, 22);

Khoa Cng ngh Thng tin

ih c L t

Trang 161

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

FontMetrics fm = g.getFontMetrics (f1); String name = fm.getFont().getName(); g.drawString ("Details of Font " + name, 30, 50); g.drawString ("Height: " + String.valueOf (fm.getHeight()), 50, 75); g.drawString ("Ascent: " + String.valueOf (fm.getAscent()), 50, 100); g.drawString ("Descent: " + String.valueOf (fm.getDescent()), 50, 125); g.drawString ("Leading: " + String.valueOf (fm.getLeading()), 50, 150);

Font f2 = new Font ("DialogInput", Font.PLAIN, 22); fm = g.getFontMetrics (f2); name = fm.getFont().getName(); g.drawString ("Details of Font " + name, 30, 175); g.drawString ("Height: " + String.valueOf (fm.getHeight()), 50, 200); g.drawString ("Ascent: " + String.valueOf (fm.getAscent()), 50, 225); g.drawString ("Descent: " + String.valueOf (fm.getDescent()), 50, 250); g.drawString ("Leading: " + String.valueOf (fm.getLeading()), 50, 275); } public static void main (String args[]){ new FontMetricsUse (); } }
K t qu c a chng trnh trn:

Khoa Cng ngh Thng tin

ih c L t

Trang 162

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Hnh 5.28 L p FontMetrics Chng trnh 6.8 minh ho cch l p FontMetrics c s d ng in o n vn b n nhi u font, nhi u dng. Trong chng trnh ny, chng ta c n in vn b n nhi u font trn nhi u dng. L p FontMetrics gip ta xc nh kho ng cch c n thi t in m t dng vn b n cho m t font no . i u ny th t c n thi t, b i v dng th 2 c in ngay sau dng th nh t. Tr c tin chng ta in msg1 s d ng font Monospaced. Sau , chng ta in msg2 s d ng font DiaglogInput. lm c i u ny, chng ta c n tnh kho ng cch c n thi t in msg1. Phng th c stringWidth() c a l p FontMetrics c dng tnh ra t ng kho ng cch c n thi t in msg1. Khi chng c ng thm kho ng cch ny vo bi n x, chng ta s l y c v tr m chng ta b t u in o n vn b n k ti p, msg2. Phng th c setFont() c dng thi t l p font in vn b n. K , chng ta in msg1 v msg2 trn cc dng khc nhau s d ng chung 1 font Monospaced. y, chng ta c n bi t kho ng cch chi u cao c a font, in dng k ti p. Phng th c getHeight() c dng lm i u ny. Chng trnh 5.19

import java.awt.*; class MultiFontMultiLine extends Frame{ public MultiFontMultiLine(){ super ("Multiline Text"); setSize (450, 200); setVisible (true);

Khoa Cng ngh Thng tin

ih c L t

Trang 163

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

} public void paint (Graphics g){ Font f1 = new Font ("MonoSpaced", Font.BOLD, 18); Font f2 = new Font ("DialogInput", Font.PLAIN, 14); int x = 20; int y = 50; String msg1 = "Java Language"; String msg2 = "A new approach to programming"; FontMetrics fm = g.getFontMetrics(f1); g.setFont(f1); g.drawString (msg1, x, y); x = x + fm.stringWidth(msg1); g.setFont(f2); g.drawString (msg2, x, y); g.setFont(f1); y = 100; x = 20; int height = fm.getHeight(); g.drawString (msg1, x, y); y += height; g.drawString (msg2, x, y); } public static void main (String args[]){ new MultiFontMultiLine (); }

Khoa Cng ngh Thng tin

ih c L t

Trang 164

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

}
K t qu c a chng trnh trn:

Hnh 5.29 Vn b n c xu t nhi u font, nhi u dng

5.11Ch n ch

Cc i t ng c v b ng cch s d ng mode v . Khi m t i t ng m i c v , n s ln cc hnh v tr c y. Tng t , khi cc i t ng c v i v l i nhi u l n th chng s xo cc i t ng v tr c . Ch hi n th n i dung c a i t ng m i. lm cho n i dung c v n i dung m i u hi n th trn cng n n, l p Graphics cung c p phng th c setXORMode (Color c); Chng trnh 6.9 minh ho ti n l i c a c a vi c s d ng phng th c setXORMode(). y, chng ta s d ng phng th c setXORMode() t cc hnh ho khc nhau, m khng ln cc hnh khc. K t qu l, khi s d ng mode XOR th hi n nhin l t t c cc hnh u hi n th y . i u ny c ngha l cc hnh m i khng ln cc hnh c . Thay vo , ph n chung gi a cc hnh s c hi n th thnh m t mu khc. Nhng khi khng s d ng mode XOR, hnh m i hon ton che khu t nh ng hnh tr c . Chng trnh 5.10

import java.awt.*; class PaintMode extends Frame{ public PaintMode(){ super ("Paint Mode"); setSize (300, 300); setVisible (true); } public void paint (Graphics g){

Khoa Cng ngh Thng tin

ih c L t

Trang 165

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

g.setPaintMode (); g.setColor (Color.blue); g.fillRect (50,50,40, 30); g.setColor (Color.pink); g.fillOval (70, 65, 30, 60); g.setColor (Color.cyan); g.fillRoundRect (90, 80, 70, 50, 20, 30); g.setColor (Color.blue); g.fillRect (50, 150, 40, 30); g.setXORMode (Color.yellow); g.fillOval (70, 165, 30, 60); g.setXORMode (Color.magenta); g.fillRoundRect (90, 180, 60, 40, 50, 20); } public static void main (String args[]){ new PaintMode(); } }
K t qu c a chng trnh trn:

Hnh 5.30 Paint mode

Khoa Cng ngh Thng tin

ih c L t

Trang 166

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Tm t t
GUI gip chng ta t o giao di n hnh nh cho m t ng d ng. M t khc n cng gip ta pht tri n cc ng d ng ng i dng nhi u hi u qu hn. Thnh ph n GUI l m t i t ng tr c quan. Ng i dng c th s d ng chu t hay bn phm tng tc v i i t ng ny. Cc thnh ph n GUI nh cc button, label, checkbox v radio button m c s d ng trong ng d ng hay applet th c th c th y trn mn hnh. B t c thao tc no m lin quan t i t t c cc thnh ph n GUI u c tm th y trong l p Component. Ta c n s d ng cc l p t n t i trong gi java.awt t o cc thnh ph n GUI ny. H th ng GUI x l t t c cc tng tc c a ng i dng v i s h tr c a m hnh h ng s ki n (event-driven). M t s ki n c kch ho t khi ng i s d ng t o m t hnh ng nh l di chuy n chu t, nh n phm, nh phm v.v. Cc ki u trnh by khc nhau: FlowLayout BorderLayout CardLayout GridLayout GridBagLayout Phng th c setLayout() c s d ng t layout. FlowLayout l Layout Manager m c nh cho cc applet v cc panel. Cc thnh ph n c x p x p t gc tri trn n gc ph i bn d i c a mn hnh. BorderLayout x p x p cc thnh ph n trong North, South, East, West v Center c a m t container. Gridlayout t cc thnh ph n trong cc dng v cc c t. T t c cc thnh ph n u c cng kch th c. CardLayout t cc thnh ph n trn nh c a cc thnh ph n khc. N t o m t stack c a m t s thnh ph n, th ng th ng l cc panel. GridBagLayout b tr cc thnh ph n m t cch chnh xc hn cc layout manager khc. N tng t nh grid layout. S khc nhau duy nh t y l thnh ph n khng c n c cng kch th c v c th c t trong b t k dng hay c t no. Trong m hnh x l s ki n, ng d ng cho php b n ng k cc handler c g i l cc listener cho cc i t ng. M t Event Listener l ng nghe m t s ki n c th no m m t i t ng thi t l p. N s g i l n l t cc phng th c x l s ki n. L p layout manager cung c p m t phng ti n i u khi n cch trnh by v t l c a cc thnh ph n GUI. C hai ki u menu pull-down v pop-up. S d ng l p Graphic v cc i t ng h a. L p Font trong gi java.awt cho php s d ng nhi u font khc nhau. L p FontMetrics xc nh kch th c c a cc k t .

Khoa Cng ngh Thng tin

ih c L t

Trang 167

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Ki m tra s ti n b
1. M i thnh ph n GUI l m t i t ng? ng/Sai 2. V t ch a l g? 3. TextArea l m t h p vn b n ch ch a c m t dng, trong c th hi n th vn b n ho c c th nh p vo b i ng i s d ng? ng/Sai 4. CheckBox s d ng thm l p radioButtonGroup t o ra radiobuttons? ng/Sai 5. FlowLayout l cch trnh by m c nh c a Applet v Panel? ng/Sai 6. BorderLayout l cch trnh by m c nh c a Window, Frame v Dialog? ng/Sai 7. ActionEvent l g? 8. Ch c th t c duy nh t m t thanh menu trn Frame? ng/Sai 9. Phng th c ................dng l y t t c cc font ch m h th ng h tr . 10. Trong l p FontMetrics, 'ascent' l kho ng cch t 'baseline' n y c a k t . ng/Sai

Khoa Cng ngh Thng tin

ih c L t

Trang 168

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Bi t p
1. Vi t chng trnh Java sau: nh p thng tin chi ti t v ng i s d ng nh hnh

2. S a bi t p 1

c giao di n nh sau:

3. Vi t giao di n chng trnh tr chi puzzle nh sau:

Khoa Cng ngh Thng tin

ih c L t

Trang 169

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

4. S a bi 3 khi ng i s d ng click vo nt cng hng ho c cng c t v i nt khng c s th i ch nt v a click v nt khng s cho nhau. Khi ng i s d ng n nt khng cng hng hay khng cng c t th hi n thng bo "Khng h p l " cn khi ng i s d ng s p x p cc nt theo th t t 1 n 15 th hi n ra thng bo chc m ng. 5. Vi t chng trnh c menu pop-up nh hnh d i y:

6. Vi t applet nh sau: Ng i s d ng c php nh p vo gi tr mu trong cc tng ng. Khi click nt 'Draw' cc bi u d ng ng, bar, pie c hi n ra.

Khoa Cng ngh Thng tin

ih c L t

Trang 170

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Chng 6

APPLETS
N i dung chnh
Hi u c cc Applet c a Java Phn bi t applet v cc ng d ng thng th ng Tm hi u chu trnh s ng cu m t applet T o cc applet Hi n th cc hnh nh s d ng applet Truy n tham s cho applet Tm hi u ho , mu, font ch trong Applet

6.1 Java Applet


applet th c sau: Applet l m t chng trnh Java c th ch y trong trnh duy t web. T t c cc u l cc l p con c a l p Applet. L p Applet thu c package java.applet. L p Applet bao g m nhi u phng i u khi n qu trnh th c thi c a applet. t o applet, b n c n import hai gi java.applet java.awt

6.2 C u trc c a m t Applet


M t Applet nh ngha c u trc c a n t 4 s ki n x y ra trong su t qu trnh th c thi. i v i m i s ki n, m t phng th c c g i m t cch t ng. Cc phng th c ny c minh ho trong b ng 6.1. i u quan tr ng l khng ph i lc no applet cng b t u t ban u. M n b t u t v tr ti p theo c a qu trnh th c thi tr c . Ngoi nh ng phng th c c b n ny, cn c nh ng phng th c paint() v repaint(). Phng th c paint() dng hi n th m t ng th ng (line), text, ho c m t hnh nh trn n n applet. i s c a phng th c ny l i t ng c a l p Graphics. L p ny thu c gi java.awt. Cu l nh sau c dng import l p Graphics: import java.awt.Graphics; Phng th c init() Ch c nng c g i trong qu trnh kh i t o applet. Trong qu trnh kh i t o, n s t o i t ng cung c p cho applet. Phng th c ny c dng t i cc hnh nh ho , kh i t o cc bi n v t o cc i t ng. c g i g i khi m t applet b t u th c thi. M t khi qu trnh

start()

Khoa Cng ngh Thng tin

ih c L t

Trang 171

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

stop() destroy()

kh i t o hon t t, th applet c kh i ng. Phng th c ny c dng kh i ng l i applet sau khi n ng ng tr c c g i khi ng ng th c thi m t applet. M t applet b ng ng tr c khi n b hu . c dng hu m t applet. Khi m t applet b hu , th b nh , th i gian th c thi c a vi x l, khng gian a c tr v cho h th ng. B ng 6.1: Cc phng th c c a m t applet

Phng th c repaint() c dng khi c a s c n c p nh t l i. Phng th c ny ch c n m t thng s . Tham s ny l i t ng c a l p Graphics. Applet s d ng phng th c showStatus() hi n th thng tin trn thanh tr ng thi. Phng th c c tham s thu c ki u d li u String. l y cc thng tin c a applet, user c th overide phng th c getAppletInfo() c a l p Applet. Phng th c ny tr v 1 i t ng ki u String. Cc phng th c c a applet init(), start(), stop(), destroy(), v paint() c th a k t m t applet. Nhng m c nh nh ng phng th c ny khng th c thi m t thao tc no c . y l v d n gi n c a applet. Cu l nh sau t o m t l p c tn l Applet1, l p ny s k th a t t c cc phng th c v bi n c a l p applet. public class Applet1 extends Applet Phng th c init() v paint() th ng c dng th c hi n m t s hm kh i t o v v applet. Phng th c g.drawString() ch ra v tr m o n vn b n c v u trn mn hnh. Chng trnh 6.1 hi n th m t chu i dng 70 v c t 80: Chng trnh 6.1

import java.awt.*; import java.applet.*; public class Applet1 extends Applet{ int num; public void init(){ num = 6; } public void paint (Graphics g){ g.drawString (Hello to Applet. Chapter + num, 70, 80); showStatus (getAppletInfo()); //Hi n th m t chu i c tr v t hm getAppletInfo() trn

Khoa Cng ngh Thng tin

ih c L t

Trang 172

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

//thanh tr ng thi } public String getAppletInfo() //user overrides{ return Created by Aptech; } }
S d ng c php sau d ch m t Applet:

javac Applet1.java th c thi m t applet, ta c n t o m t file HTML. File HTML ny s d ng th applet. Th applet ny l y tham s u tin l ng d n c a file applet. Th applet c hai thu c tnh sau: Width Height truy n tham s vo applet, s d ng param, sau l thu c tnh value. Sau y l v d c a th applet: <applet code=Applet1 width=300 height=200> </applet> Lc ny, ta c th th c thi applet ny b ng cch dng trnh xem applet. y l cng c c a JDK. ch y file HTML trong trnh xem applet, ta g cu l nh sau: appletviewer abc.html // abc.html l tn c a file HTML M t tu ch n khc c a applet l ta thm th applet nh l m t dng ch thch trong o n code. Lc , applet c d ch, v th c thi b ng cch s d ng l nh sau: appletviewer Applet1.java Sau y l k t qu c a chng trnh trn:

Khoa Cng ngh Thng tin

ih c L t

Trang 173

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Hnh 6.1 Applet

6.2.1 S khc nhau gia Application v Applet


Sau y l s khc nhau gi a application v applet: th c thi cc application chng ta dng trnh thng d ch java, trong khi applet c th ch y c trn cc trnh duy t (c h tr Java) hay s d ng cng c appletViewer, cng c ny i km v i JDK. Qu trnh th c thi c a application b t u t phng th c main(). Tuy nhin applet th khng lm nh v y. Cc application s d ng System.out.println() hi n th k t qu ra mn hnh trong khi applet s d ng phng th c drawString() xu t ra mn hnh. M t i u ng lu l m t chng trnh Java n l th c th v a l application v a l applet. Ch c nng c a applet c b qua khi n c th c thi nh l m t application v ng c l i. Chng trnh 6.2 s minh ho i u ny Chng trnh 6.2

import java.applet.Applet; import java.awt.*; /* <applet code = "both" width = 200 height = 100> </applet> */ public class both extends Applet{ Button btn;
Khoa Cng ngh Thng tin ih c L t
Trang 174

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

public void init(){ btn = new Button ("Click"); } public void paint (Graphics g){ g.drawString ("Applet", 70, 50); } public static void main (String args[]){ both app = new both(); app.init(); System.out.println("Application Main"); } }
Sau khi bin d ch chng trnh, n c th d ng c php sau: appletviewer both.java K t qu nh sau: c th c thi nh l m t applet b ng cch s

Hnh 6.2 Applet N u ch y chng trnh trn nh m t application, th s d ng c php sau: java both K t qu l:

Khoa Cng ngh Thng tin

ih c L t

Trang 175

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Hnh 6.3 Application Khi applet ch y trn trnh duy t web, c i m ny th c s h u ch khi b n mu n t i applet trong m t frame m i. V d : trong applet c t o chat, m t s website s d ng m t c a s chat ring bi t chat. B n cng c th k t h p cc c i m c a frame v applet vo trong m t chng trnh.

6.2.2 Nh ng gi i h n b o m t trn applet


C m t s h n ch m applet khng th lm c. B i v cc applet c a Java c th ph h ng ton b h th ng c a ng i s d ng. Cc l p trnh vin Java c th vi t cc applet xo file, l y cc thng tin cc nhn c a h th ng V th , cc applet c a java khng th lm cc vi c sau: Khng th c ho c ghi file trn h th ng file c a ng i s d ng. Khng th giao ti p v i cc site internet, nhng ch c th v i cc trang web c applet m thi. Khng th ch y b t c chng trnh g trn h th ng c a ng i c. Khng th t i b t c chng trnh c lu tr trong h th ng c a ng i s d ng. Nh ng gi i h n trn ch ng khi cc applet c ch y trn trnh duy t Netscape Navigator ho c Microsoft Internet Explorer.

6.3 Chu trnh s ng c a m t Applet


Chu trnh s ng c a m t Applet c m t
Destroy

d i y:
Stop

Creation

Starting Initalization

Hnh 6.4 Chu trnh s ng c a m t applet

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Tr c tin, applet c t o. B c k ti p l kh i t o. i u ny x y ra khi m t applet c n p. Qu trnh ny bao g m vi c t o cc i t ng m applet c n. Phng th c init() c nh ngha cung c p cc hnh vi kh i t o. M t khi applet c kh i t o, applet s c kh i ng. Applet c th kh i ng ngay c khi n c ng ng tr c . V d , n u trnh duy t nh y n m t lin k t no trang khc, lc applet s b ng ng, v c kh i ng tr l i khi ng i s d ng quay v trang . S khc nhau gi a qu trnh kh i t o v qu trnh kh i ng l m t applet c th kh i ng nhi u l n, nhng qa trnh kh i t o th ch x y ra m t l n. Phng th c start() c override cung c p cc thao tc kh i ng cho applet. Phng th c stop() ch c g i khi user khng cn trang n a, ho c trang c thu nh l i d i thanh taskbar. K ti p l phng th c destroy(). Phng th c ny gip applet d n d p tr c khi n c gi i phng kh i vng nh , ho c tr c khi truy t duy t k t thc. Phng th c ny c dng hu nh ng lu ng (thread) hay qu trnh ang ch y. Phng th c destroy() khc v i phng th c finalize() l phng th c destroy() ch dng cho applet, trong khi finalize() l cch t ng qut d n d p applet. Phng th c paint() cng l m t phng th c quan tr ng khc. Phng th c ny cho php ta hi n th m t ci g trn mn hnh. C th l text, ng th ng, mu n n, ho c hnh nh. Phng th c ny x y ra nhi u l n trong su t qu trnh applet t n t i. Phng th c ny th c thi m t l n sau khi applet c kh i t o. N s l p i l p l i khi di chuy n t c a s trnh duy t sang c a s khc. N cng x y ra khi c a s trnh duy t thay i v tr c a n trn mn hnh. Phng th c paint() c m t tham s . Tham s ny l i t ng c a l p Graphics. L p Graphics thu c l p java.awt, chng ta ph i import trong o n code c a applet. Chng ta c th s d ng o n m sau: import java.awt.Graphics;

6.4 Truy n tham s cho Applet


Trong chng trnh sau, chng ta s truy n tham s cho applet. Thnh ph n nt bNext c tn c truy n nh l m t tham s . Phng th c init() s ki m tra tham s c tn l mybutton. Sau , n t o m t nt v i chu i nh l tn c a nt. N u khng c tham s truy n vo, nt c tn m c nh l Default. By gi chng ta nh ngha th <PARAM> trong o n m HTML nh sau:

/* <applet code=Mybutton1 width=100 height=100> <PARAM NAME=mybutton value=Display Dialog> </applet> */


Chng trnh 6.3

Khoa Cng ngh Thng tin

ih c L t

Trang 177

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

import java.awt.*; import java.applet.*; /* <applet code="Mybutton1" width="200" height="100"> <PARAM NAME="mybutton" value="Display Dialog"> </applet> */ public class Mybutton1 extends Applet{ Button bNext; public void init(){ /*getParameter returns the value of the specified pareameter in the form of a String object*/ String str = getParameter("mybutton"); //when no parameter is passed if (str==null) str = new String ("Default"); //when parameter is passed bNext = new Button(str); add (bNext); } }
Sau y l k t qu c a chng trnh trn:

Khoa Cng ngh Thng tin

ih c L t

Trang 178

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Hnh 6.5: truy n tham s cho applet By gi chng ta s s d ng l p Graphics v cc hnh ch ng h n nh: ng th ng, hnh oval, v hnh ch nh t. Chng ta s h c l p Font trong cc ph n sau. L p ny c th dng hi n th vn b n b ng b t c font no.

Khoa Cng ngh Thng tin

ih c L t

Trang 179

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Tm t t
Applet l chng trnh Java ch y trong trnh duy t web. M t chng trnh Java c th v a l applet, v a l application. L p Graphics n m trong gi AWT, bao g m cc phng th c c s d ng v cc hnh ho nh hnh oval, hnh ch nh t, hnh vung, hnh trn, ng th ng v vn b n. Java s d ng b ng mu RGB.

Khoa Cng ngh Thng tin

ih c L t

Trang 180

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Ki m tra s ti n b
1. 2. 3. 4. 5. Phng th c ................dng t m d ng applet. Phng th c ................dng c p nh t (update) c a s . M t chng trnh Java c th v a l applet, v a l application. Java applet khng th c, ghi file trn my ng i s d ng. Phng th c ................dng t o tham chi u n i t ng n (Graphics). 6. Trong java, i u khi n mu s c c th c hi n thng qua hai mu tr ng v en.

ng/Sai ng/Sai n ho c b n l ng/Sai

Khoa Cng ngh Thng tin

ih c L t

Trang 181

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Bi t p
Vi t applet nh sau:

Khi ng i s d ng nh p vo vn b n v click chu t vo nt 'Check identifier' applet ph i ki m tra xem t c trong vn b n c ph i l m t t kho c trong java khng. Ghi ch: S d ng cc font ch khc nhau cho vn b n, nt l nh v nhn.

Khoa Cng ngh Thng tin

ih c L t

Trang 182

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Chng 7

K T N I C S
N i dung chnh
Gi i thi u JDBC K t n i c s d li u v i JDBC T o truy v n v l y k t qu truy v n Hi n th d li u 7.1. Gi i thi u v JDBC

LI U

JDBC (Java Datatbase Connectivity) ch a m t t p cc i t ng v phng th c gip giao ti p v i CSDL m t cch thu n l i. Ph n c s c a JDBC ch a trong gi java.sql (c s n trong JDK), ph n m r ng ch a trong gi javax.sql ( c ci t ring nh m t tu ch n) ch a cc giao ti p, l p ph c v nhu c u m r ng nh giao tc phn tn (distributed transactions), webJDBC c kh nng k t n i v i nhi u DBMS khc nhau nh Access, MS SQL Server, Oracle, MySQL 7.2. Cc b c l p trnh c s d li u v i JDBC 7.2.1. K t n i c s d li u k t n i c trn CSDL ta l n l t th c hi n cc b c sau:

N p trnh i u khi n. Thi t l p k t n i: chng trnh Java g i phng th c Drivermanager.getConnection() nh n v i t ng Connection k t n i v i CSDL.
N p trnh i u khi n: n p trnh i u khi n ta s d ng c php sau:

Class.forName(driverString);
Trong driverString l chu i ch nh tn c a trnh i u khi n c n n p.

V d : N p trnh i u khi n ODBC (th ng cho MS Access):

Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);
V d : N p trnh i u khi n SQL Server:

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
V trnh i u khi n c th khng tong thch v i CSDL nn qu trnh n p trnh i u khi n c th pht sinh ng ai l ClassNotFoundException lm chng trnh d ng t

Khoa Cng ngh Thng tin

ih c L t

Trang 183

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

ng t, do sau:

an m n p trnh i u khi n c n ph i

t trong kh i try {} catch{} nh

try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); }


Thi t l p k t n i: t o m t k t n i t i CSDL ta ph i t o ra m t i t ng Connection theo c php d i y. Ch r ng cu l nh ny c th pht sinh ng ai l SQLException, nn cu l nh c n c t trong kh i l nh: try {} catch{}:

try{ Connection conn = DriverManager.getConnection(url, myLoginName, myPassword); } catch (SQLException e) { e.printStackTrace(); }


Trong :

url: chu i nu ln c i m c a CSDL, c d ng: jdbc:subprotocol:subname subprotocol: giao th c tng ng v i lo i CSDL subname: tn c u n i ODBC thng qua ta c th k t n i t i CSDL. Ch ng h n, t o m t subname (c u n i ODBC) tn l nhasach k t n i t i CSDL trong file C:\NhaSach.mdb ta th c hi n cc b c sau: o M h p tho i ODBC Data Source Administrator: Ch n Start\Run: G vo h p Open: odbcad32.exe. Nh n OK. Ho c ch y ti n ch Data Source(ODBC). o Ch n User (System) DSN\Add. o Ch n Miscrosoft Access Driver(*.mdb).

Khoa Cng ngh Thng tin

ih c L t

Trang 184

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

o Nh n nt Finish. o Ch n nt Select v duy t t i file C:\NhaSach.mdb. o t tn cho subname l nhasach trong Data Source Name. o Nh n OK.
V d : Sau khi c subname nhasach k t n i t i file C:\NhaSach.mdb (khng c n m t kh u ng i dng), ta k t n i t i CSDL ny qua cc cu l nh sau:

try{ Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); String url = "Jdbc:Odbc:bb;DataBase=QLSV"003B Connection conn = DriverManager.getConnection(url); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }
V d : Thay v k t n i t i CSDL thng qua c u n i ODBC ta c th k t n i tr c ti p nh sau:

String path = "D:\\data\\sample.mdb"; String url="jdbc:odbc:DRIVER=Microsoft Access Driver(*.mdb);DBQ="+path+"; READONLY=false;"; try{ Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection conn = DriverManager.getConnection(url); } catch (ClassNotFoundException e) { e.printStackTrace();

Khoa Cng ngh Thng tin

ih c L t

Trang 185

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

} catch (SQLException e) { e.printStackTrace(); }


V d : c cb : an m sau k t n i t i CSDL nhasach d ng SQL Server n m trn my tnh

String url = "jdbc:microsoft:sqlserver://" ":1433;Database=nhasach"; String username = "sa"; String password = "sa"; try{

"localhost"

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); Connection conn = DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }
7.2.2. T o truy v n v l y k t qu truy v n T o i t ng Statement i t ng

G i phng th c createStatement() c a l p Connection thng qua myConnection: myConnection.createStatement(); L y


i t ng Statement tr v :

Khoa Cng ngh Thng tin

ih c L t

Trang 186

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Statement stmt; stmt = myConnection.createStatement();


L y k t qu truy v n l y c k t qu c a cu truy v n ta c n ph i t o ra m t m u c u trc l nh sau: i t ng ResultSet b ng

ResultSet rs; rs= sta.executeQuery(sql);


Trong : sta: l i t ng Statement ho c PreparedStatement

sql: l cu truy v n Sau khi c i t ng ResultSet, ta dng cc phng th c sau di chuy n n t ng m u tin v ki m tra v tr con tr (cc phng th c ny tr v true n u th c hi n c, tr v false n u ng c l i):

Phng th c
next() previous() last() first() isLast() isFirst()

ngha
Di chuy n n m u tin k ti p Di chuy n n m u tin tr c m u tin hi n hnh. Di chuy n n m u tin cu i cng. Di chuy n n m u u tin. Ki m tra xem c ph i ang m u tin u tin hay khng. Ki m tra xem c ph i ang m u tin cu i hay khng.

l y t ng thnh ph n d li u trong t ng m u tin ta dng phng th c getXXX(String FieldName) ho c getXXX(int FieldIndex)c a i t ng thu c l p ResultSet. Trong ,

FieldName: Tn c t c n l y. FieldIndex: Ch s c a c t c n l y (trong cu truy v n), nh s t 1. XXX l ki u d li u tng ng v i c t (field) c n l y. o getByte(): l y gi tr ki u Byte. o getInt(): l y gi tr ki u Int. o getString(): l y gi tr ki u String. o getDouble(): l y gi tr ki u Double. o getObject(): l y gi tr ki u Object.

Khoa Cng ngh Thng tin

ih c L t

Trang 187

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

V d :

import java.awt.*; import java.awt.event.*; import java.sql.*; import java.util.*; import javax.swing.*; import javax.swing.table.*; public class Test extends JPanel{ Connection connect= null; Statement sta= null; ResultSet rs; String sql="SELECT MaSach, TenSach, TacGia, NamXB FROM Sach"; String []columnName = {"MaSach", "TenSach" ,"TacGia", "NamXB"}; DefaultTableModel modelTable DefaultTableModel(columnName,0); JTable table= new JTable(modelTable); public Test() throws Exception{ this.add(new JScrollPane(table)); String path = "c:\\jv\\nhasach.mdb"; String url="jdbc:odbc:DRIVER=Microsoft Access Driver (*.mdb);DBQ="+path+";READONLY=false;"; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); connect = DriverManager.getConnection(url); } catch (ClassNotFoundException e) { = new

Khoa Cng ngh Thng tin

ih c L t

Trang 188

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } sta= connect.createStatement(); rs= sta.executeQuery(sql); //duyet tung record , //dua tung record vao mot vector //Chen vector vao bang JTable while(rs.next()){ // Tao vector luu mot dong du lieu Vector myVector= new Vector(); myVector.add(rs.getString("MaSach")); myVector.add(rs.getString("TenSach")); myVector.add(rs.getString("TacGia")); myVector.add(""+ rs.getInt("NamXB")); modelTable.addRow(myVector); } } public static void main(String []args)throws Exception{ JPanel test= new Test(); JFrame frame= new JFrame ("JTable"); frame.getContentPane().add(test); frame.setSize(500,200);

Khoa Cng ngh Thng tin

ih c L t

Trang 189

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

frame.setVisible(true); } }

Khoa Cng ngh Thng tin

ih c L t

Trang 190

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Tm t t bi h c
JDBC (Java Datatbase Connectivity) ch a m t t p cc i t ng v phng th c gip giao ti p v i CSDL m t cch thu n l i. k t n i c trn CSDL ta l n l t th c hi n cc b c sau: o N p trnh i u khi n. o Thi t l p k t n i: chng trnh Java g i phng th c Drivermanager.getConnection() nh n v i t ng Connection k t n i v i CSDL. G i phng th c createStatement() c a l p Connection l y i t ng Statement. L y k t qu c a cu truy v n b ng cch t o ra m t i t ng ResultSet. Sau khi c i t ng ResultSet, ta dng cc phng th c c a l p ny di chuy n n t ng m u tin l y v hi n th k t qu .

Khoa Cng ngh Thng tin

ih c L t

Trang 191

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Bi t p
T o CSDL SQL Server ho c Access ( t tn file l NhaSach) v i cc b ng nh 2 b ng d i y. Sau t o relationship tong ng: THELOAI
MATL TH TN VH TENTL Tin Hoc Toan Hoc Van Hoc

SACH
MASACH TH01 TN01 TN02 VH01 VH02 TENSACH Lap Trinh Pascal Toan Cao Cap - Tap 1 Ly Thuyet Xac Suat Manh Dat Lam Nguoi Nhieu Ma Buoi Chieu Windows MATL TH TN TN VH VH TACGIA NAMXB Duong Thanh Tu 1997 Phan Thanh Vinh 1996 Ng Duy Tien 1995 Ma Van Khang 1995 Ng Nhat Anh 1999 NHAXB Lao Dong Da Nang HN GTVT Kim Dong

1. T o form QuanLyTheLoai v i cc ch c nng sau: Hi n danh sch cc th l ai. Thm, xa, s a th l ai.

2. T o form QuanLySach v i cc ch c nng sau: Hi n danh sch cc th l ai. Thm, xa, s a sch.

Thm vo form QuanLyTheLoai m t nt nh n v m t TextBox. Khi nh p m th l ai vo TextBox v nh n vo nt th chng trnh s li t k t t c cc sch thu c cng m t th l ai ch n.

Khoa Cng ngh Thng tin

ih c L t

Trang 192

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Chng 8

DNG NH P/XU T (I/O Stream)


N i dung chnh
Cc khi ni m v Stream Cc l p InputStream v OutputStream M t vo ra m ng Byte Th c hi n l c v m nh p/xu t Dng l p RandomAccesFile. M t vo/ra chu i v k t Dng l p PrinterWriter

8.1. Gi i thi u
Chng ny gi i thi u khi ni m v dng (Stream). Chng ta cng th o lu n cc l p khc nhau trong gi java.io ph c v vo ra.

8.2. Stream
Theo thu t ng chung, stream l m t dng lu chuy n, trong thu t ng v k thu t dng l m t l trnh m d li u c truy n trong chng trnh. M t ng d ng v cc dng ma ta quen thu c l dng nh p System.in. Dng l nh ng ng g i v nh n thng tin trong cc chng trnh java. Khi m t dng d li u c g i ho c nh n, ta tham chi u n nh ang ghi v c m t dng tng ng. Khi m t dng c c hay ghi, cc lu ng khc b c nhu c u c/ghi dng u ph i t m d ng. N u c m t l i x y ra khi c hay ghi ng, m t ngo i l ki u IOException c t o ra. Do v y, cc cu l nh thao tc dng ph i bao g m kh i try-catch. L p java.lang.System nh ngha cc dng nh p v xu t chu n. chng l cc l p chnh c a cc dng byte m java cung c p. Chng ta cng s d ng cc dng xu t xu t d li u v hi n th k t qu trn mn hnh. Dng vo/ra bao g m: L p System.out: Dng xu t chu n dng hi n th k t qu trn mn hnh. L p System.in: Dng nh p chu n th ng n t bn phm v c dng cc k t d li u. L p System.err: y l dng l i chu n. c

Cc l p InputStream v OutputStream cung c p nhi u kh nng vo/ra khc nhau. C hai l p ny c cc l p th a k th c hi n I/O thng qua cc vng b nh m, cc t p tin v ng (pipeline). Cc l p con c a l p InputStream th c hi n vo, trong khi cc l p con c a l p OutputStream th c hi n ra.

Khoa Cng ngh Thng tin

ih c L t

Trang 193

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

8.3. Gi java.io
Cc lu ng h th ng r t c ch. Tuy nhin, chng khng m nh dng khi ng ph v i I/O th c t . Gi java.io ph i c nh p kh u v m c ch ny. Chng ta s th o lu n tm hi u v cc l p thu c gi java.io.

8.3.1. L p InputStream
L p InputStream l m t l p tr u t ng. N nh ngha cch th c nh n d li u. i m quan tr ng khng n m ch d li u t u, m l kh nng truy c p. L p InputStream cung c p m t s phng th c c v dng cc dng d li u lm u vo. Cc phng th c ny gip ta t o, c v x l cc dng u vo. Cc phng th c c hi n trong b n 8.1. Tn phng th c read() M t c cc byte d li u t m t dng. N u nh khng c byte d li u no, n ph i ch . Khi m t phng th c ph i ch , cc lu ng ang th c hi n ph i t m d ng cho n khi c d li u. Tr v s byte c c hay -1 n u nh c n cu i dng. N gy ra ngo i l IOException n u c l i x y ra. N cng c vo m t m ng byte. N tr v s byte th c s c c cho n khi k t thc dng. N gy ra ngo i l IOException n u l i x y ra. Phng php ny tr v s l ng byte c th c c m khng pah ch . N tr v s byte hi n t i c trong dng. N khng ph i l phng th c tin c y th c hi n ti n trnh x l u vo. Phng th c ny ng dng. N dng gi i phng m i ti nguyn dng s d ng. Lun lun ng dng ch c ch n r ng dng x l c k t thc. N gy ra ngo i l IOException n u l i x y ra. nh d u v tr hi n t i c a dng. Tr v gi tr boolean ch ra r ng dng c h tr cc kh nng mark v reset hay khng. N tr v True n u dng h tr ng c l i tr v False. Phng th c ny nh v l i dng theo v tr c nh l n cu i cng. N gy ra ngo i l IOException n u l i x y ra. Phng th c ny b qua n byte dng vo. -n ch nh s byte c b qua. N gy ra ngo i l IOException n u l i x y ra. Phng th c ny s d ng di chuy n t i v tr c bi t bn trong dng vo.

read (byte []) read (byte [], int, int) available()

close()

mark() markSupported() reset() skip()

Table 8.1 Cc phng th c c a l p InputStream

Khoa Cng ngh Thng tin

ih c L t

Trang 194

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

8.3.2. L p OutputStream
L p OutputStream cng l l p tr u t ng. N nh ngha cch ghi cc k t xu t n dng. N cung c p m t t p cc phng th c tr gip t o ra, ghi v x l k t xu t cc dng. Cc phng th c bao g m: Tn phng th c write(int) write(byte[]) write(byte[],int,int) M t Phng th c ny ghi m t byte Phng th c ny phong to cho n khi m t byte c ghi. dng ph i ch cho n khi tc v ghi hon t t. N gy ra ngo i l IOException n u l i x y ra. Phng th c ny ghi m ng cc byte. L p OutputStream nh ngha ba d ng khc nhau c a phng th c c th ghi m t byte ring l , m t m ng cc byte, hay m t o n c a m t m ng byte. Phng th c ny x s ch dng. m d li u c ghi ra dng. N kch ho t IOException n u l i x y ra. Phng th c ng dng. N c dng gi i phng m i ti nguyn g n v i dng. N kch ho t IOException n u l i x y ra. B ng 8.2 Cc phng th c l p OutputStream

flush()

close()

8.3.3. Vo ra m ng byte
Cc l p ByteArrayInputStream v ByteArrayOutputStream s d ng cc b Khng c n thi t ph i dng chng cng v i nhau. L p ByteArrayInputStream L p ny t o dng u vo t b m, l m ng cc byte. L p ny khng h tr cc phng th c m i. Ng c l i n nh ngha cc phng th c c a l p InputStream nh read() , skip(), available() v reset(). L p ByteArrayOutputStream L p ny t o ra dng ra trn m t m ng cc byte. N cng cung c p cc kh nng cho php m n ra tng tr ng nh m m c ch tng kch th c. L p ny cng cung c p them cc phng th c toByteArrray() v toString(). Chng c dng chuy n i dng thnh m t m ng byte hay chu i. L p ByteArrayOutputStream cng cung c p hai phng th c thi t l p. M t c m t i s s nguyn dng n nh m ng byte ra theo m t kch c ban u v th hai khng c i s no, n thi t l p b ra xu t v i kch th c m c nh. L p ny cung c p vi phng th c b sung, khng c khai bo trong OutputStream: reset() m.

Khoa Cng ngh Thng tin

ih c L t

Trang 195

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Thi t l p l i vng size()

m ra nh m cho php ghi l i t

u vng

m.

Tr v s byte hi n t i c ghi t i vng writeto() Ghi n i dung c a vng m ra dng ra ch t ng c a l p OutputStream lm i s .

m.

nh.

th c hi ns d ng m t

Chng trnh 8.1 s d ng l p ByteArrayInputStream v ByteArrayOutputStream nh p v xu t: Chng trnh 8.1

import java.lang.System; import java.io.*; public class byteexam{ public static void main(String args[]) throws IOException{ ByteArrayOutputStream os =new ByteArrayOutputStream(); String s ="Welcome to Byte Array Input Outputclasses"; for(int i=0; i<s.length( );i++) os. write (s.charAt(i) ) ; System.out.println("Output Stream is:" + os); System.out.println("Size of output stream is:"+ os.size()); ByteArrayInputStream in; in = new ByteArrayInputStream(os.toByteArray()); int ib = in.available();

System.out.println("Input Stream has :" + ib + "available bytes"); byte ibuf[] = new byte[ib]; int byrd = in.read(ibuf,0,ib);

Khoa Cng ngh Thng tin

ih c L t

Trang 196

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

System.out.println("Number of Bytes read are :" + byrd); System.out.println("They are: " + new String(ibuf)); } }
K t xu t c a chng trnh:

Hnh 8.1: S d ng l p ByteArrayInputStream v ByteArrayOutputStream cho nh p v xu t. 8.3.4. T p tin nh p xu t Java h tr cc tc v nh p v xu t t p tin v i s tr gip cc l p sau y: File FileDescriptor FileInputStream FileOutputStream Java cng h tr truy c p nh p v xu t tr c ti p hay ng u nhin b ng cc l p File,FileDescriptior, v RandomAccessFile. L p File L p ny c s d ng truy c p cc i t ng t p tin v th m c. Cc t p tin t tn theo qui c t tn t p tin c a h i u hnh. Cc qui c ny c m t b ng cc h ng s c a l p File. L p ny cung c p cc phng th c thi t l p cc t p tin v cc th m c. Cc thi t l p ch p nh n cc ng d n t p tin tuy t i l n tng i c a cc t p tin v th m c. T t c cc thao tc th m c v t p tin c th c hi n thng qua cc phng th c c a l p File. Cc phng th c:

Khoa Cng ngh Thng tin

ih c L t

Trang 197

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Cho php b n t o, xo, i tn cc file. Cung c p kh nng truy c p b ng ng d n t p tin. Xc nh i t ng l t p tin hay th m c. Ki m tra quy n truy c p c v ghi. Gi ng nh cc phng th c truy c p, cc phng th c th m c cng cho php t o, xo, t tn l i v li t k cc th m c. Cc phng th c ny cho php truy nh p cy th m c, cung c p kh nng truy c p th m c cha v cc th m c anh em. L p FileDescriptor L p ny cung c p kh nng truy c p cc m t t p tin m h i u hnh s d ng khi t p tin v th m c ang c truy c p. L p ny khng cung c p cc phng th c cho php xem chi ti t thng tin do h i u hnh s d ng. N ch cung c p m t phng th c duy nh t l valid(), gip xc nh m t i t ng m t t p tin hi n c h p l hay khng. L p FileInputStream L p ny cho php c vo t m t t p tin d i d ng m t dng. Cc i t ng c a l p ny c t o ra nh ng d n t i file, i t ng File, ho c i t ng FileDescriptor lm m t i s . L p ny nh ngha ch ng cc phng th c c a l p InputStream. N cng cung c p thm cc phng th c finalize() v getFD(). Phng th c finalize() c dng ng dng khi n c b gom rc Java nh t. Phng th c getFD() tr v i t ng FileDescriptor ch a thng tin v s k t n i th c s t i file m FileInputStream ang s d ng. L p FileOutputStream L p ny cho php xu t ra m t t p tin theo dng. Cc i t ng c a l p ny cng t o ra s d ng ng d n c a t p tin, FileDesciptor lm tham s thi t l p. L p ny nh ngha ch ng phng th c c a l p OutputStream v cung c p thm cc phng th c finalize() v getFD(). Chng trnh 8.2

import java.io.FileOutputStream; import java.io.FileInputStream; import java.io.File; import java.io.IOException; public class fileioexam{ public static void main(String args[ ]) throws IOException {

Khoa Cng ngh Thng tin

ih c L t

Trang 198

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

//t o file abc.txt FileOutputStream os = new FileOutputStream("abc.txt"); String s = "Welcome to File Input Output Stream " ; for(int i = 0; i< s.length( ); ++i) os. write(s.charAt(i)); os.close(); // m file abc.txt c

FileInputStream is = new FileInputStream("abc.txt"); int ibyts = is.available( ); System.out.println("Input Stream has " + ibyts + " available bytes"); byte ibuf[ ] = new byte[ibyts]; int byrd = is.read(ibuf, 0, ibyts); System.out.println("Number of Bytes read are: " + byrd); System.out.println("They are: " + new String(ibuf)); is.close(); File fl = new File("abc.txt"); fl.delete(); } }
Hnh 8.2 hi n k t xu t c a o n m ngu n trn:

Hnh 8.2 S d ng FileInputStream, FileOutputStream, v l p File


Khoa Cng ngh Thng tin ih c L t
Trang 199

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

8.3.5. Nh p xu t l c M t Filter l m t ki u dng thay i cch x l dng hi n c. Cc l p, cc dng nh p xu t l c c a java s gip ta l c vo/ra theo m t s cch. V c b n, cc b l c ny dng thch nghi cc dng theo cc nhu c u c a chng trnh c th . B l c n m gi a m t dng nh p v m t dng xu t. N th c hi n x l m t qu trnh no trn cc byte c truy n t u vo n u ra. Cc b l c c th ghp v i nhau khi u ra c a b l c ny tr thnh u vo c a b l c kia. L p FilterInputStream y l l p tr u t ng. N l cha c a t t c cc l p dng nh p l c. L p ny cung c p kh nng t o ra m t dng t dng khc. M t dng c th c c v a k t qu cho m t dng khc. Bi n in c s d ng lm i u ny. Bi n ny c dng duy tr m t i t ng tch bi t c a l p InputStream. L p FilterInputStream c thi t k sao cho c kh nng k t chu i nhi u b l c. th c hi n i u ny chng ta dng vi t ng l ng nhau. M i l p s truy c p u ra c a l p tr c v i s tr gip c a bi n in. L p FilterOutputStream L p ny l m t d ng b tr cho l p FilterInputStream. N l l p cha c a t t c cc l p dng xu t l c. L p ny tng t nh l p FilterInputStream ch n duy tr i t ng c a l p OutputStream lm m t bi n out. D li u ghi vo l p ny c th s a i theo nhu c u th c hi n tc v l c v sau c chuy n t i i t ng OutputStream. 8.3.6. Nh p/xu t c s d ng b m

Vng m l kho lu tr d li u. Chng ta c th l y d li u t vng m thay v quay tr l i ngu n ban u c a d li u. Java s d ng c ch nh p/xu t c l p vng m t m th i l p cache d li u vo/ra c a m t dng. N gip chng trnh c/ghi l ng d li u nh khng nh h ng l n n hi u nng chung c a h th ng. Trong khi th c hi n vo c vng m, m t s l ng byte l n c c t i m t th i i m, v lu tr trong m t vng m nh p. Khi chng trnh c dng nh p th thay v ra dng vo c n c t vng m nh p. Ti n trnh l p vng m ra cng th c hi n tng t . khi d li u c m t chng trnh ghi ra dng ra, d li u ra c lu tr trong m t vng m ra. D li u c lu tr n khi vng m y ho c cc dng tra th c hi n x tr ng (flush). Cu i cng li u ra trong vng m c chuy n n dng ra. Cc b l c ho t ng trn vng m. Vng m c t gi a chng trnh v dng ra c a vng m. L p BufferedInputStream L p ny t ng t o ra v duy tr vng m h tr thao tc vo. Nh chng trnh c th c d li u t dng t ng byte m t m khng nh h ng n t c th c hi n c a h th ng. B i l p BufferedInputStream l m t b l c, nn c th p

Khoa Cng ngh Thng tin

ih c L t

Trang 200

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

d ng n cho m t s i t ng nh t nh c a l p InputStream v cng c th ph i h p v i cc t p tin u vo khc. L p ny s d ng vi bi n th c hi n cc c ch l p vng m u vo. Cc bi n ny c khai bo l protected v do chng trnh khng th truy c p tr c ti p. L p ny nh ngha hai phng th c thi t l p. M t cho php ch nh kch c c a vng m nh p trong khi phng th c thi t l p kia th khng. Nhng c hai phng th c thi t l p u ti p nh n i t ng c a l p InputStream lm i s . L p ny nh ngha ch ng cc phng th c truy c p m InputStream cung c p v khng a thm b t k phng th c m i no. L p BufferedOutputStream L p ny cng nh ngha hai phng th c thi t l p, m t cho php ch nh kch c c a vng m xu t, m t s d ng kch c vng m ng m nh. L p ny nh ngha ch ng t t c cc phng th c c a OutputStream v khng a thm b t k phng th c m i no. Chng trnh 8.3 d i y m t cch dng cc lu ng nh p/xu t c l p vng m: Chng trnh 8.3

import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.SequenceInputStream; import java.io.IOException; public class buffexam{ public static void main(String args[ ]) throws IOException{ // defining sequence input stream SequenceInputStream Seq3; FileInputStream Fis1 ; Fis1 = new FileInputStream("byteexam.java"); FileInputStream Fis2; Fis2= new FileInputStream("fileioexam.java"); Seq3 = new SequenceInputStream(Fis1, Fis2); // create buffered input and output streams

Khoa Cng ngh Thng tin

ih c L t

Trang 201

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

BufferedInputStream inst; inst= new BufferedInputStream(Seq3); BufferedOutputStream oust; oust= new BufferedOutputStream(System.out); inst.skip(1000); boolean eof = false; int bytcnt = 0; while(!eof){ int num = inst.read(); if(num==-1){ eof =true; } else{ oust.write((char) num); ++bytcnt; } } String bytrd=String.valueOf(bytcnt); bytrd += " bytes were read"; oust.write(bytrd.getBytes(), 0, bytrd.length()); // close all streams. inst.close(); oust.close(); Fis1.close(); Fis2.close();

Khoa Cng ngh Thng tin

ih c L t

Trang 202

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

} }
K t xu t c a chng trnh trn:

Hnh 8.3 S d ng cc l p vng 8.3.7. L p Reader v Writer

m lu ng nh p v xu t.

y l cc l p tr t ng. Chng l l p cha c a t t c cc l p dng k t unicode. Java 1.1 gi i thi u cc l p ny. L p Reader L p ny h tr cc phng th c: read( ) reset( ) skip( ) mark( ) markSupported( ) close( )

c v ghi cc

L p ny cng h tr phng th c ready(). Phng th c ny tr v gi tr ki u boolean, xem vi c c c ti p t c c hay khng. L p Writer L p ny h tr cc phng th c: write( )
Khoa Cng ngh Thng tin ih c L t
Trang 203

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

flush( ) close( ) 8.3.8. Nh p/ xu t chu i v xu k t Cc l p CharArrayReader v CharArrayWriter cng tng t nh cc l p ByteArrayInputStream v ByteArrayOutputStream ch chng h tr nh p/xu t t cc vng m. Cc l p CharArrayReader v CharArrayWriter h tr nh p/ xu t k t 8 bit. CharArrayReader b sung thm phng php no, n ch dng cc phng th c m l p Reader cung c p. L p CharArrayWriter b sung thm cc phng th c sau y ngoi cc phng th c c a l p Writer. reset( ) Thi t l p l i vng size( ) tr v kch c hi n hnh c a vng toCharArray( ) Tr v b n sao m ng k t c a vng toString( ) Chuy n writeTo( ) Ghi vng m ra m t lu ng xu t khc. i vng m xu t thnh m t i t ng String m xu t m m

L p StringReader tr gip c k t t m t chu i. N khng b sung phng th c no ngoi cc phng th c c a l p Reader. L p StringWriter tr gip ghi k t ra i t ng StringBuffer. L p ny b sung hai phng th c c tn l getBuffer( ) v toString() . Phng th c getBuffer( ) tr v i t ng StringBuffer tng ng v i vng m xu t, trong khi phng th c toString( ) tr v m t chu i ch a b n sao c a vng m xu t. Chng trnh 8.4 d i y th c hi n cc tc v nh p/xu t m ng k t : Chng trnh 8.4

import java.io.CharArrayReader; import java.io.CharArrayWriter; import java.io.IOException; public class testl{

Khoa Cng ngh Thng tin

ih c L t

Trang 204

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

public static void main(String args[ ]) throws IOException { CharArrayWriter ost = new CharArrayWriter( ); String s = "Welcome to Character Array Program"; for(int i= 0; i<s.length( ); ++i) ost.write(s.charAt(i)); System.out.println("Output Stream is: " + ost); System.out.println("Size is: " + ost.size( )); CharArrayReader inst; inst = new CharArrayReader(ost.toCharArray( )); int a= 0; StringBuffer sbI = new StringBuffer(" "); while((a = inst.read( )) != -1) sbI.append((char) a); s = sbI.toString( ); System.out.println(s.length() + "characters were read"); System.out.println("They are:" + s); } }
K t xu t chng trnh:

Hnh 8.4 Cc tc v nh p v xu t m ng cc k t Chng trnh 8.5 M t ti n trnh nh p/xu t chu i.


Khoa Cng ngh Thng tin ih c L t

Trang 205

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Chng trnh 8.5

import java.lang.System; import java.io.StringReader; import java.io.StringWriter; import java.io.IOException; import java.io. * ; public class strioexam{ public static void main(String args[ ]) throws IOException{ StringWriter ost = new StringWriter( ); String s = "Welcome to String Input Output Program"; for(int i= 0; i <s.length(); ++i) ost.write(s.charAt(i)) ; System.out.println("Output Stream is: " + ost); StringReader inst; inst = new StringReader(ost.toString( )); int a= 0; StringBuffer sb1 = new StringBuffer(" "); while((a = inst.read())!=-1) sb1.append((char) a); s = sb1.toString( ); System.out.println("No of characters read: " +s.length( )); System.out.println("They are: " + s); } }
K t xu t chng trnh:

Khoa Cng ngh Thng tin

ih c L t

Trang 206

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Hnh 8.5 Nh p v xu t chu i 8.3.9. L p PrinterWriter L p PrintStream th c hi n vi c k t xu t d li u. L p ny c cc phng th c b sung, tr gip cho vi c in n d li u c b n. L p PrinterWriter l m t phin b n h ng k t c a l p PrintStream. N th c t c i thi n l p PrintStream b ng cch dng d u tch dng ph thu c h i u hnh in cc dng thay v k t \n. L p ny cng c p h tr k t Unicode t t hn so v i PrintStream. Phng th c checkError() c s d ng ki m tra k t xu t v xo s ch cc l i. Phng th c setError() c s d ng thi t l p l i i u ki n. L p PrinterWriter h tr in n cc ki u d li u nguyn thu , m ng k t , chu i v i t ng. 8.3.10. Giao di n DataInput Giao di n DataInput c s d ng c cc byte t dng nh phn v xy d ng l i cc ki u d li u d ng nguyn thu c a Java. DataInput cng cho php chng ta chuy n i d li u t nh d ng s a i UTF-8 t i d ng chu i. Chu n UTF cho nh d ng chuy n i Unicode. N l ki u nh d ng t bi t m ho cc k t Unicode 16 bit . UTF cho r ng trong h u h t cc tr ng h p, byte cao trong 2 byte Unicode s l 0. Giao di n DataInput c nh ngha m t s cc phng th c, cc phng th c bao g m vi c c cc ki u d li u nguyn thu trong java. B ng 8.3 Tm l t vi phng th c. T t c cc phng th c ngo i l IOException trong tr ng h p l i: Tn phng th c boolean readBoolean( ) byte readByte( ) char readChar( ) short redShort( ) long readLong( ) M t c m t byte nh p, v tr v khc 0, v False n u byte b c m t byte c v tr v m t gi tr k t c 2 byte v tr v gi tr ki c 8 byte v tr v gi tr ki u c kh nng t o ra

True n u byte ng 0. u short u long.

Khoa Cng ngh Thng tin

ih c L t

Trang 207

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

float readFloat( ) int readInt( ) double readDouble( ) String readUTF( ) String readLine( )

c 4 byte v tr v gi tr ki u float c 4 byte v tr v gi tr ki u int c 8 byte v tr v gi tr ki u double c m t chu i c m t dng vn b n

B ng 8.3 Cc phng th c c a giao di n DataInput 8.3.11. Giao di n DataOutput Giao di n DataOutput c s d ng ti t o l i cc ki u d li u nguyn thu trong java vthnh dy byte. N ghi cc byte ny ln trn dng nh phn. Giao di n DataOutput cng cho php chng ta chuy n i m t chu i vo trong Java theo nh d ng UTF-8 v ghi n vo dng. Giao di n DataOutput nh ngha m t s phng th c c tm t t trong b ng 8.4. T t c cc phng th c u c kh nng gy ra ngo i l IOException trong tr ng h p l i. Tn phng th c void writeBoolean(boolean b) void writeByte(int value) void writeChar(int value) void writeShort(int value) void writeLong(long value) void writeFloat(float value) void writeInt(int value) void writeDouble(double value) void writeUTF(String value) M t Ghi m t gi tr Boolean vo dng Ghi gi tr 8 bit th p Ghi 2 byte gi tr ki u k t vo dng Ghi 2 byte, bi u di n l i gi tr ki u short Ghi 8 byte, bi u di n l i gi tr ki u long Ghi 4 byte, bi u di n l i gi tr ki u float ghi 4 byte Ghi 8 byte, bi u di n l i gi tr ki u double Ghi m t chu i UTF t i dng.

B ng 8.4 Cc phng th c c a giao di n DataOutput 8.3.12 L p RandomAccessFile L p RandomAccessFile cung c p kh nng th c hi n vo/ra theo m t v tr c th bn trong m t t p tin. Trong l p ny, d li u c th c ho c ghi v tr ng u nhin thay v lin t c. V v y l p ny c tn l RandomAccess. Phng thc seek( ) h tr truy c p ng u nhin. V th , bi n tr tng ng v i t p tin hi n hnh c th n nh theo v tr b t k trong t p tin. L p RandomAccessFile th c hi n c hai vi c nh p v xu t. Do vy, c th th c hi n I/O b ng cc ki u d li u nguyn thu . L p ny cng h tr cc quy n c b n v c ho c ghi t p tin, i u ny cho php c t p tin theo ch ch c ho c c-ghi. Tham s r ho c rw c gn cho l p RandomAccessFile ch nh truy c p ch c v c-ghi. L p ny gi i thi u vi phng th c m i khc v i phng th c th a k t cc l p DataInput v DataOutput.Cc phng th c m i thm vo bao g m: seek( ) Thi t l p con tr t p tin t i v tr c th bn trong t p tin.

Khoa Cng ngh Thng tin

ih c L t

Trang 208

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

getFilePointer( ) Tr v v tr hi n hnh c a con tr t p tin. length( ) Tr v chi u di c a t p tin tnh theo byte. Chng trnh d i y minh ho cch dng l p RandomAccessFile. N ghi m t gi tr boolean, m t int, m t char, m t double t i m t file c tn abc.txt. N s d ng phng php seek( ) tm v tr nh v bn trong t p tin (b t u t 1). Sau n c gi tr s nguyn, k t v double t t p tin v hi n th chng ra mn hnh. Chng trnh 8.6

import java.lang.System; import java.io.RandomAccessFile; import java.io.IOException; public class rndexam{ public static void main (String args[ ]) throws IOException{ RandomAccessFile rf; rf = new RandomAccessFile(abc.txt, rw); rf.writeBoolean(true); rf.writeInt(67868); rf.writeChars(J); rf.writeDouble(678.68);

//making use of seek() method to move to a specific file location rf.seek(1); System.out.println(rf.readInt()); System.out.println(rf.readChar()); System.out.println(rf.readDouble()); rf.seek(0);

Khoa Cng ngh Thng tin

ih c L t

Trang 209

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

System.out.println(rf.readBoolean)); rf.close(); } }
K t xu t chng trnh:

Hnh 8.6: L p RandomAccessFile

Gi java.awt.print
y l gi m i m Java 1.2 cung c p. N thay th kh nng in c a JDK 1.1. N bao g m dy cc giao di n: Pageable Printable PrinterGraphics Giao di n Pageable nh ngha cc phng th c c s d ng cho i t ng m t cc trang s c in. N cng ch ra s l ng trang s c in cng nh s c in trang hi n hnh hay m t dy cc trang. Giao di n Printable ch nh phng th c print() c dng in m t tr ng trn m t i t ng Graphics. Giao di n PrinterGraphics cung c p kh nng truy c p i t ng PrinterJob. N cung c p cc l p sau y: Paper Book PageFormat Printerjob L p Page nh ngha cc c tnh v t l c a trang gi y in. Ngoi ra n cng cung c p kh gi y v vng v . L p Book l m t l p con c a i t ng duy tr m t danh sch cc trang c in. L p ny cng cung c p cc phng th c thm trang v qu n l trang. N ci t giao di n Pageable. L p PageFormat nh ngha l c a trang nh Top, Bottom,Left v Right. N cng ch nh kch c v h ng in nh Portrait
Khoa Cng ngh Thng tin ih c L t
Trang 210

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

(kh d c) ho c Landscape (kh ngang). L p PrinterJob l m t l p con c a i l ng kh i t o, qu n l, v i u khi n yu c u my in. L p ny cng ch nh cc tnh ch t in. D i y l ngo i l v l i m gi java.awt.print kch ho t: PrinterException PrinterIOException PrinterAbortException PrinterException th a k java.lang.Exception nh m cung c p m t l p c s in cc ngo i l lin quan. PrinterIOException th a PrinterException ch r l i trong I/O. PrinterAbortException l l p con c a l p PrinterException nu r vi c in c hu b .

Khoa Cng ngh Thng tin

ih c L t

Trang 211

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Tm t t bi h c
M t dng l m t phng php qua d li u di chuy n trong chng trnh java. Khi m t dng d li u c g i ho c nh n. Chng ta xem n nh ang ghi v c m t dng tng ng. Dng nh p/xu t bao g m cc l p sau y:

o L p System.out o L p System.in o L p System.err L p InputStream l m t l p tr u t ng nh ngha cch nh n d li u. L p OutputStream cng l l p tr u t ng. N nh ngha ghi ra cc dng c k t xu t nh th no. L p ByteArrayInputStream t o ra m t lu ng nh p t vng m b nh trong khi ByteArrayOutputStream t o m t lu ng xu t trn m t mng byte. Java h tr tc v nh p/xu t t p tin v i s tr gip c a cc l p File, FileDescriptor, FileInputStream v FileOutputStream. Cc l p Reader v Writer l l p tr u t ng h tr c v ghi cc dng k t Unicode. CharArrayReader, CharArrayWriter khc v i ByteArrayInputStream, ByteArrayOutputStream h tr nh d ng nh p/xu t 8 bit, Trong khi ByteArrayInputStream, ByteArrayOutputStream h tr nh p/xu t 16bit. L p PrintStream ci t giao di n xu t, l p ny c b sung phng th c gip ta in cc ki u d li u nguyn thu . L p RandomAccessFile cung c p kh nng th c hi n I/O t i v tr c th trong m t t p tin.

Khoa Cng ngh Thng tin

ih c L t

Trang 212

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Ki m tra m c
1. 2. 3. 4. 5. 6. 7. 8.

ti n b

---------- l ng (pipeline) g i v nh n thng tin trong cc chng trnh java. ----------- l dng l i chu n. Phng th c ------------- c cc byte d li u t m t dng. Phng th c ------------- tr v gi tr boolean, ki m tra xem dng c h tr cc kh nng mark v reset hay khng. Phng th c ------------ x s ch dng. Nh p/xu t m ng byte s d ng cc l p ------------ v --------------------L p --------------- c s d ng truy c p cc i t ng th m c v t p tin. --------------l m t ni ch a d li u.

Khoa Cng ngh Thng tin

ih c L t

Trang 213

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Bi t p
1. Vi t chng trnh nh n m t dng vn b n t ng i dng v hi n th o n vn b n ln mn hnh. 2. Vi t chng trnh sao chp n i d ng t m t t p tin t i m t t p tin khc. 3. Vi t chng trnh truy c p ng u nhin t p tin, c giao di n nh sau:

Cc b n ghi nn c lu ny.

t p tin .dat, v v y ng i dng truy c p chng sau

Khoa Cng ngh Thng tin

ih c L t

Trang 214

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Chng 9

X
N i dung chnh
nh ngha ngo i l M c ch c a vi c x l ngo i l Cc ki u ngo i l khc nhau trong Java M hnh x l ngo i l Cc kh i l nh ch a nhi u kh i x l ngo i l Cch s d ng cc kh i try, catch v finally Cch s d ng cc t kho throw v throws T t o ra cc ngo i l

L NGO I L

9.1. Gi i thi u
Exception l m t lo i l i c bi t. L i ny xu t hi n vo lc th c thi chng trnh. Cc tr ng thi khng bnh th ng x y ra trong khi thi hnh chng trnh t o ra cc exception. Nh ng tr ng thi ny khng c bi t tr c trong khi ta ang xy d ng chng trnh. N u b n khng x l cc tr ng thi ny th chng trnh c th b k t thc t ng t. V d , vi c chia cho 0 s t o m t l i trong chng trnh. Ngn ng Java cung c p c ch dng x l ngo i l r t hi u qu . Vi c x l ny lm h n ch t i a tr ng h p h th ng b h ng (crash) hay h th ng b ng t t ng t. Tnh nng ny lm cho Java tr thnh m t ngn ng l p trnh m nh.

9.2. M c ch c a vi c x l ngo i l
M t chng trnh nn c c ch x l ngo i l thch h p. N u khng, chng trnh s b ng t khi m t ngo i l x y ra. Trong tr ng h p , t t c cc ngu n ti nguyn m h th ng c p khng c gi i phng. i u ny gy lng ph ti nguyn. trnh tr ng h p ny, t t c cc ngu n ti nguyn m h th ng c p nn c thu h i l i. Ti n trnh ny i h i c ch x l ngo i l thch h p. V d , xt thao tc vo ra (I/O) trong m t t p tin. N u vi c chuy n i ki u d li u khng th c hi n ng, m t ngo i l s x y ra v chng trnh b h y m khng ng t p tin l i. Lc t p tin d b h h i v cc ngu n ti nguyn c c p pht cho t p tin khng c tr l i cho h th ng.

9.3. X l ngo i l
Khi m t ngo i l x y ra, i t ng (object) tng ng v i ngo i l c t o ra. i t ng ny sau c truy n cho phng th c l ni m ngo i l x y ra. i t ng ny ch a thng tin chi ti t v ngo i l . Thng tin ny c th c nh n v v c x l. Cc mi tr ng runtime nh IllegalAccessException, EmptyStackException v.v c th t o ra ngo i l . Chng trnh i khi c th t t o ra ngo i l . L p Throwable c Java cung c p l l p trn cng c a l p Exception (l p u tin trong cy th a k ), l p ny l l p cha c a t t c cc ngo i l khc.
Khoa Cng ngh Thng tin ih c L t

Trang 215

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

9.4. M hnh x l ngo i l


Trong Java, m hnh x l ngo i l gim st vi c th c thi m pht hi n ngo i l . M hnh x l ngo i l c a Java c g i l catch and throw. Trong m hnh ny, khi m t ngo i l x y ra, ngo i l s b ch n v chng trnh chuy n n m t kh i x l ngo i l . Ng i l p trnh ph i x l cc ngo i l khc nhau c th pht sinh trong chng trnh. Cc ngo i l ph i c x l, ho c thot kh i chng trnh khi n x y ra. Ngn ng Java cung c p 5 t kho sau x l cc ngo i l : try catch throw throws finally D i y l c u trc c a m hnh x l ngo i l :

try{ // o n m c kh nng gy ra ngo i l } catch(Exception e1){ // N u cc l nh trong kh i try t o ra ngo i l c lo i e1, th th c hi n //x l ngo i l n u khng chuy n xu ng kh i 'catch' ti p theo } catch(Exception e2){ // N u cc l nh trong kh i try t o ra ngo i l c lo i e2, th th c hi n //x l ngo i l n u khng chuy n xu ng kh i 'catch' ti p theo } catch(Exception eN){ // N u cc l nh trong kh i try t o ra ngo i l c lo i eN, th th c hi n //x l ngo i l n u khng chuy n xu ng kh i 'catch' ti p theo } finally{ // kh i l nh nay lun c th c hi n cho d ngo i l c x y ra hay khng. }

Khoa Cng ngh Thng tin

ih c L t

Trang 216

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

9.4.1. Cc u i m c a m hnh catch v throw


M hnh catch v throw c hai u i m: Ng i l p trnh ch ph i x l ngo i l khi c n thi t. Khng c n ph i th c hi n t i m i m c. Thng bo l i c th c hi n ra khi ti n hnh x l ngo i l .

9.4.2. Cc kh i try v catch


Kh i try-catch c s d ng thi hnh m hnh catch v throw c a vi c x l ngo i l . Kh i try ch a m t t p l nh c th thi hnh c. Cc ngo i l c th b ch n khi thi hnh t p l nh ny. Phng th c c kh nng t o ra ngo i l c th c khai bo trong kh i try. M t hay nhi u kh i catch c th theo sau m t kh i try. Cc kh i catch ny b t cc ngo i l c kh nng t o ra trong trong kh i try. Hy xem kh i try d i y:

try{ doFileProcessing(); // phng th c do ng i s d ng displayResults(); } catch (Exeption e) { // th hi n c a ngo i l System.err.println(Error : + e.toString()); e.printStackTrace(); }
y, e l i t ng c a l p Exception. Chng ta c th s d ng i t ng ny in cc chi ti t v ngo i l . Cc phng th c toString v printStackTrace c s d ng m t cc ngo i l x y ra. Hnh sau ch ra k t xu t c a phng th c printStackTrace().

nh ngha

Hnh 9.1 Kh i Try v Catch x l c ngo i l no, ta ph i ch ra ki u ngo i l tng ng.


Khoa Cng ngh Thng tin ih c L t
Trang 217

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

catch(Exception e) Khi ngo i l khng bi t thu c ki u no, chng ta c th s d ng l p Exception ngo i l . b t

Kh i catch() b t gi b t c cc l i x y ra trong khi thi hnh phng th c doFileProcessing hay display. N u m t l i x y ra trong khi thi hnh phng th c doFileProcessing(), lc phng th c displayResults() s khng bao gi c g i. Chng trnh s chuy n n th c hi n kh i catch. c nhi u l p x l l i hn, nh l LookupException thay v m t i t ng ngo i l chung (Exception e), l i th c t c th l m t i t ng thu c l p 'LookupException hay m t trong s nh ng l p con c a n. L i s c truy n qua kh i try catch cho t i khi g p catch c a n, n u khng tm th y chng trnh ph i d ng th c hi n v thot.

9.5. Cc kh i ch a nhi u Catch


Nhi u kh i catch x l cc lo i ngo i l khc nhau m t cch c li t k trong o n m sau: c l p. Chng

try{ doFileProcessing(); displayResults(); } catch(LookupException e){ // e LookupException object // phng th c x l l i do ng i s d ng // nh ngha } catch(Exception e){ System.err.println(Error: + e.printStackTrace()); }
Trong tr ng h p ny, kh i catch u tin s b t gi m t LockupException. Kh i catch th hai s x l ki u ngo i l khc v i kh i catch th nh t. M t chng trnh cng c th ch a cc kh i try l ng nhau. V d o n m d i y:

handleLookupException(e);

try { statement 1;

Khoa Cng ngh Thng tin

ih c L t

Trang 218

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

statement 2; try{ statement1; statement2; } catch(Exception e){ // c a kh i try trong

} }
catch(Exception e){ // c a kh i try ngoi } Khi s d ng cc try l ng nhau, kh i try bn trong c thi hnh u tin. B t k ngo i l no b ch n trong kh i try s b b t gi trong cc kh i catch theo sau. N u kh i catch thch h p khng c tm th y th cc kh i catch c a cc kh i try bn ngoi s c xem xt. N u khng, Java Runtime Environment x l cc ngo i l . Chng trnh 9.1 minh h a cch s d ng cc kh i try v catch. Chng trnh 9.1

class TryClass{ public static void main(String args[]){ int demo=0; try{ System.out.println(20/demo); } catch(ArithmeticException a){ System.out.println(Cannot Divide by zero); }

Khoa Cng ngh Thng tin

ih c L t

Trang 219

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

} }
K t xu t c a chng trnh:

Hnh 9.2 ArithmeticException Trong chng trnh ny, m t s c chia cho 0. y khng l php ton s h c h p l . Do m t ngo i l x y ra v c b t gi trong kh i catch. Khi nh n bi t c lo i ngo i l no c th x y ra, ta vi t l nh trong kh i catch tng ng. y, a c s d ng nh m t i t ng c a ArithmeticException in cc chi ti t v ngo i l . N u b n thay th l nh System.out.println c a kh i catch b ng l nh System.out.println(a.getMessage()) K t xu t c a chng trnh nh sau:

Hnh 9.3 Cu thng bo l i Khi cc kh i try c s d ng m khng c cc kh i catch no, chng trnh s bin d ch m khng g p l i no no nhng s b ng t khi th c thi. B i v ngo i l x y ra khi th c thi chng trnh m khng c x l.

9.6. Kh i finally
Khi m t ngo i l xu t hi n, phng th c ang c th c thi c th b d ng m khng c hon thnh. N u i u ny x y ra, th cc o n m pha sau (v d nh o n m c ch c nng thu h i ti nguyn, nh cc l nh ng t p vi t cu i phng th c) s khng bao gi c g i. Java cung c p kh i finally gi i quy t vi c ny. Kh i finally th c hi n t t c cc vi c thu d n khi m t ngo i l x y ra. Kh i ny c th c s d ng k t h p v i kh i try. Kh i finally ch a cc cu l nh thu h i ti nguyn v cho h th ng hay l nh in ra cc cu thng bo. Cc l nh ny bao g m:

Khoa Cng ngh Thng tin

ih c L t

Trang 220

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

ng t p tin. ng ResultSet ( c s d ng trong chng trnh c s d li u). ng l i cc k t n i c t o trong c s d li u.

try{ doSomethingThatMightThrowAnException(); } finally{ cleanup(); }


Phng th c cleanup() c g i n u phng th c doSomethingThatMightThrowAnException() gy ra ngo i l . M t khc cleanup() cng c g i ngay khi khng c ngo i l no x y ra v th c hi n ti p ph n sau kh i l nh finally. Kh i finally l tu , khng b t bu c. Kh i ny c t sau kh i catch cu i cng. Chng trnh s th c thi cu l nh u tin c a kh i finally ngay sau khi g p cu l nh return hay l nh break trong kh i try. Kh i finally b o m lc no cng c th c thi, b t ch p c ngo i l x y ra hay khng. Hnh 9.4 minh h a s th c hi n c a cc kh i try, catch v finally.
try block No Exception Exception occurs

finally block

catch block

finally block

Hnh 9.4 Kh i l nh try, catch v finally Chng trnh 9.2 s d ng kh i finally. y, kh i finally c thi hnh b t ch p ArithmeticException c x y ra hay khng. Kh i ny khai bo cc ho t ng thu d n. Chng trnh 9.2

class FinallyDemo{ String name; int no1,no2; FinallyDemo(String args[]){

Khoa Cng ngh Thng tin

ih c L t

Trang 221

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

try{ name=new String(Aptech Limited); no1=Integer.parseInt(args[0]); no2=Integer.parseInt(args[1]); System.out.println(name); System.out.println(Division Result is + no1/no2); } catch(ArithmeticException i){ System.out.println(Cannot Divide by zero); } finally{ name=null; // clean up code System.out.println(Finally executed); } } public static void main(String args[]){ new FinallyDemo(args); } }
K t xu t c a chng trnh:

Hnh 9.5 Kh i Finally Trong v d ny, cc cu l nh trong kh i finally lun lun thi hnh, b t ch p ngo i l
Khoa Cng ngh Thng tin ih c L t

Trang 222

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

c x y ra hay khng. Trong k t xu t trn, kh i finally c thi hnh m c d khng c ngo i l x y ra.

9.7. Cc ngo i l

nh ngha v i l nh throw v throws

Cc ngo i l c th c t o ra b ng cch s d ng t kho throw. T kha throw ch ra m t ngo i l v a x y ra. Ton h ng c a throw l m t i t ng thu c l p c th a k t Throwable. o n l nh sau ch ra cch s d ng c a l nh throw:

try { if (flag<0){ throw new MyException(); // user-defined } }


M t phng th c c th t o ra nhi u ngo i l . lm c i u ny ny, ta ch c n li t k danh sch cc ngo i l m phng th c c th t o ra trong ph n nh ngha phng th c. Gi s r ng phng th c x() g i phng th c y(). Phng th c y() t o ra m t ngo i l nhng khng c x l. Trong tr ng h p ny, phng th c g i x() nn khai bo r ng n c kh nng t o ra ngo i l nh ngo i l c a phng th c c g i y(). Ta nn khai bo kh i try catch trong phng th c x() mb o r ng ngo i l khng c truy n cho cc phng th c m g i phng th c ny (phng th c g i x()). o n m sau minh h a cch s d ng c a t kho throws t o nhi u ngo i l :

public class Example{ // Cc ngo i l cch nhau b i d u ph y public void exceptionExample() throws ExException, LookupException{ try{ // cc l nh } catch(ExException exmp){ } catch(LookupException lkpex){ } }
Khoa Cng ngh Thng tin ih c L t

Trang 223

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

}
Trong v d trn, phng th c exceptionExample c t kho throws. T kho ny c theo sau b i danh sch cc ngo i l m phng th c ny c th t o ra Trong tr ng h p ny l ExException v LookupException. Hm x l ngo i l cho cc phng th c ny nn khai bo cc kh i catch c th x l t t c cc ngo i l m cc phng c th gy ra. L p Exception th c thi giao di n Throwable v cung c p cc tnh nng lm vi c v i ngo i l . N c ngha trong tr ng h p cc l p ngo i l c nh ngha b i ng i dng. lm i u ny, m t l p con c a l p Exception c t o ra. u i m c a vi c th a k l p Exception l lo i ngo i l m i ny c th c 'catch' c l p v i cc lo i Throwable khc. Chng trnh 9.3 minh h a ngo i l c nh ngha b i ng i dng ArraySizeException: Chng trnh 9.3

class ArraySizeException extends NegativeArraySizeException{ ArraySizeException(){ // constructor super(You have passed an illegal array size); } } class ThrowDemo{ int size, array[]; ThrowDemo(int s){ size=s; try{ checkSize(); } catch(ArraySizeException e){ System.out.println(e); } } void checkSize() throws ArraySizeException{

Khoa Cng ngh Thng tin

ih c L t

Trang 224

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

if (size < 0) throw new ArraySizeException(); else System.out.println(The array size is ok.); array = new int[3]; for (int i=0; i<3; i++) array[i] = i+1; } public static void main(String arg[]){ new ThrowDemo(Integer.parseInt(arg[0])); } }
L p c nh ngha b i ng i dng ArraySizeException l NegativeArraySizeException. Khi m t i t ng c t o t l p ngo i l c in ra. Phng th c checkSize() c g i ArraySizeException m c ch ra b i l nh throws. Kch th ki m tra trong c u trc if. N u kch th c l s m th ArraySizeException c t o. K t xu t c a chng trnh c ch ra hnh 9.6. l p con c a l p ny, thng bo v t o ra ngo i l c c a m ng c i t ng c a l p

Hnh 9.6 Ngo i l t

nh ngha

9.8. Danh sch cc ngo i l


B ng sau y li t k m t s ngo i l :

Khoa Cng ngh Thng tin

ih c L t

Trang 225

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Ngo i l RuntimeException ArthmeticException IllegalAccessException IllegalArgumentException ArrayIndexOutOfBoundsExeption NullPointerException SecurityException ClassNotFoundException NumberFormatException AWTException IOException FileNotFoundException EOFException NoSuchMethodException InterruptedException

L L L L

p cha c a th t phn c p ngo i l p c s cho nhi u ngo i l java.lang i v s h c, v d nh chia cho 0. p khng th truy c p. i s khng h p l . L i trn m ng. Khi truy c p i t ng null. C ch b o m t khng cho php th c hi n. Khng th n p l p yu c u. Vi c chuy n i t chu i sang s th c khng thnh cng. Ngo i l v AWT L p cha c a cc l p ngo i l I/O Khng th nh v t p tin K t thc m t t p tin. Phng th c yu c u khng t n t i. Khi m t lu ng b ng t.

B ng 9.1 Danh sch m t s ngo i l

Khoa Cng ngh Thng tin

ih c L t

Trang 226

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Tm t t
B t c khi no m t l i xu t hi n trong khi thi hnh chng trnh, ngha l m t ngo i l xu t hi n. Ngo i l pht sinh vo lc th c thi chng trnh theo trnh t m. M i ngo i l pht sinh ra ph i c x l, n u khng ng d ng s b ng t. Vi c x l ngo i l cho php b n k t h p t t c ti n trnh x l l i trong m t ni. Lc o n m c a b n s r rng hn. Java s d ng cc kh i try v catch x l cc ngo i l . Cc cu l nh trong kh i try gy ra ngo i l cn kh i catch x l ngo i l . Nhi u kh i catch c th c s d ng x l cc lo i ngo i l khc nhau. T kho throws li t k cc ngo i l m phng gy ra. T kho throw t o ra m t ngo i l . Kh i finally khai bo cc cu l nh tr v ngu n ti nguyn cho h th ng v in nh ng thng bo.

Ki m tra s ti n b
1. 2. 3. 4. 5. 6. Khi m t ngo i l x y ra, mt ......................... i di n cho ngo i l c t o ra. L p .......................l l p cha c a l p Exception M hnh x l l i c a Java c g i l m hnh 'catch and throw'? ng/Sai u i m c a m hnh 'catch and throw' l g? Khi s d ng 'try' l ng nhau, 'try' ngoi s c th c hi n tr c? ng/Sai Kh i 'finally' m b o lun lun c th c hi n cho d c ngo i l x y ra hay khng? ng/Sai 7. M i phng th c khng c kh nng gy ra nhi u hn m t ngo i l . ng/Sai 8. Ngo i l .................................... c t o ra khi l p khng th truy c p c.

Khoa Cng ngh Thng tin

ih c L t

Trang 227

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Bi t p
1. Vi t chng trnh gy ra ngo i l khi ng i s d ng khng nh p tham s no vo t dng l nh. Chng trnh ph i hi n th s tham s n u c tham s c nh p vo t dng l nh. u ra c a chng trnh nh sau:

2. Vi t chng trnh gy ra ngo i l , n u khng c s no c nh p vo t dng l nh. Ng c l i, chng trnh hi n th gi tr l p phng c a s nh p vo nh hnh d i y:

3. Vi t chng trnh gy ra ngo i l n u nh l p khng th truy nh p.

Khoa Cng ngh Thng tin

ih c L t

Trang 228

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Chng 10

CI
N i dung chnh

TB OM T

M t v cng c JAR T o v xem m t file JAR, li t k v trch rt n i dung c a n. S d ng ch k i n t nh n d ng Applets T o b cng c kha b o m t Lm vi c v i ch ng ch s Tm hi u v gi Java.security

10.1. Gi i thi u
Trong ph n ny, chng ta s tm hi u chi ti t v b o m t Java applet. Chng ta cng th o lu n v m hnh b o m t JDK 1.2 p ng nhu c u ng i dng v ng i pht tri n ph m m m. Java l m t ngn ng l p trnh u tin g i cc chng trnh tng tc nh vn b n, nh v cc thng tin tnh thng qua World Wide Web. Cc chng trnh ny, khng gi ng nh chng trnh CGI, n c ch y trn h th ng c a ng i dng, thay v ch y trn my ch Web (Web server). B o m t Java Applet l s quan tm chnh gi a ng i dng v nh pht tri n applet. Thi u tnh b o m t trong applet c th d n t i vi c s a i ho c c cc d li u nh y c m trn my ng i s dung applet. M hnh b o m t c a Java 2, ho c JDK 1.2 r t h u ch cho ng i dng, cng nh cho nh pht tri n. N gip ng i dng duy tr m c b o m t cao. Trong chng nay, chng ta s h c m hnh b o m t JDK 1.2.

10.2. Cng c JAR


M t file JAR l m t file lu tr c nn do cng c (jar.exe) c a Java t o ra. N tng t nh chng trnh PKZIP. N ch a nhi u file trong m t file lu tr (.jar). i u ny cho php t i v trnh duy t hi u qu . Dng m t jar v i applet c i thi n ng k hi u nng th c hi n c a trnh duy t. V t t c cc file c bin d ch v trong m t file duy nh t, trnh duy t ch c n thi t l p k t n i HTTP v i web server. Nn file gi m 50% th i gian t i file. kh i ng cng c JAR, dng cu l nh sau t i d u nh c l nh:

jar [options][manifest] jar-file input-file(s)


Tu ch n (options) C t x v f M t T o ra m t file jar m i Li t k n i dung c a file jar Trch d n file c tn t file jar T o u ra chi ti t (verbose output) trn dng l i chu n Xc nh tn file jar

Khoa Cng ngh Thng tin

ih c L t

Trang 229

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

m o M

Bao hm thng tin ch ng th c t cc file ch ng th c xc nh. Ch lu tr , khng nn Khng t o cc file ch ng th c cho cc m c (entries). B ng 10.1 Cng c jar

M t file ch ng th c ch a thng tin v cc file lu tr . File ny l m t tu ch n. Th m ch file khng xc nh th JAR cng t ng t o ra. File jar c dng nh cc lu tr . File ny ph i c ph n m r ng l .jar c xc nh t i dng l nh. File u vo l danh sch file phn cch b i d u ph y. Netscape Navigator v Internet Explorer h tr file JAR. Cu l nh sau lu tr t t c cc file class v file java bao g m trong m t th m c hi n hnh vo m t file jar g i l pack jar cf pack.jar *.class *.java
L nh jar T o m t lu tr

Xc nh lu tr
Cc file c lu tr Tn file

Hnh 10.1 l nh jar Dng l nh sau t i d u nh c li t k cc file trong file pack.jar jar tf pack.jar
Tu ch n ny c s d ng cho b ng n i dung lu tr

Tu ch n xc

nh tn file lu tr

Hnh 10.2 Li t k cc file trong file pack.jar g p file lu tr pack.jar vo trong m t applet, m trang HTML, v thm thu c tnh ARCHIVE=pack.jar vo th applet, nh sau:

<applet code=exr7.class ARRCHIVE=pack.jar height=125 width=350></applet>


Thu c tnh s ch cho trnh duy t n p lu tr pack.jar l nh sau trch rt cc file c nn trong file pack.jar: jar xvf pack.jar M c ch n x cho php b n trch rt n i dung c a file. tm file exr7.class. Cu

10.3 Ch k i n t

nh danh cc applet

Khoa Cng ngh Thng tin

ih c L t

Trang 230

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Trong java, b o m t applet trn web l ph n r t quan tr ng. Hacker c th vi t cc applet nguy hi m xuyn th ng hng ro b o m t. V th , applet h n ch s can thi p c a cc ngn ng . Applet khng h tr m t s thao tc sau: c v ghi file t h th ng ni applet ang ch y. L y thng tin t file c a h th ng Xo file c a h th ng. Java 2 c th th c hi n t t c cc thao tc trn, v i cc applet cung c p t m t nh cung c p applet tin c y, v c k ch k i n t . Hnh sau minh h a qu trnh m ho kho:

Hnh 10.3. M ho d a trn cc kho Trong hnh trn, kho cng khai (public keys) c dng m ho v gi i m. Cng t ng c s d ng cho ch k di n t c ng thm cc tnh nng b sung. M t ch k i n t l m t file m ho i cng v i chng trnh gip nh n d ng chnh xc ngu n g c c a file. Kha b m t tnh gi tr t file applet. Ng i gi kho b m t ki m tra n i dung c a i t ng. Trong ch k i n t , m t kha ring (private key) c s d ng m ha, v kho cng khai, c dng gi i m. Trong khi k trn m t i t ng, pha k dng thu t ton Message Digest (nh MD5) tnh gi trin digest c a i t ng. Gi tr digest c dng nh l 'd u vn tay' c a i t ng. Digest sau c m ho dng kha ring, t o ra ch k i n t c a i t ng. Kho cng khai c s d ng gi i m v ki m tra chng. K t qu c a s gi i m, gi tr digest c a ra. Gi tr digest c a i t ng c tnh v so snh v i gi tr digest c gi i m. N u gi tr digest c a i t ng v gi tr digest c m ho kh p v i nhau, ch k c c xc nh n. Ti li u m t ch k c g i l Ch ng th c. Thi t l p s tin c y, nh n d ng applet c ch ng nh n. Ch ng nh n cc th c th khc s d ng kha cng khai gi m o. Nh ch ng th c c dng th c hi n ch ng nhn. Nh n c c ch ng th c t m t CA (Certificate Authority), applet ph i trnh ti li u ch ng th c s nh n d ng c a n. Ngy nay, cc cng ty a ra cc d ch v xc nh n ch ng th c sau: VeriSign

Khoa Cng ngh Thng tin

ih c L t

Trang 231

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Thawte Certification C th thi t l p cc m c b o m t khc nhau. M t applet c th a ra s u thc hon ton, ho c khng u thc, v i s gip c a t p cc l p g i l permissions. Nhng nhn chung, cc applet b gi i h n m t cc t i a, tr khi nh pht tri n k trn applet. i u ny xc nh nh pht tri n l tin c y.

10.4. Kho b o m t Java


Chng ta c n t o 3 cng c , tn l, jar, jarsigner, v keytool, tr c khi dng cc applet c k. Chng ta c n t o c p kha cng public/private, v lm cho n tr nn s n sng v i cng c jarsigner. By gi , chng ta s s d ng cc cng c t o keystore. Keystore Keystore l m t c s d li u kho, ch a cc ch ng th c s dng cc gi tr kho cng khai (public). Keytool Keytool l cng c kho b o m t c a java, t o v qu n l kha cng khai, kho ring, v cc ch ng th c b o m t. N cng c th th c hi n: nh n d ng

o o o o

Qu n l c p kho cng public/private. Lu tr cc kho cng khai. Dng cc ch ng th c xc th c ch ng th c khc. Xc th c d li u ngu n.

T t c thng tin m keytool qu n l c lu tr trong c s d li u g i l keystore. Sun c m t keystore m c nh dng nh d ng file m i g i l JKS (Java Key Store). ki m tra xem h th ng b n c m t keystore d i nh d ng ny hay cha hy th c hi n cu l nh sau t i d u nh c l nh:

keytool list
Thng bo l i sau xu t hi n n u khng c g trong keystore.

keytool error: keystore file does not exist: c:\windows\.keystore


JDK tm keystore chnh trong th m c C:\windows\. y l m t v tr chung cho cc file h th ng quan tr ng trn windows 95, 98 v NT systems. Tu ch n keystore cng c th c s d ng trong l nh keytool, nh sau:

keytool list keystore c:\java\try


Cu l nh ny ch cho JDK tm keystore trong file c g i l try trong th m c C:\java\try. N u khng tm th y, s hi n th thng bo l i nh trn.

Khoa Cng ngh Thng tin

ih c L t

Trang 232

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

L a ch n -genkey c th c s d ng cng v i cu l nh keytool t o c p kho cng public/private. B n cng c th dng m t s cc tu ch n khc. D ng n gi n nh t nh sau:

keytool genkey alias I


B danh c th c dng lu tr , thay th ho c xo c p kho. Cc b danh keytool khng phn bi t ch hoa, th ng. Trong l nh trn, chng ta khng s d ng tu ch n keystore. N u cng cu l nh s d ng tu ch n keystore, s c vi t l i nh sau:

keytool genkey alias I keystore store


Trong l nh trn, c p kho s c lu tr trong keystore tn l store, v khng lu trong keystore m t nh c a h th ng. Sau khi nh p l nh trn vo, v nh n phm enter, keytool nh c nh p vo m t kh u cho keystore, nh sau:

Enter keystore password:


Nh p vo password l m t kh u nh yu c u. Ti p theo, keytool nh c nh p vo cc thng tin b sung nh:

What is your first and last name? (Tn v h ) [unknown] what is the name of your organization unit? [unknown]: software Development. What is the name of your organization? (Tn c a t ch c) [Unknown]: ABC Consultants (t v n ABC) What is the name of your city or Locality? (tn thnh ph ho c c a b n) [Unknown]: California What is the name of your State or Province? (tn bang ho c t nh c a b n) [Unknown]:United States of America What is the two-letter country code for this unit?(M qu c gia v i 2 k t ) [Unknown]: US
Khi nh p vo cc thng tin, keytool hi n th thng tin sau:

a phng

Khoa Cng ngh Thng tin

ih c L t

Trang 233

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Is <CN=Bob Fernandes, OU=Software Development, O=ABC Consultants, L=California, ST=United States of America, C=US>correct? [no]:
Cu i cng, keystool nh c b n nh p vo m t kh u cho kho ring c a b n, nh:

Enter key password for <I> (RETURN if same as keystore password):


Thng tin trn c s d ng k t h p s phn bi t tn v i b danh, cng c th c a vo tr c ti p t m c ch n -dname. M t kh u sau cng phn bi t v i m t kh u keystore. N c dng truy c p kho ring c a c p kho. M t kh u c th tr c ti p ch r b ng cch s d ng tu ch n -keypass. N u m t kh u khng ch r, m t kh u keystore c s c dng. Tu ch n -keypasswd dng thay i m t kh u. Tu ch n -keyalg ch r thu t ton t o c p kho. Khi t o m t kho v b sung n vo trong keystore, c th dng tu ch n -list c a keytool xem kho c trong keystore hay khng. xo c p kho t c s li u, dng l nh sau:

keytool delete alias aliasName


aliasName ch tn c a kho c xo. By gi , chng ta t o c p kho ring/cng c ng cho file JAR, chng ta hy k danh n. L nh jarsigner dng k danh m t file JAR. Nh p l nh sau vo d u nh c DOS:

jarsigner keystore keyStore storepass storePassword keypass keyPassword


B ng sau cung c p danh sch c a JARFileNames v b danh: Tu ch n keyStore storePassword keyPassword JARFileName Alias M t Tn keystore s d ng M t kh u keystore M t kh u kho ring Tn c a file JAR c k danh B danh c a b k danh

B ng 10.2 JARFileNames v b danh k danh file JAR pack.jar, v i keystore store, v m t kh u kho ring l password, dng l nh sau: lu tr v cc

jarsigner keystore store storepass password keypass password pack.jar pk


pk ngha l tn b danh. N u tu ch n -keystore khng ch r, th keystore m c nh c dng. ch r ch k c a file JAR c nh danh, dng tu ch n -verify :

Khoa Cng ngh Thng tin

ih c L t

Trang 234

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

jarsigner verify pack.jar


pack.jar ch tn file JAR. N u ch k khng h p l , th ngo i l sau c t o ra.

Jarsigner:java.util.zip.ZipException:invalid entry size (expected 900 but got 876 bytes)


Ng c l i, xu t hi n thng bo jar verified: jar c xc minh. Qu trnh xc th c ki m tra theo cc b c sau: C file .DSA ch a ch k h p l cho file ch k .SF khng. C cc m c trong file ch k l cc digest cho m i m c tng ng trong file k khai (manifest file)

10.5. Ch ng ch s
Cho n by gi , chng ta h c cch t o v k m t file JAR. By gi , chng ta s h c cch xu t cc ch k i n t , n c s d ng xc th c ch k c a cc file JAR. Chng ta cng s h c cch nh p ch k i n t t file khc vo. Ch k i n t l m t file, m t i t ng, ho c m t thng bo c k b i quy n ch ng th c. CA (Certificate authority) c p ch ng nh n gi tr cc kho cng khai. Ch ng nh n X.509 c a t ch c tiu chu n qu c t (ISO) l m t d ng ch ng nh n s ph bi n. Keytool h tr nh ng ch ng nh n ny. Keytool b c u tin c n nh n c m t ch ng nh n. Chng ta dng ch ng nh n t o c p kho private/public. Keytool nh p vo cc ch ng nh n c t o v c k. Keytool t ng g n kho cng khi m i v i m t ch ng nh n m i. Cng th c th t o kho cng khai k ch ng nh n ny. c g i l self-signed certificates (Ch ng nh n t k). Cc ch ng nh n ny khng ph i l ch ng nh n ng tin c y cho nh danh. Tuy nhin, chng c n t o cc yu c u k danh ch ng nh n. Keytool v tu ch n c s d ng t o cc ch ng nh n trn. Cu l nh sau gip t o cc ch ng nh n trn:

keytool keystore store alias mykey certreq file mykey.txt


C p kho c t o l mykey. Tu ch n -file ch tn file Dng tu ch n -export xu t cc ch ng nh n ny nh sau: lu cerrtificate-signing.

keytool export keystore store alias pk file mykey


Cu l nh trn hi n th d u nh c sau:

Enter keystore password


Ch ng nh n lu tr trong <mykey>. nh p cu l nh sau: nh p cc ch ng nh n khc vo keystore,

Khoa Cng ngh Thng tin

ih c L t

Trang 235

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

keytool -import keytool keystore alias alias file filename


Tn c ch nh l tn file ch a ch ng nh n c nh p vo. Cu l nh sau ch tn b danh l alice nh p ch ng nh n trong file mykey vo keystore MyStore:

keytool import keystore MyStore alias alice file mykey


Cu l nh trn hi n th d u nh c sau:

Enter keystore password: (Nh p vo m t kh u keystore)


K t qu xu t ra hi n th hai tu ch n Owner v Issuer. N hi n th tn cng ty, ngh nghi p, t ch c, a i m, bang v ti n t . N cng hi n th s serial v th i gian c gi tr . Cu i cng, n h i l tin c y ch ng nh n ny khng. Ch ng nh n c ch p thu n d a vo s tin t ng c nhn b n. Dng l nh -list li t k n i dung c a keystore nh sau:

keystool list keystore Store


Cu l nh trn yu y u password keystore. Dng tu ch n -alias li t k m t m c. Dng l nh -delete xo b danh trong keystore, nh sau:

keytool delete keystore Store alias alias


Dng l nh -printcert in ch ng nh n c lu tr trong file, theo cch sau:

keytool printcert file myfile


Dng l nh -help nh n v danh sch t t c cc tu ch n m keytool h tr :

keytool -help

10.6. Cc gi b o m t Java
Cc gi b o m t Java bao g m: java.security y l gi API b o m t chnh. Ch a cc l p v giao di n h tr m ho, digest v ch k i n t . java.security.acl Ch a cc giao di n dng ci java.security.cert Cung c p s h tr cho ch ng nh n X.509 t cc chnh sch i u khi n truy c p

Khoa Cng ngh Thng tin

ih c L t

Trang 236

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

java.security.interfaces nh ngha cc giao di n truy nh p Digital Signature Algorithm java.security.spec Cung c p cc l p c l p v ph thu c vo thu t ton m ho s d ng kho.

Khoa Cng ngh Thng tin

ih c L t

Trang 237

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Tm t t
N u kh nng b o m t trong applet khng m b o, cc d li u nh y c m c th c s a i ho c phi by. M c ch chnh c a JAR l k t n i cc file m applet s d ng trong m t file nn duy nh t. i u ny cho php cc applet n p vo trnh duy t m t cch hi u qu . M t file k khai (manifest file) ch a thng tin v cc file lu tr . Ch k i n t l m t m ho km v i chng trnh nh n di n chnh xc ngu n g c c a file. Keystore l m t c s d li u kho. Keytool l cng c kho b o m t c a java. ch ng nh n i n t l m t file, ho c m t i t ng, ho c m t thng bo c k b i quy n ch ng nh n (certificate authority)

Ki m tra ki n th c
1. 2. 3. 4. 5. 6. 7. 8. File ________l file lu tr c nn. Tu ch n _____, khi dng v i cng c jar, trch rt tn file t m t lu tr (.jar) JAR t ng t o file k khai, th m ch n khng c ch ra ng/Sai Thu c tnh______,khi dng trong th applet, ch cho trnh duy t n p file jar, v tm file class c a applet. Trong ch k i n t , _______ c dng cho m ho v _________ c dng cho gi i m. T t c cc thng tin keytool qu n l, c lu tr trong m t c s d li u g i l _______ keytool b c u tin c n thi t nh n c m t ch ng nh n ng/Sai Gi _______ch a giao di n dng ci t cc chnh sch i u khi n truy nh p.

Khoa Cng ngh Thng tin

ih c L t

Trang 238

Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2

Bi t p
S d ng cc cu l nh java th c hi n cc hnh ng sau:

1. T o m t file jar core-java.jar ch a cc file l p (.class) v cc file ngu n. 2. Li t k n i dung c a file jar. 3. T o file html nhng applet CardLayoutDemo.class, file l p c ch a trong file jar. 4. Trch rt n i dung file jar. 5. Dng l nh keytool v i tn b danh v keystore t o ra c p kho public/private m i. 6. K danh file jar m i c t o. 7. Xc minh ch k (signature). 8. Xu t cc ch ng nh n (certificate) 9. Li t k n i dung c a keystore. 10. In cc ch ng nh n c lu trong file.

Khoa Cng ngh Thng tin

ih c L t

Trang 239

You might also like