Professional Documents
Culture Documents
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
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
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
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
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.
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
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
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
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:
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
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
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
ng
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.
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
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
ih c L t
Trang 15
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
xc
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
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 K ton
$2000
Hnh 1.3 Cc
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.
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.
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 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.
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.
ih c L t
Trang 21
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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
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 .
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.
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.
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.
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
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
ih c L t
Trang 27
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
cn
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
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
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
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
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
ng m.
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.
2.3.3.
ng d ng
h a
c l p cho php ng i dng tng tc qua
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
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.
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
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.
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.
ih c L t
Trang 34
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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
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
ih c L t
Trang 36
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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.
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
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
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
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 } }
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.
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); } }
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
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
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.
Truy n
i s trong dng l nh
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 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.
ih c L t
Trang 43
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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
ih c L t
Trang 44
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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
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
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:
ih c L t
Trang 46
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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
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
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:
ih c L t
Trang 48
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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
ih c L t
Trang 49
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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.
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*/{
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
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
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
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
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
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);
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
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
!=
<
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
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
C php :
bi u th c 1?bi u th c 2: bi u th c 3;
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 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
tr
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
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
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
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); }
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
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;
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;
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.
Chng trnh 3.9 class WhileDemo{ public static void main(String args[]){ int a = 5,fact = 1; while (a >= 1) {
ih c L t
Trang 67
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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 .
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)
Kh i t o hm c hai ki u :
T ng minh (Explicit) Ng m nh (Implicit)
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
ih c L t
Trang 69
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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
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!.
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 nh sau:
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 :
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
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
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 :
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:
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:
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 } } }
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.
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:
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.
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
ih c L t
Trang 80
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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( );
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
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
ih c L t
Trang 83
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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 :
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
charAt( )
Phng th c ny tr v m t k t t i m t v tr trong chu i. V d :
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 :
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 :
copyValueOf( )
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 :
toCharArray( )
Phng th c ny chuy n chu i thnh m t m ng k t . V d :
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.
Spaces
);
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);
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());
ih c L t
Trang 88
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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).
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 :
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 :
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
//ch a G
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
Trang 90
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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
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 :
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
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.
cos()
Phng th c ny tr v cosine c a m t gc tnh b ng radian.
tan()
ih c L t
Trang 92
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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().
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.
ih c L t
Trang 94
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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:
ih c L t
Trang 95
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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();
ih c L t
Trang 96
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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[]) {
ih c L t
Trang 97
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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.
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
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
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
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
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[]) {
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.
ih c L t
Trang 104
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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, ,);
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 .
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
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:
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.
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.
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
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
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
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. .
ih c L t
Trang 112
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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
5.2.2 Panel
Panel c s d ng
Khoa Cng ngh Thng tin
Trang 113
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
gi n nh t
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:
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.
Panel Window
ih c L t
Trang 115
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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);
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
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.
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:
ih c L t
Trang 118
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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){
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:
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.
ih c L t
Trang 121
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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:
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);
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:
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
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:
ih c L t
Trang 125
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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
ih c L t
Trang 126
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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.
ih c L t
Trang 127
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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.
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.
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:
import java.awt.*;
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
Trang 130
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
//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:
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.
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++){
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:
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
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);
ih c L t
Trang 135
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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;
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(); } }
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
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
S d ng c php sau
gbc.gridx=col; gbc.gridy=row;
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
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:
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:
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
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.18 Event Listener Hnh sau l danh sch cc listener c s d ng cho cc thnh ph n ch ra.
ih c L t
Trang 143
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
ActionListener
Dialog Frame
hnh 5.22:
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);
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");
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
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().
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 .
ih c L t
Trang 150
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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'};
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:
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
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
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
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);
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.
ih c L t
Trang 154
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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); }
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
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:
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:
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
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
i t ng c a l p Graphics
t o ra m t mu tu . cho d hn, l p Color
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();
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:
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 .
i t ng Graphics
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:
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 .
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);
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:
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);
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 (); }
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:
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){
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:
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 .
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
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:
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.
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
start()
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
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:
ih c L t
Trang 173
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 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:
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.
d i y:
Stop
Creation
Starting Initalization
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;
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:
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.
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.
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.
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.
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.
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
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
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).
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();
ih c L t
Trang 185
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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
ih c L t
Trang 186
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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.
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
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);
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); } }
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 .
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.
ih c L t
Trang 192
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
Chng 8
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.
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.
close()
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.
ih c L t
Trang 195
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
u vng
m.
m.
nh.
th c hi ns d ng m t
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);
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:
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 {
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:
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
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
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();
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:
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
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:
Trang 205
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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:
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
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( )
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.
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);
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:
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 .
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.
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.
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.
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
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. }
ih c L t
Trang 216
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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.
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;
ih c L t
Trang 218
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
} }
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); }
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:
ih c L t
Trang 220
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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
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
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:
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{
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
nh ngha
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.
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.
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:
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.
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:
10.3 Ch k i n t
nh danh cc applet
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
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.
o o o o
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.
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:
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
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:
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
ih c L t
Trang 234
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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:
ih c L t
Trang 235
Bi Gi ng Tm T t: Cng C v Mi Tr ng L p Trnh 2
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
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.
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.
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.
ih c L t
Trang 239