P. 1
CC&MTLT2 Bai Giang Tom Tat

CC&MTLT2 Bai Giang Tom Tat

|Views: 417|Likes:
Published by Nhân Đinh Ngọc

More info:

Published by: Nhân Đinh Ngọc on Nov 13, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

01/14/2013

pdf

text

original

Sections

  • Chương 1
  • L P TRÌNH HƯ NG I TƯ NG
  • 1.1. Gi i thi u v L p trình hư ng i tư ng
  • 1.2. Tr u tư ng hóa d li u
  • 1.3. L p
  • 1.4. i tư ng
  • 1.4.1. Thu c tính
  • 1.4.2. Ho t ng
  • 1.4.3. Phương th c
  • 1.4.4. Thông i p
  • 1.4.5. S ki n
  • 1.5. L p và i tư ng
  • 1.6. Thi t l p và H y
  • 1.6.1. Thi t l p
  • 1.6.2. H y
  • 1.7. Tính B n v ng
  • 1.8 Tính óng gói d li u
  • 1.9. Tính th a k
  • 1.10. Tính a hình
  • 1.11. Nh ng ưu i m c a Phương pháp hư ng i tư ng
  • Tóm t t bài h c
  • Ki m tra s ti n b
  • Bài t p
  • Chương 2
  • NH P MÔN JAVA
  • 2.1. Gi i thi u Java
  • 2.2. Các c trưng c a Java
  • 2.2.1. ơn gi n
  • 2.2.2. Hư ng i tư ng
  • 2.2.3. c l p ph n c ng và h i u hành
  • 2.2.4. M nh m
  • 2.2.5. B o m t
  • 2.2.6. Phân tán
  • 2.2.7. a lu ng
  • 2.2.8. ng
  • 2.3. Các ki u chương trình Java
  • 2.3.1. Applets
  • 2.3.3. ng d ng h a
  • 2.3.4. Servlet
  • 2.3.5. ng d ng cơ s d li u
  • 2.4.1. Máy o Java là gì ?
  • 2.4.2. Qu n lý b nh và d n rác
  • 2.4.3. Quá trình ki m tra file .class
  • Trình biên d ch, 'javac'
  • Trình thông d ch, 'java'
  • Trình d ch ngư c, 'javap'
  • Công c sinh tài li u, 'javadoc'
  • Chương trình tìm l i - Debug, 'jdb‘
  • Chương trình xem Applet , 'appletviewer‘
  • 2.6. Java Core API
  • java.lang
  • java.applet
  • java.awt
  • java.io
  • java.util
  • java.net
  • java.awt.event
  • java.rmi
  • java.security
  • java.sql
  • 2.7. Các c trưng m i c a Java 2
  • Swing
  • Kéo và th
  • Java 2D API
  • Java sound
  • Tóm t t
  • Chương 3
  • N N T NG C A NGÔN NG JAVA
  • 3.1 C u trúc m t chương trình Java
  • 3.2 Chương trình JAVA u tiên
  • 3.3 Cơ b n v ngôn ng Java
  • 3.4 Các l p i tư ng trong Java
  • 3.5 Ki u d li u
  • 3.6 Các bi n
  • 3.7 Phương th c trong m t l p
  • 3.8 Các toán t
  • 3.9 nh d ng d li u xu t dùng chu i thoát
  • 3.10 i u khi n lu ng
  • Chương 4:
  • CÁC GÓI & GIAO DI N
  • 4.1 Gi i thi u
  • 4.2 Các giao di n
  • 4.3 Các gói
  • 4.3.1 T o m t gói
  • 4.3.2 Thi t l p ư ng d n cho l p
  • 4.4 Gói và i u khi n truy xu t
  • 4.5 Gói java.lang
  • 4.5.1 L p String
  • 4.5.2 Chu i m c nh
  • 4.5.3 Các phương th c c a l p String
  • 4.5.4 L p StringBuffer
  • 4.5.5 Các phương th c l p StringBuffer
  • 4.5.6 L p java.lang.Math
  • 4.5.7 L p Runtime
  • 4.5.8 L p System
  • 4.5.9 L p Class
  • 4.5.10 L p Object
  • 4.6 Gói java.util
  • 4.6.1 L p Hashtable
  • 4.6.2 L p Random
  • 4.6.3 L p Vector
  • 4.6.4 L p StringTokenizer
  • Chương 5
  • 5.1 Gi i thi u v AWT
  • 5.2 Container
  • 5.2.1 Frame
  • 5.2.2 Panel
  • 5.2.3 Dialog
  • 5.3 Thành ph n (Component)
  • 5.3.1 Nhãn (Label)
  • 5.3.2 Ô văn b n (TextField)
  • 5.3.3 Vùng văn b n (TextArea)
  • 5.3.4 Button (nút n)
  • 5.3.5 Checkbox và RadioButton
  • 5.3.6 Danh sách ch n l a (Choice List)
  • 5.4 Qu n lý cách trình bày (Layout manager)
  • 5.4.2 BorderLayout Manager
  • 5.4.3 CardLayout Manager
  • 5.4.4. GridLayout Manager
  • 5.4.5 GridBagLayout Manager
  • 5.5 X lý các s ki n
  • 5.6 Th c ơn (menu)
  • 5.7 L p Graphics
  • 5.7.1 V các chu i, các ký t và các byte
  • 5.7.2 V ư ng th ng và hình Oval
  • 5.7.3 V hình ch nh t và hình ch nh t bo góc
  • 5.7.4 V hình ch nh t 3D và v cung
  • 5.7.5 V hình PolyLine
  • 5.7.6 V và tô a giác
  • 5.8 i u khi n màu
  • 5.9 i u khi n Font
  • 5.10 L p FontMetric
  • Chương 6
  • APPLETS
  • 6.1 Java Applet
  • 6.2 C u trúc c a m t Applet
  • 6.2.1 S khác nhau giũa Application và Applet
  • 6.2.2 Nh ng gi i h n b o m t trên applet
  • 6.3 Chu trình s ng c a m t Applet
  • Hình 6.4 Chu trình s ng c a m t applet
  • 6.4 Truy n tham s cho Applet
  • Chương 7
  • K T N I CƠ S D LI U
  • 7.1. Gi i thi u v JDBC
  • 7.2. Các bư c l p trình cơ s d li u v i JDBC
  • 7.2.1. K t n i cơ s d li u
  • 7.2.2. T o truy v n và l y k t qu truy v n
  • Chương 8
  • DÒNG NH P/XU T (I/O Stream)
  • 8.1. Gi i thi u
  • 8.2. Stream
  • 8.3. Gói java.io
  • 8.3.1. L p InputStream
  • 8.3.2. L p OutputStream
  • 8.3.3. Vào ra m ng byte
  • 8.3.4. T p tin nh p xu t
  • 8.3.5. Nh p xu t l c
  • 8.3.7. L p Reader và Writer
  • 8.3.8. Nh p/ xu t chu i và xâu ký t
  • 8.3.9. L p PrinterWriter
  • 8.3.10. Giao di n DataInput
  • 8.3.11. Giao di n DataOutput
  • Gói java.awt.print
  • Ki m tra m c ti n b
  • Chương 9
  • X LÝ NGO I L
  • 9.1. Gi i thi u
  • 9.2. M c ích c a vi c x lý ngo i l
  • 9.3. X lý ngo i l
  • 9.4. Mô hình x lý ngo i l
  • 9.4.1. Các ưu i m c a mô hình ‘catch và throw’
  • 9.4.2. Các kh i ‘try’ và ‘catch’
  • 9.5. Các kh i ch a nhi u Catch
  • 9.6. Kh i ‘finally’
  • 9.7. Các ngo i l ư c nh nghĩa v i l nh ‘throw’ và ‘throws’
  • 9.8. Danh sách các ngo i l
  • Chương 10
  • CÀI T B O M T
  • 10.1. Gi i thi u
  • 10.2. Công c JAR
  • 10.4. Khoá b o m t Java
  • 10.5. Ch ng ch s
  • 10.6. Các gói b o m t Java
  • Ki m tra ki n th c

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2

M CL C
M C L C ................................................................................................................... 1 Chương 1 ..................................................................................................................... 8 L P TRÌNH HƯ NG I TƯ NG .......................................................................... 8 i tư ng .............................................................. 8 1.1. Gi i thi u v L p trình hư ng

1.2. Tr u tư ng hóa d li u ....................................................................................... 10 1.3. L p ..................................................................................................................... 13 1.4. i tư ng............................................................................................................ 14 ng ..................................................................................................... 16 1.4.1. Thu c tính .................................................................................................... 15 1.4.2. Ho t 1.4.3. Phương th c ................................................................................................. 16 1.4.4. Thông 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. Tính B n v ng .................................................................................................... 19 1.8 Tính óng gói d li u .......................................................................................... 19 1.9. Tính th a k ........................................................................................................ 20 1.10. Tính a hình ..................................................................................................... 23 1.11. Nh ng ưu i m c a Phương pháp hư ng i tư ng ......................................... 24 Tóm t t bài h c .......................................................................................................... 25 Ki m tra s ti n b .................................................................................................... 26 Bài t p ....................................................................................................................... 26 Chương 2 ................................................................................................................... 27 NH P MÔN JAVA ................................................................................................... 27 2.1. Gi i thi u Java .................................................................................................... 27 2.2. Các c trưng c a Java........................................................................................ 28 i tư ng .......................................................................................... 28 i u hành............................................................... 28 2.2.1. ơn gi n ....................................................................................................... 28 2.2.2. Hư ng 2.2.3. c l p ph n c ng và h

Khoa Công ngh Thông tin –

ih c àL t

Trang 1

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2

2.2.4. M nh m ....................................................................................................... 29 2.2.5. B o m t ........................................................................................................ 30 2.2.6. Phân tán ........................................................................................................ 30 2.2.7. a lu ng ....................................................................................................... 30 2.2.8. ng............................................................................................................. 30 2.3. Các ki u chương trình Java ................................................................................. 31 2.3.1. Applets ......................................................................................................... 31 2.3.2. 2.3.3. 2.3.5. ng d ng th c thi qua dòng 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. Máy o Java (JVM-Java Virtual Machine) .......................................................... 31 2.4.1. Máy o Java là gì ? ....................................................................................... 32 2.4.2. Qu n lý b nh và d n rác ............................................................................ 33 2.4.3. Quá trình ki m tra file .class ........................................................................ 33 2.5. B công c phát tri n JDK (Java Development Kit) ............................................ 34 Trình biên d ch, 'javac'............................................................................................ 34 Trình thông d ch, 'java' ........................................................................................... 35 Trình d ch ngư c, 'javap' ........................................................................................ 35 Công c sinh tài li u, 'javadoc'................................................................................ 35 Chương trình tìm l i - Debug, 'jdb‘......................................................................... 35 Chương trình 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 Công ngh Thông tin – ih c àL t

Trang 2

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2

2.7. Các

c trưng m i c a Java 2.............................................................................. 36

Swing ..................................................................................................................... 36 Kéo và th .............................................................................................................. 36 Java 2D API ........................................................................................................... 37 Java sound .............................................................................................................. 37 RMI........................................................................................................................ 37 Tóm t t ...................................................................................................................... 38 Ki m tra s ti n b .................................................................................................... 38 Bài t p ....................................................................................................................... 38 Chương 3 ................................................................................................................... 39 N N T NG C A NGÔN NG 3.2 Chương trình JAVA 3.4 Các l p JAVA ..................................................................... 39 3.1 C u trúc m t chương trình Java ........................................................................... 39 u tiên ............................................................................... 40 3.3 Cơ b n v ngôn ng Java ..................................................................................... 44 i tư ng trong Java ............................................................................... 44 3.5 Ki u d li u ......................................................................................................... 46 3.6 Các bi n ............................................................................................................... 48 3.7 Phương th c trong m t l p .................................................................................. 50 3.8 Các toán t ........................................................................................................... 55 3.9 nh d ng d li u xu t dùng chu i thoát .............................................................. 63 3.10 i u khi n lu ng................................................................................................ 63 Tóm t t bài h c .......................................................................................................... 69 Ki m tra s ti n b .................................................................................................... 71 Bài t p ....................................................................................................................... 72 Chương 4: .................................................................................................................. 73 CÁC GÓI & GIAO DI N.......................................................................................... 73 4.1 Gi i thi u ............................................................................................................. 73 4.2 Các giao di n ....................................................................................................... 73 4.3 Các gói ................................................................................................................ 75 4.3.1 T o m t gói ................................................................................................... 77 4.3.2 Thi t l p ư ng d n cho l p .......................................................................... 79 4.4 Gói và i u khi n truy xu t .................................................................................. 81 4.5 Gói java.lang........................................................................................................ 82
Khoa Công ngh Thông tin – ih c àL t

Trang 3

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2

4.5.1 L p String ..................................................................................................... 83 4.5.2 Chu i m c nh ............................................................................................. 84 4.5.3 Các phương th c c a l p String ..................................................................... 85 4.5.4 L p StringBuffer ........................................................................................... 87 4.5.5 Các phương 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 Gói 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 Tóm t t bài h c ........................................................................................................ 108 Ki m tra s ti n b .................................................................................................. 109 Bài t p ..................................................................................................................... 110 Chương 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 Thành ph n (Component) .................................................................................. 115 5.3.1 Nhãn (Label) ............................................................................................... 116 5.3.2 Ô văn b n (TextField) .................................................................................. 117 5.3.3 Vùng văn b n (TextArea) ............................................................................ 119 5.3.4 Button (nút n)............................................................................................. 120 5.3.5 Checkbox và RadioButton ........................................................................... 122 5.3.6 Danh sách ch n l a (Choice List) ................................................................ 124 5.4 Qu n lý cách trình bày (Layout manager) .......................................................... 126
Khoa Công ngh Thông tin – ih c àL t

Trang 4

............ 183 ih c àL t Khoa Công ngh Thông tin – Trang 5 ...................................... 129 5......................................7........... 171 6.....................................9 i u khi n Font ........4 V hình ch nh t 3D và v cung ..................7.......................................................................7................. 128 5..............................................10 L p FontMetric ...........Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 5..... 174 6........7 L p Graphics ................................................ 159 5.............. 168 Bài t p ........ 153 5.................................................................. 182 Chương 7 ............................... 154 5..............................1 Java Applet ............................................................ 165 Tóm t t .......................................................... 150 5..................................................... 167 Ki m tra s ti n b .............2............................................................................................... 181 Bài t p ......................................................................................5 V hình PolyLine ...........................................................4..2...........8 i u khi n màu ....... 158 5......................................................................................................................................... 149 5...................................................2 Nh ng gi i h n b o m t trên applet .....................................................................................4..............................................................3 CardLayout Manager ........................................ 132 5.. 133 5................... 177 Tóm t t ............................................................3 V hình ch nh t và hình ch nh t bo góc .................................................................................................................... 161 5.................. 169 Chương 6 .......2 C u trúc c a m t Applet ..................................................................................................................... 139 5............ 152 5.............................................7........................................................6 Th c ơn (menu) ............................................2 BorderLayout Manager ............................ 176 6.........4............................................................ 183 K T N I CƠ S D LI U ................... 171 APPLETS ...........................1 V các chu i...................................................................................................................................11 Ch n ch v ................................................................ 171 6.............................1 S khác nhau giũa Application và Applet ........................4 Truy n tham s cho Applet ..........................................7................................................................... 145 5................................................................................. GridLayout Manager ...............................................7............................................. 180 Ki m tra s ti n b ........................................................................................4..... 155 5.......................3 Chu trình s ng c a m t Applet....................... 176 6...............................................................................2 V ư ng th ng và hình Oval ............ 171 6.5 X lý các s ki n ................. các ký t và các byte.............................................................................................5 GridBagLayout Manager ............6 V và tô a giác ......................................................................4............................................... 156 5...........................

......... M c ích c a vi c x lý ngo i l .............................................................. Gi i thi u . Mô hình x lý ngo i l .....................3............................................................ Nh p/ xu t chu i và xâu ký t ............................................................... 194 8.............................3.... 217 Khoa Công ngh Thông tin – ih c àL t Trang 6 ................................................ 192 Chương 8 ........... 193 8............. 204 8........... 197 8...........10.................... 195 8..........3... Vào ra m ng byte....2............2........................................................................ 215 9....................8.2.....3.... 203 8................................................... Các ưu i m c a mô hình ‘catch và throw’ .................. 193 8.......... Các kh i ‘try’ và ‘catch’ .........1............................... Gi i thi u ...................................... 213 Bài t p .......................... 215 9.................................................................................1... 191 Bài t p ....4........................................................................................4....... L p OutputStream ............. 214 Chương 9 ...............5... L p Reader và Writer ............................11...................................................3........................................................................................................... 183 7............................................ Stream ........................................... Giao di n DataInput ................................................................................................................3.....................................1..........2....... 212 Ki m tra m c ti n b ......... 210 Tóm t t bài h c ............................. K t n i cơ s d li u .......................................................................... X lý ngo i l ........ Các bư c l p trình cơ s d li u v i JDBC ....................................................... 183 7....... L p PrinterWriter ............................................................................................................7.......................1............................................................................................2........................................................2.................................................Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 7......................................9......................... Nh p xu t l c..................3...................................................3...........................................io .................... 194 8...................................................4.....1................................ L p InputStream ....................................... 200 8................................................................................. 217 9..............2...... 208 Gói java........................... Giao di n DataOutput ....................3...........................awt.......... T o truy v n và l y k t qu truy v n .......................................................... 216 9........ 215 X LÝ NGO I L ........................print ............... T p tin nh p xu t ............................ 193 8...........................................1.......2.............. 183 7................... 195 8............................3...........................................................................................................................................................................................3........................ 215 9........... 193 DÒNG NH P/XU T (I/O Stream) .............................................. 186 Tóm t t bài h c ................ 207 8......4................ Gói java..... 207 8.....3........................................................................... Gi i thi u v JDBC ....................... 215 9............3.............

....1.......2............ 218 9................. 227 Bài t p ...................................................................................... Các ngo i l ư c nh nghĩa v i l nh ‘throw’ và ‘throws’ ................................................... Gi i thi u ............. 238 Ki m tra ki n th c ................................................................................ Các gói b o m t Java ...... 223 9........................................................................... 236 Tóm t t ........... 229 CÀI T B O M T ................... 239 Khoa Công ngh Thông tin – ih c àL t Trang 7 ................................................................................. Ch ng ch s .................................................... Khoá b o m t Java ....................................................................... Công c JAR......................................................................................................................................................................... 228 Chương 10 ....................................................................................................................................8.. 235 10.................6.................................................................. 227 Ki m tra s ti n b ....................................... 225 Tóm t t ...................Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 9................................................ 220 9..... 238 Bài t p ....................................................................................................... 232 10..... 229 10........4.............7.......... 229 10.......................... Danh sách các ngo i l ............................................................................................................................. Các kh i ch a nhi u Catch....................5.......................................................................................................... 229 10................................................................5.............................................................. Kh i ‘finally’ ................6......................

tk t qu . Nh ng ưu i m c a phương pháp hư ng 1. Nh ng ho t ng liên quan n vi c mua bán: n vi c mua bán xe hơi là: 1) Nhân viên bán hàng ưa khách hàng tham quan phòng trưng bày. nh nghĩa i tư ng. Nh ng ngôn ng OOP không ch bao g m cú pháp và m t trình biên d ch mà còn có m t môi trư ng phát tri n toàn di n.OOP) là m t phương pháp thi t k và phát tri n ph n m m. OOP là phương th c tư duy m i gi i quy t v n b ng máy tính. Cách ti p c n hư ng i tư ng cung c p m t gi i pháp toàn v n gi i quy t v n . thu n l i cho vi c s d ng các i tư ng. Phương th c Thi t l p và H y. l p trình viên ph i n m v n thành m t th c th quen thu c v i máy tính. K thu t y cao nhân t ch c năng và các m i quan h d li u.1. K thu t l p trình hư ng i tư ng c i ti n vi c phát tri n các h th ng ph n m m. Môi trư ng này bao g m m t thư vi n ư c thi t k t t. Khoa Công ngh Thông tin – ih c àL t Trang 8 . 2) Nhân viên bán hàng. V n vi tính hóa vi c mua bán xe hơi bao g m nh ng gì? Nh ng y u t rõ ràng nh t liên quan 1) Các ki u xe hơi.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Chương 1 L P TRÌNH HƯ NG N i dung chính nh nghĩa L p trình hư ng i tư ng. Tr u tư ng hóa D li u. Hãy xem xét m t tình hu ng c n ư c tri n khai thành m t h th ng trên máy vi tính: vi c mua bán xe hơi. S khác bi t gi a L p và i tư ng. 3) Khách hàng t hóa ơn. L p trình hư ng i tư ng (Object Oriented Programming . nh nghĩa v tính óng gói d li u. nh nghĩa tính B n v ng. i v i m t ngôn ng l p trình h tr OOP thì vi c tri n khai k thu t l p trình hư ng i tư ng s d dàng hơn. 3) Khách hàng. 2) Khách hàng ch n l a m t xe hơi. nh nghĩa L p. Tính a hình. Tính Th a k . Gi i thi u v L p trình hư ng i tư ng I TƯ NG i tư ng.

n vi c ti p th … M i b ph n có nhân s riêng. M t ngư i có th m quy n trong b ph n k toán s cung c p thông tin c n bi t.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 4) Khách hàng tr ti n. Hình 1. Bây gi chúng ta hãy kh o sát nh ng thu t ng ‘ i tư ng. ho c b t kỳ d li u nào liên quan n ch c năng c a b ph n ó. L p trình hư ng i tư ng xem xét d li u như là m t th c th hay là m t ơn v c l p. n vi c k toán.1 Minh h a c u trúc c a m t cơ quan i n hình. L p trình viên luôn luôn c g ng t o ra nh ng k ch b n th t quen thu c v i nh ng tình hu ng th c ti n. Nhân s c a cơ quan i u khi n và x lý d li u liên quan n b ph n c a mình. khách hàng. M i b ph n cũng có nh ng d li u riêng ch ng h n như thông tin cá nhân. Bư c th nh t trong phương pháp này là làm cho máy tính liên k t v i nh ng i tư ng th gi i th c. b ng ki m kê. trách nhi m c a l p trình viên là cung c p cho máy tính nh ng thông tin theo cách th c mà nó cũng nh n th c ư c cùng nh ng th c th như chúng ta nh n th c. N u m t ngư i ơn v ti p th c n nh ng chi ti t liên quan n lương b ng c a ơn v mình. ‘d li u’. Khoa Công ngh Thông tin – ih c àL t Trang 9 . Rõ ràng là m t cơ quan ư c chia thành nhi u b ph n thì vi c qu n tr nhân s và nh ng ho t ng doanh nghi p d dàng hơn. ư c g i là các i tư ng ho c các Th c th . n vi c kinh doanh. máy tính ch là m t c máy. L p trình 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. ngư i y ch c n liên h v i b ph n k toán. ho c không th thay i làm hư h ng d li u. Phát tri n ph n m m theo k thu t l p trình hư ng i tư ng có kh năng gi m thi u s l n l n thư ng x y ra gi a h th ng và lĩnh v c ng d ng. Ch ng h n như b ph n k toán ch u trách nhi m v lương b ng i v i cơ quan. Tuy nhiên. Ch ng h n như ví d trên. và ‘phương th c’. i n hình là m t cơ quan có nh ng b ph n liên quan n vi c qu n tr . Ví d này minh ch ng r ng các i tư ng là h u d ng trong vi c phân c p và t ch c d li u. Có nhi u lo i i tư ng khác nhau. M t ngư i không có th m quy n t m t b ph n khác thì không th truy c p d li u. Chúng ta có th xem các b ph n khác nhau trong m t cơ quan là các i tư ng. Vì th . 5) Chi c xe ư c trao cho khách hàng. xe hơi và nhân viên bán hàng là nh ng i tư ng ho c th c th . Nó ch th c hi n nh ng công vi c ư c l p trình mà thôi. nh ng th th c kinh doanh. M iv n ư c chia ra thành nhi u y u t . ó chính là vai trò c a k thu t hư ng i tư ng. v i b n ch t riêng và nh ng c tính c a th c th y. n u như thông tin y có th chia s ư c. Chúng ta s d ng k thu t hư ng i tư ng ánh x nh ng th c th chúng ta g p ph i trong i s ng th c thành nh ng th c th tương t trong máy tính. các nhân s ư c giao cho nh ng trách nhi m rõ ràng.

Chương trình ph i xu t hóa ơn cho nh ng xe hơi ã bán cho khách hàng.2.1 minh h a s khác bi t gi a hai phương pháp: Phương pháp Top-Down OOP Chúng ta s xây d ng m t khách Chúng ta s xây d ng m t tòa nhà 10 t ng s n. các Chúng ta s xây d ng m t khách s n v i phòng và phòng h p. R i g n k t các phương th c thao tác trên d li u. Trong m i module. sang tr ng. K ti p. Trư c h t. phương pháp OOP che gi u m t vài thông tin bên trong các i tư ng. ngư i y ph i xác nh nh ng thông tin c n thi t v m i thành ph n. s i u khi n có chi u hư ng i xu ng theo c u trúc ch không có chi u hư ng i lên. các chương trình ư c c u trúc theo h th ng phân c p các module. v i nh ng dãy phòng trung bình. nh ng thành ph n trên. Phương pháp OOP c g ng qu n lý vi c th a k ph c t p trong nh ng v n th c t . và hơn n a. làm ư c vi c này. Tr u tư ng hóa d li u Khi m t l p trình viên ph i phát tri n m t chương trình ng d ng thì không có nghĩa là ngư i y l p t c vi t mã cho ng d ng y. xu t m t hóa Khoa Công ngh Thông tin – ih c àL t Trang 10 .Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Phòng Nhân s Phòng K toán Phòng Kinh doanh Hình 1. B t kỳ ng d ng nào u có th ư c nh nghĩa theo thu t ng th c th ho c i tư ng t o ra ti n trình x lý mô ph ng theo ti n trình x lý mà con ngư i nghĩ ra. OOP t p trung trư c h t trên d li u. Hãy kh o sát chương trình ng d ng cho vi c mua bán xe hơi nói trên. B ng 1. Phương pháp gi i quy t ‘top-down’ (t trên xu ng) cũng còn ư c g i là ‘l p trình hư ng c u trúc’. Nó xác nh nh ng ch c năng chính c a m t chương trình và nh ng ch c năng này ư c phân thành nh ng ơn v nh hơn cho n m c th p nh t. n th gi i l p trình.1 M t ví d v hai phương pháp gi i quy t OOP và Top-Down 1. và m t phòng h p l n. vi c này ư c xem như là ph n th a k c a vi c nh nghĩa d li u.1 Khái ni m v i tư ng có th ư c m r ng n h u h t các lãnh v c i s ng. B ng 1. B ng k thu t này. M i m t module có m t u vào riêng và m t u ra riêng. Chúng ta s thi t k các t ng l u. ngư i y ph i nghiên c u ng d ng và xác nh nh ng thành ph n t o nên ng d ng.

V y bư c th nh t là xác nh nh ng c tính c a khách hàng. Màu tóc. nh ng thông tin sau cũng c n thi t: Ki u xe ư c bán. p a ch c a khách hàng. Công vi c xu t hóa ơn òi h i nh ng hành ng sau: Nh Nh Nh Nh Xu p tên c a khách hàng. a ch . Bên c nh nh ng c tính c a khách hàng. Chi u cao. Còn nh ng chi ti t khác (chi u cao. Bên c nh nh ng chi ti t v khách hàng. p tên c a nhân viên bán xe. n u chúng ta phát tri n m t ng d ng h tr cho vi c i u tra t i ph m thì nh ng thông tin ch ng h n như màu tóc là thi t y u. chúng ta c n nh ng thông tin chi ti t v khách hàng. ng liên Khung thông tin bên dư i cho th y nh ng thu c tính và nh ng hành quan n m t hóa ơn: Các thu c tính Tên c a khách hàng a ch c a khách hàng Ki u xe bán Nhân viên bán xe Các hành ng Nh p tên Nh p a ch Nh p ki u xe Khoa Công ngh Thông tin – ih c àL t Trang 11 . M t vài c tính g n k t v i khách hàng là: Tên. xe hơi và nhân viên bán hàng. T danh sách k trên. Tu i.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 ơn. vì th nh ng chi ti t thi t y u là: Tên. a ch . Tuy nhiên. Nhân viên nào bán xe. chúng ta cũng c n li t kê nh ng hành ng ư c th c hi n. màu tóc …) là không quan tr ng i v i ng d ng. t hóa ơn v i nh d ng òi h i. chúng ta xác nh nh ng c tính thi t y u i v i ng d ng. p ki u xe. B i vì chúng ta ang c p n nh ng khách hàng mua xe.

Ti p theo. Ti n hoa h ng. ng c n thi t. b i vì không th mô ph ng t t c các hành ng và các thu c tính c a m t th c th .Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Nh p tên nhân viên bán xe Xu t hóa ơn nh nghĩa: S tr u tư ng hóa d li u là quá trình xác nh và nhóm các thu c tính và các hành ng liên quan n m t th c th c th . Tính ti n hoa h ng ki m ư c. Nh p s lư ng xe bán ư c. Nh ng hành ng òi bu c i v i công vi c này là: Nh p tên nhân viên bán xe. xét trong m i tương quan v i ng d ng ang phát tri n. Xác nh nh ng c tính thi t y u và nh ng hành Gi m thi u nh ng chi ti t không c n thi t. chúng ta mu n ng d ng tính toán ti n hoa h ng cho nhân viên bán hàng. S lư ng xe bán ư c. Vi c tr u tư ng hóa d li u là c n thi t. Ch ng h n như khách hàng ho c nhân viên bán hàng cũng có th th c hi n nh ng hành ng sau: Khoa Công ngh Thông tin – ih c àL t Trang 12 . vi c tr u tư ng hóa d li u tra t ra câu h i ‘ âu là nh ng thu c tính và nh ng hành 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 hóa Nh ng ưu i m c a vi c Tr u tư ng hóa là: T p trung vào v n . Nh ng thu c tính liên k t v i nhân viên bán hàng có tương quan v i ng d ng này là: Tên. V n m u ch t là t p trung n nh ng hành vi c t y u và áp d ng chúng trong ng d ng. Nh ng thu c tính Tên S lư ng xe bán ư c Ti n hoa h ng Nh ng hành ng Nh p tên Nh p s lư ng xe bán ư c Tính ti n hoa h ng Như th .

M t khi m t s Khoa Công ngh Thông tin – ih c àL t Trang 13 . Hãy kh o sát l p có tên là ‘khách hàng’ dư i ây. L p Khách hàng Tên khách hàng a ch khách hàng Ki u xe ư c bán Nhân viên bán xe Nh p tên Nh p a ch Nh p ki u xe ư c bán Nh p tên nhân viên bán xe Xu t hóa ơn nh nghĩatương ương ng chung. Nó mang tính cách t ng quát ch không mang tính cách c thù. M t l p là m t s xác ư c nhóm l i nh c p ch ng lo i c a các th c th gi ng nhau. M t l p nh nghĩa m t th c th theo nh ng thu c tính và nh ng hành 2. t o n ng d ng.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Ngư i y i l i. nh ng hành ng này không liên quan tư ng hóa d li u s lo i b chúng. Tuy nhiên. Ch ng h n như m t nh nghĩa l p dư i ây: L p Con ngư i Tên Chi u cao Màu tóc Vi t Nói L p này nh nghĩa th c th ‘Con ngư i’. L p Trong ng d ng mua bán xe. M i th c th thu c ki u ‘Con ngư i’ u có nh ng c tính và nh ng hành ng như ã ư c nh nghĩa. L p này bao g m m i thu c tính và hành ng òi h i i v i m t khách hàng. Khi nh nghĩa m t l p. chúng có th ư c nhóm l i trong m t th c th ơn nh t g i là m t ‘l p’. Ngư i y nói chuy n.3. Các hành ng và các thu c tính này là chung cho m i khách hàng mua xe. chúng ta mu n phát bi u r ng m t l p s ph i có m t t p h p các thu c tính và các hành ng riêng. Nh ng thu c tính và nh ng hành ng chung c a m t th c th nên m t ơn v duy nh t g i là m t l p. chúng ta ã xác nh các thu c tính và các hành ng c n có xu t m t hóa ơn cho m t khách hàng. Vi c tr u nh nghĩa: có 3 1. M t l p là m t mô hình khái ni m v m t th c th . 1. 3. Vì th .

chúng ta bi t ư c nh ng thu c tính và nh ng hành ng c a nh ng th c th ‘trông gi ng’ như l p này. có th s d ng th c th mà l p nh nghĩa. Hãy kh o sát l p ‘Khách hàng’ ư c nh nghĩa trên. nh nghĩa: M t i tư ng là m t trư ng h p c a m t l p. các khía c nh sau ây ư c xác nh rõ: Tình tr ng. t b n ch t m t l p là m t nguyên m u. i tư ng này s ph i có nh ng giá tr th c i v i các thu c tính ‘Tên’. Khi m t ngư i mua m t xe hơi m t c a hàng.4. i tư ng ng c trưng cho m i nhân M t l p là m t nguyên m u phác h a nh ng thu c tính và nh ng hành ng có th c a m t th c th . Khoa Công ngh Thông tin – ih c àL t Trang 14 .Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 l p ã ư c nh nghĩa. nh ng thu c tính c a nó là nh ng giá tr xác nh. c a hàng y có m t khách hàng m i. … Ch ng h n như m t khách hàng có tên là ‘Mark’. M t i tư ng là m t th c th c th (thông thư ng b n có th s ch m. Như th . ‘ a ch ’. ‘Mark’ là m t i tư ng c a ki u ‘Khách hàng’. Thái . Chân tính. Vào th i i m y. Vì th . Hình 1. s ng ‘London’ ã mua m t xe ki u ‘Honda Civic’ t nhân viên bán hàng tên là ‘Tom’. 1.2 trình bày hai i tư ng. còn i tư ng là m t th hi n ư c nh nghĩa b i l p. chúng ta ph i t o m t ‘ i tư ng’ t l p ó. K t lúc m t i tư ng hi n h u. ‘Ki u xe’. m t i tư ng gi ng như l p ‘Khách hàng’ ư c t o ra. L p này nh nghĩa m i thu c tính và hành ng g n li n v i m t khách hàng. xem th y và c m nh n). L p là m t khái ni m. M t ví d khác v m t l p liên quan n vi c mua bán xe hơi như sau: L p Nhân viên bán hàng Tên S lư ng xe bán ư c Ti n hoa h ng Nh p tên Nh p s lư ng xe bán ư c Tính ti n hoa h ng nh nghĩa các thu c tính và các hành L p trên viên bán xe hơi. và nh ng hành ng ư c nh nghĩa cho i tư ng này ư c th c thi. Trong m i m t i tư ng.

Ngưng. c n ph i Chúng ta xác nh các thu c tính và các hành ng nh nghĩa m t l p. Thu c tính i th c.1. M t i tư ng cũng th c hi n m t s hành hi n nh ng hành ng sau: Kh i ng.4.2: M t Xe hơi Ki u: Ferrari Màu: Năm: 1995 Hành ng: Kh i ng Ngưng Chuy n ng i tư ng Con ngư i và m t i tư ng Xe hơi i tư ng y là gì.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Con ngư i Tên: Jack Tu i: 28 Tr ng lư ng: 65 kgs Hành ng: i Nói Suy nghĩ Hình 1. Ch ng h n như nh ng thu c tính c a m t Tên. M t xe hơi có kh năng th c chuy n i gi a các i tư ng l p trình và các i tư ng k t h p các thu c tính và các hành ng c a m t i tư ng. chúng mô t m t i tư ng. i tư ng ‘Xe hơi’ s là: ng. Tr ng lư ng. M t khi các thu c tính ư c gán cho các giá tr . Tu i. Năm. 1. Ki u xe. ho c hành i tư ng ‘Con ngư i’ s là: M i i tư ng có nh ng c tính riêng mô t ng ra sao. Chuy n ng. Hãy kh o sát l p sau: Các thu c tính c a l p Khách hàng Tên c a khách hàng a ch c a khách hàng Ki u xe ư c bán Nhân viên ã bán xe Khi thu c tính ‘Tên’ ư c gán cho giá tr ‘Mark’ thì nó mô t m t i tư ng Khoa Công ngh Thông tin – ih c àL t Trang 15 . Nh ng thu c tính c a m t Màu s c.

các thu c tính n m gi các giá tr d li u trong m t i tư ng. M t l p ch là m t nguyên m u.4. ng ư c ng ch ư c ng riêng r . M i i tư ng c a m t l p ph i có cùng các thu c tính. ư c g i là ‘các ư c yêu c u c a m t i tư ng. Ch ng h n như chúng ta không th yêu c u m t ho t ng ‘Mua m t xe hơi khác’ c a m t i tư ng ư c t o ra t l p ‘Khách hàng’. 1 in. Ho t ho t ng ng kh thi. chúng nh nghĩa m t i tư ng c th .2.3. Còn vi c áp d ng ho t ng y ch x y ra nơi các i tư Ch ng h n như ho t ng ‘Nh p Tên’ mà l p “Khách hàng’ nh nghĩa th c hi n nơi m t i tư ng nào ó. M t phương th c là m t thu t toán. như ư c ng là m t d ch v nh nghĩa trong m t l p. i tư ng ư c t o t l p Con ngư i Mark 6 ft. c tính mô t m t i tư ng. = = = Các hành ng’. nh nghĩa: M t ho t Các ho t ng xác nh các hành 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 khi m t i tư ng c th c a lo i ‘Con ngư i’ ư c t o ra thì các hành ng ‘ i’. M t thu c tính có th ư c gán m t giá tr ch sau khi m t i tư ng d a trên l p y ư c t o ra. 1. T p h p các ho t ng ư c yêu c các i tư ng trong cùng m t l p là như nhau. M t phương th c là s th c thi th c t c a m t ho t nh nghĩa: Phương th c là s xác yêu c u. cho nên nó có th ư c áp d ng cho m t i tư ng. có th ư c u cho t t c nh v cách th c th c thi m t ho t Các phương th c xác nh cách th c thao tác trên các d li u c a m t i tư ng. có th lưu gi nh ng chi ti t c a m t khách hàng.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 xác nh ư c t o t l p ‘Khách hàng’. Kh o sát ví d sau: Các thu c tính c a l p Con ngư i Tên Chi u cao 1. Vì th .4. ‘Nói’ m i Khoa Công ngh Thông tin – ih c àL t Trang 16 . Các thu c tính c a m t i tư ng hi n h u ch khi i tư ng y ư c t o ra. Hãy kh o sát nh ng ho t ng chung c a m t th c th thu c lo i ‘Con ngư i’: i. B i vì phương th c là s th c thi th c t m t ho t ng. B i vì m t l p là m t nguyên m u cho nên các thu c tính trong m t l p không th n m gi các giá tr . t ng bư c t ng bư c xác nh i u gì ư c th c hi n khi ho t ng y ư c yêu c u. nh nghĩa: M t thu c tính là m t Như th . trong m t l p m t ho t nh nghĩa. m t th hi n( i tư ng) c a l p ‘Khách hàng’ ph i ư c t o ra. Nói. ư c yêu c u c a m t ng. Phương th c Các ho t ng nh nghĩa các hành ng kh thi có th i tư ng.

Thông tin ư c truy n i và ư c ón nh n gi a các b ph n t o nên các thông i p gi a các i tư ng.4. ho c qua nh ng ch th mi ng) t o nên nh ng thông i p gi a các i tư ng. Nh ng ch th này có th ư c chuy n d ch thành nh ng l i g i hàm trong m t chương trình. m t i tư ng ư c t o t l p ‘Khách hàng’ nh p tên c a ngư i s d ng. Trong máy tính. Thông i p g it i yêu c u m t ho t ng c th nào ó ư c th c hi n. M c lương? Phòng Kinh doanh Phòng K toán $2000 Hình 1. m t ngư i s d ng nh n m t nút trên bàn phím là m t s ki n chung. hãy kh o sát ví d sau t th c t : ‘M t ngư i s thét lên khi b th c b ng m t v t nh n’. i tư ng s th c hi n m t ho c nhi u phương th c. Nh ng thông tin ư c chuy n t i và ư c ón nh n t m i b ph n (ho c qua thông báo liên b ph n. m t s ki n là m t tác nhân mà i tư ng này gây ra cho m t i tư ng khác. Nói cách khác. ng.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 ư c th c thi. m t thông i p ư c i tư ng nơi ho t ng này ư c nh nghĩa. Ch ng h n như click chu t trái trên m t nút. Hai b ph n này ư c coi là hai i tư ng khác nhau. 1. nó th c hi n m t phương th c tương ng.4. áp ng l i s ki n y.4. Ch ng h n. ‘Th c’ là s ki n gây ra s ph n ng là ‘thét lên’. Khoa Công ngh Thông tin – ih c àL t Trang 17 .3 Các i tư ng g i thông i p cho nhau Trong hình 1. 1. nó tìm và th c thi phương th c ‘Nh p tên’. nh nghĩa: M t thông i p là m t l i yêu c u m t ho t Khi m t i tư ng nh n ư c m t thông i p. ‘Kinh doanh’ và ‘K toán’ là hai b ph n khác nhau trong m t công ty. hi u rõ hơn các s ki n. Trong trư ng h p m t công ty. Khi i tư ng nh n ư c thông i p. m i b ph n ư c coi là m t i tư ng.3. 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.5. S ph n h i i v i s ki n này là vi c hi n th ký t tương ng trên màn hình.

ây là nh ng hành ng Chúng tương t v i nh ng hành 1. Vào lúc này.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 1. trong khi ó m t i tư ng là m t trư ng h p c a th c th y. m i thu c tính và phương th c c a i tư ng s n sàng s d ng. Khi i tư ng này ư c t o.6. Tương t .6. trong khi l p là m t mô hình khái ni m . Ghi tên h c sinh y vào danh sách. Khi m t h c sinh nh p h c. H y ng lo t ư c th c hi n ngay lúc b t u nh p h c. Thi t l p M t l p ch cung c p nh ng nh nghĩa v các thu c tính và các phương th c kh thi. M i m t l p có m t hàm thi t l p. ó là: X p l p cho h c sinh y. T t c các i tư ng thu c v cùng m t l p có cùng các thu c tính và các phương th c. Khi m t i tư ng m i ư c t o.nh nghĩa t t c các thu c tính và các phương th c c n thi t c a m t i tư ng. Cho n khi m t khách hàng mua m t xe hơi t i c a hàng thì m t i tư ng m i gi ng như l p ‘Khách hàng’ m i ư c t o. nh nghĩa: Thi t l p là m t ti n trình hi n th c hóa m t i tư ng. M t l p nh nghĩa m t th c th . Thi t l p và H y 1. Nó xác nh các hành ng kh thi và các thu c tính c n thi t cho m t nhóm các i tư ng c th . Ngay t lúc u ch nh nghĩa các l p. Các thu c tính và các phương th c có th ư c truy c p ch khi m t i tư ng d a trên m t l p ư c t o ra. các phương th c ã ư c nh nghĩa cũng ư c áp d ng. Hàm thi t l p là m t phương th c c bi t ph i ư c g i trư c khi s d ng b t kỳ phương th c nào trong m t l p. các thu c tính c a nó tr nên hi n th c và có th ư c gán giá tr . ‘ a ch ’ …). Khoa Công ngh Thông tin – ih c àL t Trang 18 . L p và i tư ng Có m t s khác bi t th c s gi a m t l p và m t i tư ng. m t s kho ng tr ng b nh ư c c p phát cho nh ng thu c tính c a nó lưu tr các giá tr ư c gán cho các thu c tính y (‘Tên’.2. C n nh n th c rõ s khác bi t này.6. i tư ng là m t mô hình th c.5. Hàm Thi t l p kh i t o các thu c tính.1. Tương t như trư ng h p m t h c sinh nh p h c t i m t trư ng h c. M t l p là m t nguyên m u c a m t i tư ng. m t vài hành ng ư c th c hi n nh n h c sinh y vào trư ng. và c p phát b nh n u c n. Hàm thi t l p th c hi n vi c c p phát này. Kh o sát l i trư ng h p c a hàng bán xe hơi. 1. X p ch ng i. ng mà hàm thi t l p c a m t i tư ng th c hi n.

Khi m t h c sinh thôi h c.7. Nh ng chi ti t c a khách hàng ư c lưu tr ngay khi xe hơi ã ư c phân ph i. i tư ng tương ng s b h y. Ch ng h n như trong trư ng h p l p ‘Khách hàng’. S lãng phí tài nguyên. Nh ng chi ti t này s t n t i trong file cho n khi chúng b h y. Tính B n v ng Hãy kh o sát trư ng h p bán xe hơi. Bài thơ là d li u t n t i trong tâm trí c a nhà thơ. Các hành ng ng lo t này tương t v i công vi c c a hàm h y i v i m t i tư ng. các i tư ng s d ng nh ng thu c tính và nh ng phương th c không ư c yêu c u b i ngư i s d ng i tư ng. Hàm H y cũng tri t tiêu kh năng truy c p n i tư ng y. nh nghĩa: Hàm H y là m t phương th c tư ng. nh nghĩa: Tính B n v ng là kh năng lưu tr d li u c a m t i tư ng y không còn t n t i. Gi s r ng khi hóa ơn Khoa Công ngh Thông tin – ih c àL t Trang 19 . Bài thơ y không còn t n t i khi t gi y y b xé rách. 1. nh nh ng thu c tính và Thông thư ng. ch ng h n như b nh .8 Tính óng gói d li u Ti n trình tr u tư ng hóa d li u h tr cho vi c xác nh ng phương th c thi t y u. trong trư ng h p bán xe hơi. N u bài 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. tên c a h c sinh y b lo i ra kh i danh sách. ho c ch nghĩa b xóa i. 1. Bài thơ s t n t i bao lâu văn b n y còn ư c duy trì. Vì th .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 chính th c.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Khi m t i tư ng không còn c n thi t n a thì nó s b h y b . c bi t ư c dùng h yb m t i Ti n trình H y tiêu h y m t i tư ng và gi i phóng kho ng tr ng b nh mà hàm thi t l p ã c p phát cho nó. L p y có m t phương th c xu t hóa ơn. m t khi nhân viên bán hàng b ngh . Bao lâu nhà thơ còn t n t i thì b y lâu bài thơ còn t n t i. Ch ng h n. n u như ti p t c cho m t i tư ng t n t i m t khi nó không còn c n thi t. Kho ng tr ng này gi ây có th ư c tái s d ng. và kho ng tr ng ư c gi i phóng có th ư c tái c p phát. Chúng ta ng ch m tính b n v ng m i ngày. i tư ng ngay c khi C a hàng bán xe lưu tr chi ti t khách hàng vào m t file. nh ng chi ti t c a ngư i y không còn liên h . Bài thơ ư c vi t ra gi y t o nên s b n v ng. M t khi m t i tư ng b h y thì các thu c tính c a nó không th ư c truy c p. ho c b n thân file b h y. Hãy xem vi c sáng tác m t bài thơ. cũng như không m t phương th c nào có th ư c th c thi. i u này gi i phóng b nh ã c p phát cho nhân viên bán hàng y. Hãy xem xét ví d v trư ng h c trên ây.

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 nhân viên bán hàng. B i vì nh ng thu c tính và nh ng phương th c có th ư c che khu t kh i t m nhìn. Khi phương th c tính ti n hoa h ng ư c th c thi. Ngày phân ph i có th ư c x lý theo m t trong nh ng cách sau: ó là m t giá tr ư c tính toán .Ch ng h n. Như th ngư i s d ng không nh n th c v cách th c mà ngày phân ph i ư c hi n th . ó là m t giá tr c nh – Xe hơi ư c phân ph i vào ngày mùng 2 m i tháng. khách hàng không ư c bi t nh ng chi ti t này. ho c các chi ti t c a vi c thi hành ư c g i là ‘ óng gói’. Gi m s lư ng m t hàng trong b ng ki m kê sau khi bán. 15 ngày k t ngày t hàng. Các i tư ng khác và nh ng ngư i s d ng không nh n th c ư c các thu c tính và / ho c các phương th c như th có t n t i hay không. và ư c hi n th trên hóa ơn. Khách hàng yêu c u s n ph m X. ngư i s d ng không bi t chi ti t c a vi c tính toán. M t khác. Ưu i m c a vi c óng gói là có th t o ra b t kỳ thu c tính hay phương th c c n thi t áp ng òi h i công vi c khi xây d ng m t l p. Sau khi khách hàng yêu c u s n ph m. 1. i tư ng s d ng nh ng thu c tính và nh ng phương th c mang tính n i b . ch nh ng thu c tính và / ho c nh ng phương th c có th ư c truy c p t bên ngoài l p thì m i nhìn th y. nh nghĩa: óng gói là ti n trình 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.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 ư c xu t. i Vi c óng gói phân tích nh ng khía c nh có th truy c p t bên ngoài v i nh ng khía c nh ch ư c s d ng trong n i b c a i tư ng.9. Ngày phân ph i ư c phát sinh bên trong i tư ng. M t ví d khác v vi c óng gói là l p ‘Nhân viên bán hàng’ ã ư c nh nghĩa trên. H ư c trao cho s n ph m X. Tuy nhiên chúng ta không bi t thu c tính nào qua ó chúng ta có th xác nh thông tin này. các phương th c. M t trư ng h p v óng gói mà chúng ta g p trong i s ng h ng ngày là vi c giao d ch kinh doanh m t c a hàng. m t trong nh ng chi ti t ư c in ra trên hóa ơn là ngày phân ph i. và h ph i tr ti n cho s n ph m y. Tính th a k Hãy kh o sát các l p sau: L p Sinh viên Tên a ch i m môn 1 Khoa Công ngh Thông tin – L p Nhân viên Tên a ch Lương ih c àL t L p Khách hàng Tên a ch Ki u xe ã bán Trang 20 . ngư i bán hàng th c hi n nh ng hành ng sau: Ki m tra m t hàng trên k hàng. Tuy nhiên. Ti n trình che gi u các thu c tính.

chúng ta xây d ng l p ‘Khách hàng’ bao g m l p ‘Ngư i’ c ng v i nh ng thu c tính và nh ng phương th c riêng. Trong ví d này. Chúng ta xây d ng m t l p ‘Ngư i’ v i nh ng thu c tính và nh ng ho t ng như ã trình bày hình trên.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 i m môn 2 Ch c v Nh Nh p tên Nh p tên Nh Nh p a ch Nh p a ch Nh Nh p i m Nh p ch c v Xu Tính t ng i m Tính lương Trong t t c ba l p. ‘Nhân viên’ và ‘Khách hàng’. K ti p. l p ‘Khách hàng’ ư c g i là ‘l p con’. Chúng ta c n ph i nh nghĩa l p ‘Ngư i’ và s d ng nó trong khi nh nghĩa các l p ‘Sinh viên’. Chúng ta có th nh nghĩa các l p ‘Sinh viên’ và ‘Nhân viên’ theo cùng cách th c trên. ‘Nhân viên’ và ‘Khách hàng’ có nh ng thành ph n gi ng l p ‘Ngư i’. ‘Sinh viên’ và ‘Nhân viên’ u chia s nh ng thu c tính và nh ng phương th c mà l p ‘Ngư i’ cung c p. Khoa Công ngh Thông tin – ih c àL t Trang 21 . L p Sinh viên i m môn 1 i m môn 2 Nh p i m tính t ng i m Theo ngôn ng hư ng L p Nhân viên Lương Ch c v Nh p ch c v Tính lương i tư ng. Có hai khái ni m quan tr ng khác liên k t v i tính th a k . ng y l i. và nh nghĩa L p Ngư i Tên a ch Nh p tên Nh p a ch Ba l p ‘Sinh viên’. L p ‘Khách hàng’ là l p ‘Ngư i’ c ng thêm cái khác. l p ‘Khách hàng’ ư c g i là th a k l p ‘Ngư i’. p tên p a ch p ki u xe t hóa ơn c tính và ho t ng chung. l p ‘Khách hàng’ có t t c các thu c tính và các phương th c ư c nh nghĩa trong l p ‘Ngư i’ c ng v i các thu c tính và các ho t ng c a riêng nó. c ba l p ‘Khách hàng’. ngoài ra chúng còn có nh ng thu c tính và nh ng phương th c riêng. L p Khách hàng Ki u xe bán ư c Nh p ki u xe Xu t hóa ơn nh nghĩa: Tính th a k cho phép m t l p chia s các thu c tính và các phương th c ư c nh nghĩa trong m t ho c nhi u l p khác. Như th . nh nghĩa: L p th a hư ng t m t l p khác ư c g i là l p con. l p ‘Ngư i’ ư c coi là ‘l p cha’. Trong ví d trên. chúng ta th y có m t vài thu Chúng ta mu n nhóm nh ng thu c tính và nh ng ho t chúng trong m t l p ‘Ngư i’. ba l p y có t t c các thu c tính và các phương th c c a l p ‘Ngư i’. Như th . Nói cách khác.

Hãy kh o sát ví d sau: L p ư ng th ng Kh i i m i m t n cùng V ư ng L p ư ng tròn Bán kính Tâm i m V ư ng tròn L p Hình nh + Hình nh V hình nh = L pV m t hình Nh n hình v V hình + Trong hình trên. ‘H u nhũ’. Như th . nh ng l p này có t t c nh ng thu c tính và các ho t ng c a l p ‘Các ng v t’.4 Tính th a k Tính a Th a k Trong t t c các ví d trên. Trư ng h p như th g i là ‘th a k ơn’. ‘Lư ng cư’ . m i l p con ch có m t l p cha. L p ‘V m t hình’ là m t ví d v tính a th a k . Các l p ‘Côn trùng’.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 nh nghĩa: L p cha là m t l p mà các hư ng. Trong ‘ a th a k ’. chúng ta ã xây d ng m t l p ‘V m t hình’. ‘H u nhũ’. c ng thêm nh ng thu c tính và nh ng phương th c c a riêng chúng. Ngay c trong ví d th a k v các lo i phương ti n di chuy n. Khoa Công ngh Thông tin – ih c àL t Trang 22 . m t l p con th a k t hai hay nhi u l p cha.4. các l p ‘Con ngư i’ và ‘Khác con ngư i’ là các l p con c a l p trên ‘H u nhũ’. Chúng ta có m t dãy các l p trung gian – ‘Côn trùng’. ‘Bò sát’. ‘ ư ng tròn’. Như th l p ‘V m t hình’ k t h p ch c năng c a ba l p trên thêm vào ch c năng ư c nh nghĩa bên trong nó. m t l p th a k ch t m t l p. ‘Lư ng cư’ là nh ng l p con c a l p trên ‘Các ng v t’. L p ‘H u nhũ’ là l p mà các l p ‘Con ngư i’ và ‘Khác con ngư i’ th a k .mà dãy các l p dư i k th a. ‘Hình nh’. Các ng v t Côn trùng H u nhũ Bò sát Lư ng cư Con ngư i Khác con ngư i Hình 1. Như th . c tính c a nó ư c m t l p khác th a Hãy xem xét ví d v l p ‘Các ng v t’ hình 1. ‘Các ng v t’ là l p trên cùng mà các l p khác k th a. l p này th a hư ng ba l p: ‘ ư ng th ng’. ‘Bò sát’.

ngư i s d ng c n xây d ng m t l p v ư ng th ng. m t phương th c ch ng d ng cho m t i tư ng. Gi ây ngư i s d ng ch còn ph i vi t mã chương trình cho nh ng c tính chưa có sau ti n trình th a k .10. Toán t này ch tính t ng c a hai s nguyên. Gi thi t r ng ba ngư i khác nhau xây d ng ba l p này riêng bi t. chúng ta có ba l p ‘ ư ng th ng’. Trong h th ng hư ng i tư ng thì tình hu ng mô t trên là có th . l p này d n xu t ch c năng c a nó t m t vài l p khác. Ch ng h n xét toán t ‘C ng’. phương th c y có th hi n th m t chu i. Tính a hình Trong m t chương trình có c u trúc. h không c n ph i s d ng nhi u i tư ng khác nhau. Tuy nhiên. ho c hi n th m t hình nh. nh nghĩa: Tính a hình cho phép m t phương th c có các cách th hi n khác nhau trên nhi u lo i i tư ng khác nhau. Vì th h tìm ki m xem có l p nào áp ng m t ho c t t c các yêu c u ó. Hãy kh o sát hình sau: L p: Hình th Các phương th c: V Di chuy n Kh i t o Các l p con Hình 1. ho c v m t ư ng th ng. V i tính a hình. N u có nh ng l p cung c p ch c năng th a yêu c u thì ngư i s d ng s th a k nh ng l p ó t o m t l p m i. s th a k cung c p m t bó nh ng ch c năng h n n trong m t l p. Tính a hình là m t trong nh ng c tính quan tr ng nh t c a h th ng hư ng i tư ng. Tùy thu c vào i tư ng tác ng. v ư ng tròn cũng như hi n th hình nh. Chúng ta không th có m t lo i toán t ‘C ng’ tính t ng c a hai giá tr văn b n (text) ‘Hello!’ và ‘How are you?’ có ư c chu i văn b n k t qu ‘Hello! How are you?’. Tuy nhiên.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Có th s d ng tính a th a k xây d ng m t l p m i. Như th .5: L p ‘Hình th ’ và các l p con Hình trên cho th y r ng ‘V ’ là m t phương th c ư c chia s gi a các l p con c a l p ‘Hình th ’. ch c n m t l p mà cung c p t t c các ch c năng. Như v y. 1. phương th c V ư c ng d ng cho hình h p s khác Khoa Công ngh Thông tin – ih c àL t Trang 23 . Trong ví d trên. xét theo góc c nh c a ngư i s d ng l p m i này. Bây gi . n u cùng m t phương th c ng d ng cho các i tư ng thu c các l p khác nhau thì nó ưa n nh ng k t qu khác nhau. M t ví d khác là phương th c hi n th . Khi truy n hai giá tr 2 và 3 thì nó hi n th 5. Ngư i s d ng có th s d ng chính ba l p trên. S thu n l i quan tr ng nh t c a tính th a k là nó thúc y vi c tái s d ng mã chương trình. B n ch t c a s vi c chính là phương th c này bao g m cùng m t s lư ng các tham s . ‘ ư ng tròn’ và ‘Hình nh’.

có m t s tương h p cao nh t gi a vi c phát tri n ng d ng và v n th c t . luôn luôn có ti ng nói c a khách hàng. Xét trên m c ngư i s d ng. Nh ng ưu i m c a phương pháp hư ng i tư ng là: Phương pháp này ti n hành ti n trình phân tích. Phương pháp này tăng t c ti n trình thi t k và phát tri n. Phương pháp này h tr vi c tái s d ng các i tư ng khi các ng d ng m i ư c phát tri n. Khoa Công ngh Thông tin – ih c àL t Trang 24 . Tính a hình h tr tính óng gói. m i giai o n c a vi c phân tích. Còn cách th c mà phương th c ‘V ’ ư c th c thi cho các trư ng h p khác nhau thì h không c n bi t. ây là ưu i m r t quan tr ng xét trong khía c nh gi m thi u chi phí v lâu v dài. Nh ng ưu i m c a Phương pháp hư ng i tư ng L p trình hư ng i tư ng òi h i m t s chuy n hư ng quan tr ng trong tư duy c a các l p trình viên. m t l n n a ây là k t qu c a vi c tái s d ng các i tư ng. và n u ư c s d ng úng n phương pháp này s c i ti n vi c duy trì.11. Ch ng h n như hành vi c a khách hàng m t khi ư c mô hình hóa trong m t ng d ng thì có th ư c s d ng l i cho nh ng ng d ng liên h có bao g m mô hình khách hàng. thi t k và phát tri n ng d ng. h ch c n m t phương th c ‘V ’ c a l p ‘Hình th ’. vi c tái s d ng và vi c ánh giá ph n m m. Ch ng h n như trong trư ng h p bán xe hơi.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 v i hình êlip. 1. Phương pháp này gi m thi u các l i và nh ng v n liên quan n vi c b o trì ng d ng do kh năng tái s d ng các i tư ng. Phương pháp này làm cho t c phát tri n các chương trình m i nhanh hơn. thi t k và phát tri n m t v n trong khuôn kh nh ng khái ni m và thu t ng thu c lĩnh v c ng d ng. Vì th . c a nhân viên bán hàng … Phương pháp này h tr vi c chia s bên trong m t ng d ng.

Tính th a k là cơ ch cho phép m t l p chia s các thu c tính và các phương th c ư c nh nghĩa trong m t ho c nhi u l p khác. trong tương quan v i m t ng d ng. Vi c óng gói là ti n trình 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. Tính b n v ng là kh năng lưu 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 ó. M t i tư ng là m t trư ng h p c a m t l p. phương pháp hư ng i tư ng tìm ki m m t gi i pháp toàn v n cho m t v n . Khoa Công ngh Thông tin – ih c àL t Trang 25 . Ti n trình hi n th c hóa m t i tư ng ư c g i là Thi t l p. thi t k và phát tri n ng d ng trong khuôn kh các khái ni m và các thu t ng thu c lĩnh v c ng d ng. M t l p nh nghĩa m t th c th theo nh ng thu c tính và nh ng phương th c chung. Tính a hình là m t thu c tính cho phép m t phương th c có các tác ng khác nhau trên nhi u i tư ng khác nhau. S tr u tư ng hóa d li u là ti n trình xác nh và nhóm các thu c tính và các phương th c liên quan n m t th c th c th . Ti n trình h y b m t i tư ng ư c g i là H y. Phương pháp hư ng i tư ng ưa ra ti n trình phân tích. còn i tư ng là th c th hi n th c.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Tóm t t bài h c L p trình hư ng i tư ng là m t cách tư duy m i gi i quy t v n b ng máy vi tính. M t l p nh nghĩa m t th c th . Thay vì n l c ưa v n vào trong khuôn kh quen thu c v i máy vi tính.

Bài t p 1. úng/Sai 4. úng/Sai 5. nh nghĩa tính a hình. S tr u tư ng hóa d li u ng nghĩa v i s che gi u d li u. Li t kê nh ng thu c tính và nh ng phương th c c n có v m t hình a giác. 3. 6. úng/Sai 2. Thi t k các thành ph n và các hành ng khi m t khách hàng th c hi n m t giao d ch ATM (Automatic Teller Machine). Tính a hình cho phép chúng ta t o nh ng i tư ng khác nhau v i cùng m t tên. T t c các i tư ng c a m t l p u có cùng m t t p h p các thu c tính. M t i tư ng nh nghĩa m t th c th . trong khi m t l p là th c th m t c th . Vi c óng gói d li u che gi u nh ng chi ti t th c thi i v i nh ng i tư ng khác. M i m t i tư ng có m t _________ . 2. úng/Sai 7.____________ và ___________ ư c xác nh.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Ki m tra s ti n b 1. úng/Sai 8. Khoa Công ngh Thông tin – ih c àL t Trang 26 . nh nghĩa s Tr u tư ng hóa d li u.

Vì v y m i lo i CPU có m t trình biên d ch riêng là r t t n kém. Java là gì? Java là ngôn ng l p trình hư ng i tư ng. nó ã tr thành m t công c l p trình c a các l p trình viên chuyên nghi p. lò nư ng. M c dù m c tiêu ban u không ph i cho Internet nhưng do c trưng không ph thu c thi t b nên Java ã tr thành ngôn ng l p trình cho Internet. Java có th gi i quy t h u h t các công vi c mà các ngôn ng khác có th làm ư c. do v y không th dùng Java vi t m t chương trình hư ng ch c năng. Nó không ch dùng vi t các ng d ng ch y ơn l hay trong m ng mà Khoa Công ngh Thông tin – ih c àL t Trang 27 . không ph thu c vào h i u hành. T ó. Nó là ngôn ng l p trình hư ng i tư ng c l p thi t b . Trình biên d ch thư ng ph i t n nhi u th i gian xây d ng nên r t t. Do ó nhu c u th c t òi h i m t ngôn ng ch y nhanh. Vào năm 1991. Gi i thi u Java Java là m t ngôn ng l p trình ư c Sun Microsystems gi i thi u vào tháng 6 năm 1995. g n. Sau ó ư c th c thi trên t ng lo i máy c th nh chương trình thông d ch. u tiên mã ngu n ư c biên d ch b ng công c JAVAC chuy n thành d ng ByteCode. Java là ngôn ng v a biên d ch v a thông d ch. Java ư c s d ng r ng rãi vi t chương trình ch y trên Internet.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Chương 2 NH P MÔN JAVA N i dung chính Các c trưng c a Java Các lo i chương trình vi t b ng Java Ð nh nghĩa v máy o Java (Java Virtual Machine) Các n i dung c a JDK (Java Development Kit) Sơ lư c các c trưng m i c a Java 2 2. Do v y nó s d ng các cú pháp c a C và các c trưng hư ng i tư ng c a C++. … M c dù C và C++ có kh năng làm vi c này nhưng trình biên d ch l i ph thu c vào t ng lo i CPU. hi u qu và c l p thi t b t c là có th ch y trên nhi u lo i CPU khác nhau. m t nhóm các k sư c a Sun Microsystems có ý nh thi t k m t ngôn ng l p trình i u khi n các thi t b i n t như Tivi. “Oak” ã ra i và vào năm 1995 ư c i tên thành Java. dư i các môi trư ng khác nhau. M c tiêu c a các nhà thi t k Java là cho phép ngư i l p trình vi t chương trình m t l n nhưng có th ch y trên b t c ph n c ng c th .1. máy gi t. Java ư c xây d ng trên n n t ng c a C và C++. Ngày nay.

2. compiler compiler compiler IB M Sparc Macintosh Khoa Công ngh Thông tin – ih c àL t Trang 28 . Vì v y trong Java. Java có riêng m t thư vi n các l p cơ s . 2. Hư ng i tư ng Java ư c thi t k xoay quanh mô hình hư ng i tư ng. Các c trưng 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 Phân tán a lu ng ng i u hành 2. PDA.2. tiêu i m là d li u và các phương pháp thao tác lên d li u ó.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 còn xây d ng các trình i u khi n thi t b cho i n tho i di ng.2. ngư i l p trình c n mô t ki u cho m i bi n. Tuy v y c n có ph n m m máy o Java (s c p n ph n sau) ho t ng như m t trình thông d ch t i máy th c thi. Do v y Java lo i b các c trưng ph c t p c a C và C++ như thao tác con tr .h). Vì v y chương trình Java ư c vi t trên m t máy có th d ch và ch y trơn tru trên các lo i máy khác mà không c n vi t l i. thao tác nh nghĩa ch ng toán t (operator overloading). C u trúc “struct” và “union” cũng ư c lo i b kh i Java. c l p ph n c ng và h i u hành ây là kh năng m t chương trình ư c vi t t i m t máy nhưng có th ch y ư c b t kỳ âu. ơn gi n Nh ng ngư i thi t k mong mu n phát tri n m t ngôn ng d h c và quen thu c v i a s ngư i l p trình. m c mã ngu n.3. … 2. 2. Tính c l p m c nh phân. m t chương trình ã biên d ch có th ch y trên nhi u n n (ph n c ng.2. Chúng ư c th hi n m c mã ngu n và m c nh phân. D li u và các phương pháp mô t tr ng thái và cách ng x c a m t i tư ng trong Java.1. Ki u d li u trong Java nh t quán cho t t c các h i u hành và ph n c ng khác nhau.2. h i u hành) khác mà không c n d ch l i mã ngu n.… Java không s d ng l nh “goto” cũng như file header (.

gi i phóng ư c th c hi n t ng. Ph i khai báo ki u d li u tư ng minh khi vi t chương trình. Java không s d ng con tr và các phép toán con tr . nh d ch v thu nh t nh ng i tư ng không còn s d ng n a. l p trình viên không ph i b n tâm n vi c c p phát b nh . Trong các môi trư ng l p trình truy n th ng. trình biên d ch c a Java chuy n mã ngu n thành d ng bytecode c l p v i ph n c ng mà có th ch y trên b t kỳ CPU nào. Nhưng th c thi chương trình dư i d ng bytecode. Qúa trình c p phát. Trư c khi chương trình k t thúc thì ph i t gi i phóng b nh ã c p. V n n y sinh khi l p trình viên quên gi i phóng b nh ã xin c p trư c ó. Máy o Java chuy n bytecode thành mã l nh mà CPU th c thi ư c. l p trình viên ph i t mình c p phát b nh .Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Hình 2.4. Không như C hay C++. Hình 2. chúng ta ph i biên d ch l i chương trình. Hình 2. M nh m Java là ngôn ng yêu c u ch t ch v ki u d li u. .hay l nh c a b vi x lý. Java ki m tra lúc biên d ch và c trong th i gian thông d ch vì v y Java lo i b m t m t s lo i l i l p trình nh t nh. trình biên d ch s chuy n t p l nh thành mã máy (machine code). Nên khi mu n ch y trên lo i CPU khác. chu i khi th c thi m b o r ng các truy nh p ó không ra ngoài gi i h n kích thư c. 2. Trong chương trình Java.1 Cách biên d ch truy n th ng i v i các chương trình vi t b ng C.2. C++ ho c m t ngôn ng nào khác. Nh ng l nh này ph thu c vào CPU hi n t i trên máy b n. Java ki m tra t t c các truy nh p n m ng. IBM Bytecode Trình biên d ch Trình thông d ch Java (Java Interpreter) Sparc Đ cl pn n (Platform independent) Macintosh Hình 2.2 D ch chương trình Java Môi trư ng phát tri n c a Java ư c chia làm hai ph n: Trình biên d ch và trình thông d ch.2 Quá trình th c thi chương trình vi t b ng Java trên các lo i máy khác nhau.1 th hi n quá trình th c thi chương trình vi t b ng C++ trên các lo i máy khác nhau. t i m i máy c n ph i có trình thông d ch c a Java hay còn g i là máy o Java. Java ki m tra s chuy n i ki u d li u t d ng này sang d ng khác lúc th c thi.

Vì v y chúng ư c s d ng r ng rãi như là công c phát tri n trên Internet. a lu ng Chương trình Java a lu ng(Multithreading) th c thi các công vi c ng th i. Nó cho r ng không có m t o n mã nào là an toàn c . Phân tán Java có th dùng xây d ng các ng d ng có th làm vi c trên nhi u ph n c ng. Java không h tr con tr vì v y không cho phép truy xu t b nh tr c ti p.6. có m b o mã là an toàn. c tính h tr a lu ng này cho phép xây d ng các ng d ng trên m ng ch y hi u qu . nơi s d ng nhi u n n t ng khác nhau.2.2. 2. Trong l p th hai. Các c trưng này t o cho Java an toàn t i a và có kh năng cơ ng cao. m c u tiên. 2. giám sát vi c vi ph m gi i L p th tư ki m soát vi c n p các l p vào b nh h n truy xu t trư c khi n p vào h th ng. Chúng ki m tra xem bytecode m b o các qui t c an toàn trư c khi th c thi.8. và tuân L p th ba ư c m b o b i trình thông d ch.2. Java cung c p m t môi trư ng qu n lý th c thi chương trình. các l p trình viên ph i quét virus các t p trư c khi t i v hay th c hi n chúng. ng Java ư c thi t k như m t ngôn ng ng áp ng cho nh ng môi trư ng m . Java ư c thi t k h tr cho các ng d ng ch y trên m ng.5. Thông thư ng vi c này cũng không lo i tr hoàn toàn virus. 2. Ngoài ra chương trình khi th c thi có kh năng tìm ki m và c các thông tin nh y c m trên máy c a ngư i s d ng mà ngư i s d ng không h hay bi t. Trư c khi có Java.2. 2. B o m t Virus là nguyên nhân gây ra s lo l ng trong vi c s d ng máy tính. d li u và các phương th c ư c óng gói bên trong l p.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Cơ ch b y l i c a Java giúp ơn gi n hóa qúa trình x lý l i và h i ph c sau l i. Chúng ch ư c truy xu t thông qua các giao di n mà l p cung c p. trình biên d ch ki m soát theo các nguyên t c c a Java.7. Và vì v y Java không ch là ngôn ng l p trình thu n tuý mà còn cung c p nhi u m c ki m soát tính an toàn khi th c thi chương trình. Nó cũng ngăn ch n không cho truy xu t thông tin bên ngoài kích thư c c a m ng b ng k thu t tràn và cũng cung c p k thu t d n rác trong b nh . h i u hành và giao di n h a. Các chương trình Java ch a r t nhi u thông tin th c thi nh m ki m soát và truy Khoa Công ngh Thông tin – ih c àL t Trang 30 . Chúng cũng cung c p gi i pháp ng b gi a các lu ng.

3. máy tr m g i yêu c u t i máy ch .3. 2. 2. Khi trang Web hi n th trong trình duy t.3. ây cũng là m t lĩnh v c m nh c a ng d ng Java.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 nh p i tư ng lúc ch . Máy o Java (JVM-Java Virtual Machine) Khoa Công ngh Thông tin – ih c àL t Trang 31 . ng d ng mobile Các ng d ng trên thi t b mobile h u h t ư c vi t b ng J2ME – m t phiên b n c a Java dành cho l p trình mobile. Các thông tin nh p xu t ư c th hi n t i d u nh c l nh. Các Java API ch y trên máy ch ch u trách nhi m x lý t i máy ch và tr l i các yêu c u c a máy tr m. các ng d ng Web. Applet là chương trình h a ch y trên trình duy t t i máy tr m.3. Applet s ư c t i v và th c thi t i trình duy t. Chúng còn có th ư c dùng x lý d li u.4. th c thi các giao d ch và thư ng ư c th c thi thông qua máy ch Web. 2. Applet ư c nhúng bên trong trang Web.6. Chúng có th là Applet hay ng d ng.3. Applets Applet là chương trình ư c t o ra s d ng trên Internet thông qua các trình duy t h tr Java như IE hay Netscape. Servlet Java thích h p phát tri n ng d ng nhi u l p. Các ki u chương trình Java Chúng ta có th xây d ng các lo i chương trình Java như sau: 2. X lý Form c a HTML là cách s d ng ơn gi n nh t c a Servlet. i u này cho phép kh năng liên k t ng mã.5. ng d ng th c thi qua dòng l nh Các chương trình này ch y t d u nh c l nh và không s d ng giao di n h a. B n có th dùng Java xây d ng Applet. 2. Các Java API ch y trên máy ch này m r ng kh năng c a các ng d ng Java API chu n.3. Máy ch x lý và g i k t qu tr l i máy tr m. nhưng Applet b gi i h n b i tính b o m t. 2.2.4.1. Các ng d ng trên máy ch này ư c g i là các Servlet. ng d ng h a c l p cho phép ngư i dùng tương tác qua ây là các chương trình Java ch y giao di n h a.3. ho c Applet t i máy ch . 2. 2.3. ng d ng cơ s d li u Các ng d ng này s d ng JDBC API k t n i t i cơ s d li u.

class Máy o Java (JVM) Kh năng cơ ng c a file . Nó thi t l p các l p tr u tư ng cho: Ph n c ng bên dư i. Khi JVM th c thi mã. có th thay i n i dung thanh ghi i hư ng th c thi c a chương trình.1.class cho phép các chương trình Java vi t m t l n nhưng ch y b t kỳ âu. Các tham s truy n cho phương th c.class Các ph n t t o cho Java thành công là: Ð nh nghĩa Bytecode C u trúc c a file . M t khái ni m thông d ng khác trong Java là trình biên d ch “Just In TimeJIT”. Các bi n c c b . Các trình duy t thông d ng như Netscape hay IE u có JIT bên trong tăng lưu Khoa Công ngh Thông tin – ih c àL t Trang 32 . mã ã biên d ch. Kh năng này có ư c nh s giúp c a máy o Java. Các toán h ng c a mã bytecode.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Máy o Java là trái tim c a ngôn ng Java. m t thanh ghi c c b có tên “Program Counter” ư c s d ng. Ngư i ta có th xem nó như m t h i u hành thu nh . Máy o t o ra m t môi trư ng bên trong th c thi các l nh b ng cách: N p các file . Máy o Java là gì ? Máy o là m t ph n m m d a trên cơ s máy tính o. Thanh ghi này tr t i l nh ang th c hi n. 2. Trình biên d ch chuy n mã ngu n thành t p các l nh c a máy o mà không ph thu c vào ph n c ng c th . Trong trư ng h p thông thư ng thì t ng l nh m t n i ti p nhau s ư c th c thi. Nó có t p h p các l nh logic xác nh các ho t ng c a máy tính. Trình thông d ch trên m i máy s chuy n t p l nh này thành chương trình th c thi.4.class Qu n lý b nh D n “rác” Vi c không nh t quán c a ph n c ng làm cho máy o ph i s d ng ngăn x p tr các thông tin sau: Các “Frame” ch a các tr ng thái c a các phương th c. h i u hành. Khi c n thi t. Môi trư ng Java bao g m năm ph n t sau: Ngôn ng Ð nh nghĩa Bytecode Các thư vi n l p Java/Sun Máy o Java (JVM) C u trúc c a file .

M t tr n b ng phương th c c a i tư ng. m ng ho c h i u hành.3. M t heap (heap tĩnh) ch a các nh nghĩa v l p. Chú ý r ng khi “compaction” c n c p nh t l i giá tr con tr c a c u trúc “handle”. h th ng file c c b . b nh ư c theo dõi qua các danh sách sau: Danh sách các vùng nh chưa s d ng. Công vi c này không ư c trình d n rác th c thi. Khi có yêu c u v b nh .class có nguy cơ gây hư h ng n b nh . Java s d ng hai heap riêng bi t cho c p phát vùng nh tĩnh và vùng nh ng. 2. N u không tìm th y kh i b nh nào phù h p (v kích c ) thì trình d n rác s ư c kích ho t khi h th ng r i. “Handle” là c u trúc bao g m hai con tr . “Coalescing” là k thu t khác cũng gi m thi u vi c phân m nh c a heap b ng cách gom l i các vùng nh chưa dùng li n nhau thành m t kh i l n hơn. Quá trình ki m tra s xem xét t ng th tính nguyên v n c a m t l p. Hàm này s d n d p các tài nguyên bên ngoài như các file ang m . Còn k thu t s p x p l i các ph n ã dùng t o vùng nh chưa s d ng l n hơn g i là “Compaction”. Danh sách các vùng ã c p.4. K thu t c p phát này gi m t i thi u vi c phân m nh c a heap. Nhưng khi òi h i b nh c p bách thì trình d n rác s ư c kích ho t ngay. trình qu n lý heap trư c tiên ki m tra danh sách b nh chưa c p phát.4. Heap còn l i (heap ng) ư c chia làm hai ph n ư c c p phát theo hai chi u ngư c nhau. Khoa Công ngh Thông tin – ih c àL t Trang 33 . con tr th hai tr n chính i tư ng ó.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 t c th c thi chương trình Java. M c ích chính c a JIT là chuy n t p l nh bytecode thành mã máy c th cho t ng lo i CPU. C++ hay Pascal ngư i l p trình s d ng phương pháp tr c ti p c p phát và thu h i b nh vùng “Heap”. qu n lý Heap. 2. Trình d n rác g i phương th c finalize c a i tư ng trư c khi d n d p i tư ng.class không thu c h i u hành v i m c ích giám sát s tuân th các nghi th c phát hi n các file .class Vi c ki m tra ư c áp d ng cho t t c các file . Thu t toán d n rác có th áp d ng cho các i tư ng t trong heap ng. M t bên ch a i tư ng còn m t bên ch a con tr tr n i tư ng ó. Qu n lý b nh và d n rác Trong C. Quá trình ki m tra file . các h ng và danh sách các phương th c. Các l nh này s ư c lưu tr và s d ng m i khi g i n. Trình “Class Loader” s ki m tra t t c các file . Heap là vùng b nh l n ư c phân chia cho t t c các lu ng.class s p ư c n p lên b nh m b o tính an toàn. h th ng xem xét trong danh sách chưa c p phát l y ra kh i b nh u tiên có kích c sát nh t v i lư ng b nh c n thi t . Khi có m t yêu c u v c p phát b nh .2.

class m b o các file này không vi ph m các nguyên t c v s nh t quán ng nghĩa.2.3. Các thu c tính v l p.class bao g m ba ph n logic là: Bytecode Thông tin v Class như phương th c. Ba phiên b n chính là: Java 1. M c th tư s ki m tra trong th i gian th c thi giám sát các vi c còn l i mà ba bư c trên chưa làm.class ư c xem xét riêng r trong các b ng sau: B ng Field ch a các thu c tính B ng Method ch a các hàm c a class B ng Interface và và các h ng s .1 – Ðưa ra năm 1997 v i nhi u ưu i m hơn phiên b n trư c. Ví d như liên k t t i các l p khác trong khi th c thi. l p s ư c kh i t o. hay ki m tra quy n truy xu t.4. N u m i i u th a mãn.S d ng l n u vào năm 1995 Java 1. phát tri n các ng d ng Java chuyên nghi p trên các môi trư ng Eclipse. … JDK ch a các công c sau: Trình biên d ch. Quá trình ki m tra file . giao di n và các giá tr h ng s ư c t p h p trong quá trình biên d ch.class ư c th c hi n b n m c: M c u tiên th c hi n vi c ki m tra cú pháp m b o tính c u trúc và tính toàn v n cú pháp c a file .3 (JDK 1. 'javac' Cú pháp: javac [options] sourcecodename.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 File . bi u th c.class ư c n p. 2. kh năng truy xu t sai ch s c a m ng.5 – Năm 2005 Java 6 – Năm 2007 JDK bao g m Java Plug-In. Ngoài ra. Các thông tin c a file . M c th ba s ki m tra bytecode. B công c phát tri n JDK (Java Development Kit) Sun Microsystem ưa ra ngôn ng l p trình Java qua s n ph m có tên là Java Development Kit (JDK).0 . Jbuilder. 1998) Java 2 SDK v 1.2 (JDK 1. NetBean.4 (JDK 1. M c th hai s xem xét file . 2002) Java 5 SDK v 1. 2000) Java 2 SDK v 1.java Khoa Công ngh Thông tin – ih c àL t Trang 34 . chu i.5. Java 2 SDK v 1. chúng cho phép ch y tr c ti p Java Applet hay JavaBean b ng cách dùng JRE thay cho s d ng môi trư ng th c thi m c nh c a trình duy t. Trong bư c này s ki m tra s thông s truy n vào phương th c.

… Chúng cũng ch a các l p làm nhi m v x lý l i và các l p vào ra chu n.Debug. Khoa Công ngh Thông tin – ih c àL t Trang 35 . Các Applet nhúng trong trang Web hay ch y trong appletviewer u th a k t l p này. java. Cú pháp: javap [options] classname Công c sinh tài li u. Chúng ch a các l p dùng t o giao di n h a. 'javadoc' Ti n ích này cho phép ta t o ra t p HTML d a trên các l i gi i thích trong mã chương trình (ph n n m trong c p d u /*. 'appletviewer‘ Cú pháp: appletviewer [options] url 2.java Chương trình xem Applet . Java Core API Nhân Java API ư c thay th b i phiên b n JFC 1.awt Package này ươ c g i là Abstract Window Toolkit (AWT). GridBagLayout. java.applet ây là package nh nh t ch a m t mình l p Applet... 'jdb‘ Cú pháp: jdb [options] sourcecodename.. s nguyên. Chúng bao g m các ki u d li u cơ b n như ký t . các phương th c c a m t l p.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Trình thông d ch.java Hay jdb -host -password [options] sourcecodename.lang Ch a các l p quan tr ng nh t c a ngôn ng Java. 'javap' javap d ch ngư c bytecode và in ra thông tin v các thu c tính (các trư ng).6. Graphics. M t s l p bên trong là: Button. */). M t s package thông d ng: java. Cú pháp: javadoc [options] sourcecodename.1. M t vài l p quan tr ng khác như String hay StringBuffer.java Chương trình tìm l i . 'java' Cú pháp: java [options] classname Trình d ch ngư c.

java.util Package này cung c p m t s công c h u ích. giao di n dùng chu t. truy xu t cơ s 2. Hashtable.io Cung c p thư vi n vào ra chu .. bàn phím. i tư ng trên máy khác và s java. Chúng cho phép t o và qu n lý dòng d li u theo nhi u cách.. x lý các s ki n trong chương trình như java.net Cung c p kh năng giao ti p v i máy t xa.event Ch a các l p. SQL Server. dùng d li u quan h như Oracle. mã hóa và m b o tính an toàn c a d li u java. t o giao di n ng d ng h a Kéo và th Khoa Công ngh Thông tin – ih c àL t Trang 36 . Stack. Chúng cho phép t o d ng các i tư ng ó trên máy c c b ..security Cung c p các công c c n thi t truy n gi a máy tr m và máy ch .rmi Công c g i hàm t xa. Cho phép t o và k t n i t i Socket ho c URL. Các c trưng m i c a Java 2 Các phiên b n trư c c a Java ch thích h p vi t các ng d ng nh trên Web hơn là xây d ng các ng d ng ch y trên m ng m nhi m toàn b các công vi c c a c a m t công ty ho c h th ng phân tán. Vector và StringTokenizer. Java 2 áp ng yêu c u này.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 java. M t vài l p c a package này là: Date.awt.sql Package này ch a Java DataBase Connectivity (JDBC). M t vài c trưng c a chúng là: Swing ây là m t t p các l p và giao di n m i dùng "Look and Feel". java. java.7..

RMI c a RMI (Remote Method Invocation) cho phép các ng d ng g i các phương th c i tư ng t i máy khác và cho phép giao ti p v i chúng.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 ây là kh năng di chuy n thông tin gi a các ng d ng hay các ph n khác nhau c a chương trình. Java sound T p h p hoàn toàn m i các l p c trưng v âm thanh c a Java. Java 2D API Ch a t p h p các l p h tr cho nh và h a hai chi u. Khoa Công ngh Thông tin – ih c àL t Trang 37 .

..hi u m t dòng các l nh máy tính tr u tư ng.... applet là chương có th nhúng vào trang Web hay ch y b ng Java AppletViewer.....s d ng JDBC API k t n i cơ s d li u..... 6.......... Bài t p 1..là chương trình Java ch y c l p.. Cài t Java 2.. L p .. úng/Sai úng/Sai 2............. 4... Java là ngôn ng có ki u d li u ch t ch .... Coalescing và Compaction là gì? 7. 3...... 5. ..... ph i là l p cha c a các applet.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Tóm t t Java là ngôn ng biên d ch và thông d ch Các c trưng c a Java: ơn gi n Hư ng i tư ng c l p ph n c ng M nh B om t Phân tán a lu ng ng Máy o Java Java Development Kit Các c trưng m i c a Java 2 Ki m tra s ti n b 1......... ... ư c s d ng d ch file mã ngu n ....... .. B n có th vi t các chương trình d ng th t c b ng Java.... 2....java... 8...... Gõ các l nh sau t i d u nh c và li t kê các tham s khác nhau c a chúng: javac java Khoa Công ngh Thông tin – ih c àL t Trang 38 ............ và s d ng giao di n h a ngư i s d ng nh p d li u... L nh .....

Chương trình còn có th bao g m các ghi chú.*. Gói này dùng t o các i tư ng GUI. t ng khai báo l p ư c ti n hành sau l nh nh p. awt. t t c các mã. M i l nh u ư c k t thúc b i d u ch m ph y “. chương trình ư c chia thành các l p ho c các gói riêng bi t. // Khai báo bi n v i các d u ph y gi a các bi n void Show(){ // Method body statement (s). Nh ng l p này có th m r ng thành các l p khác. M i chương trình có th có nhi u hơn m t l nh nh p. Dư i ây là m t ví d v l nh nh p: import java. // K t thúc b i d u ch m ph y } } Khoa Công ngh Thông tin – ih c àL t Trang 39 . Khi d ch. D ng cơ b n c a m t l p ư c xác class classname{ nh như sau : /* ây là dòng ghi chú*/ int num1. Thông tin này ư c ch ra v i s tr giúp c a l nh nh p “import”. B i v y. làm ư c vi c này. L nh này nh p gói ‘awt’.”. M t chương trình ơn gi n có th ch có m t vài l p. Ký hiêu “*” ch t t c các l p thu c gói này. ây java là tên c a thư m c ch a gói ‘awt’.1 C u trúc m t chương trình Java Ph n u c a m t chương trình Java xác nh thông tin môi trư ng. Trong java. Nh ng gói này s ư c ch d n trong chương trình. bao g m các bi n và cách khai báo nên ư c th c hi n trong ph m vi m t l p.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Chương 3 N N T NG C A NGÔN NG N i dung chính M t chương trình ơn gi n vi t b ng Java Nh ng khái ni m cơ b n v ngôn ng Java Các ki u d li u Các toán t nh d ng xu t d li u Các c u trúc l p trình cơ b n JAVA 3. chương trình d ch s t lo i b các ghi chú này. ch d n.num2.

2. } } Khoa Công ngh Thông tin – ih c àL t Trang 40 . Chương trình biên d ch s xác nh các tên này là duy nh t trong chương trình. có ý nghĩa i v i trình biên d ch c a m t chương trình Java. nh nh t. các ký t ho c các giá tr Boolean.out..2 Chương trình JAVA u tiên Chúng ta hãy b t u t chương trình Java c i n nh t v i m t ng d ng ơn gi n. ‘import’ là nh ng t khoá. “This is a sentence” là nh ng nguyên d ng. M i nh danh ch ư c ch a hai ký t c bi t này là d u g ch dư i (_) và d u $ . M t vài ký t phân cách c a java ư c ch ra dư i ây: { }.println(“My first program in Java”). 31. M t chương trình java là t p h p c a các “token”. d u $ ho c m t ký t ư c g ch dư i. ‘A’.java” class First{ public static void main(String args[]){ System. m t ký t g ch dư i (_) hay d u $.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 “Token” là ơn v riêng l . Nguyên d ng (literals): Là các giá tr không i trong chương trình. tính toán ư c th c hi n trên d li u ho c các i tư ng. Các ký t ti p theo có th là ch cái. ch s . Ngoài ra không ư c phép s d ng b t kỳ ký t c bi t nào khác. Ví d 21. Ký t phân cách (separator): Thông báo cho trình biên d ch vi c phân nhóm các ph n t c a chương trình. Các nh danh không ư c ch a d u cách “ ” (space). Khi khai báo nh danh c n lưu ý các i m sau ây: M i nh danh ư c b t u b ng m t ch cái. Các “token” ư c chia thành năm lo i: nh danh (identifiers): Dùng th hi n tên bi n. Chương trình sau ây cho phép hi n th m t thông i p: Chương trình 3. Chúng ta s th o lu n chi ti t chương này. phương th c. ho c các l p.1 // This is a simple program called “First. Java có m t t p l n các toán t . chu i. Ví d ‘class’. Nguyên d ng có th là các s . 3. T khoá/t d phòng (Keyword/Reserve Words): M t s nh danh ã ư c Java xác nh trư c. Ngư i l p trình không ư c phép s d ng chúng như m t nh danh. Các toán t : Các quá trình ánh giá.

Chương trình biên d ch Java ch p nh n ph n m r ng . ta s d ng trình biên d ch java. Trình biên d ch s b qua dòng thuy t minh này.1\bin>javac First. uv it Khoa Công ngh Thông tin – ih c àL t Trang 41 . chương trình th c thi ư c ta c n dùng trình thông d ch “java interpreter” L nh ư c th c hi n như sau: C:\jdk1. t o m t l p thêm ta b t khoá ‘class’. class First Tên l p nói chung nên b t u b ng ch in hoa. Trong Java.java Trình d ch java t o ra file First. Trình biên d ch xác nh tên c a file ngu n t i dòng l nh như mô t dư i ây: C:\jdk1. Các ngo c này ánh d u b t u và k t thúc m t kh i l nh.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Tên file óng vai trò r t quan tr ng trong Java. Lo i thuy t minh này có th b t u v i /* và k t thúc v i */ /*This is a comment that extends to two lines*/ / *This is a multi line comment */ Dòng k ti p khai báo l p có tên ‘First’. Ví d tên file ‘First’ và ‘first’ là hai file khác nhau. Java còn h tr thuy t minh nhi u dòng. k n là tên l p (và cũng chính là tên file). B i v y tên l p và tên file ph i trùng nhau. mã l nh ph i n m trong các l p.2.class ch a các mã “bytecodes”.1\bin>java First K t qu s hi n th trên màn hình như sau: My first program in Java Phân tích chương trình u tiên // This is a simple program called “First. M t nh nghĩa l p n m tr n v n n m gi a hai ngo c móc m ({) và óng (}).java.2. Nh ng mã này chưa th th c thi ư c. T khoá ‘class’ khai báo nh nghĩa l p.java” Ký hi u “// ” dùng thuy t minh dòng l nh. Java phân bi t ch hoa và ch thư ng (casesensitive). ‘First’ là tên c a l p. biên d ch mã ngu n.

nó cho phép truy nh p vào h th ng và ‘out’ là m t chu i xu t ư c k t n i v i d u nh c (console). Phương th c này cho phép hi n th chu i ư c truy n vào ra ‘System. Trong trư ng h p này.println(“My first program in Java”). Program 3. Truy n i s trong dòng l nh Các mã sau ây cho ta th y các tham s (argument) c a các dòng l nh ư c ti p nh n như th nào trong phương th c ‘main’.out’. T khoá ‘void’ thông báo cho máy tính bi t r ng phương th c s không tr l i b t c giá tr nào khi th c thi chương trình. Nh ng bi n này là các tham s c a phương th c. ‘String args[]’ là tham s dùng trong phương th c ‘main’. Chúng ta s tìm hi u t ng t trong l nh này. b n copy c a phương th c main ư c phép t n t i trên b nh . Phát bi u ‘println()’ t o ra m t c ng xu t (output). Dòng l nh này hi n th chu i “My first program in Java” trên màn hình. Vì lý do này phương th c main c n ph i là tĩnh (static). Các l nh ư c th c thi trong ‘main’ c n ư c vi t trong kh i này. Nó không ph thu c vào các th hi n c a l p ư c t o ra. T khoá ‘public’ là m t ch nh truy xu t. ây ‘System’ là m t l p ã nh trư c. Các bi n s trong d u ngo c ơn nh n t ng thông tin ư c chuy n vào ‘main’. System. phương th c v n ư c th c hi n v i các d li u r ng – không có gì trong d u ngo c ơn. ‘args[]’ là m t m ng ki u “String”. Các i t các dòng l nh ư c lưu vào m ng. th m chí không có m t th hi n c a l p ó ư c t o ra. Nhưng trong trư ng h p này. Th m chí ngay khi không có m t thông tin nào ư c chuy n vào ‘main’. Phương th c ‘main()’ s th c hi n m t s tác v nào ó. T khoá ‘static’ cho phép main ư c g i t i mà không c n t o ra m t th hi n (instance) c a l p. Mã n m gi a d u ngo c móc ({ }) c a ‘main’ ư c g i là ‘method block’.2 class Pass{ public static void main(String parameters[]){ Khoa Công ngh Thông tin – ih c àL t Trang 42 . Nó cho bi t thành viên c a l p có th ư c truy xu t t b t c âu trong chương trình.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 public static void main(String args[ ]) ây là phương th c chính. b i v y JVM có th truy xu t phương th c này.out. nó là i m m c mà t ó t t c các ng d ng Java ư c kh i ng. T t c các ng d ng java u s d ng m t phương th c “main” này. i u này r t quan tr ng vì JVM trư c tiên g i phương th c main th c thi chương trình. t ây chương trình b t u vi c th c thi c a mình. phương th c “main” ư c khai báo ‘public’.

out.println(parameters [2]). System. có th hi u m t chu i ư c k t thúc. System. Nhưng thông thư ng m t chu i ư c k t thúc khi g p d u nháy kép.println(parameters [0]).println(“This is what the main method received”).println(parameters [1]). Hình v dư i ây s mô t ì u này. Hình 3. Hình 3. System.1 Truy n tham s t dòng l nh Khi g p m t d u tr ng (space).2 Truy n tham s là chu i Khoa Công ngh Thông tin – ih c àL t Trang 43 .out. } } Hình v dư i ây th hi n s th c thi c a chương trình.out.out.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 System.

bi n. Khai báo l p Khi ban khai báo m t l p. Chúng ta hãy b t u v i nh ng khái ni m n n t ng c a ngôn ng Java như l p và phương th c. Khi xác nh m t l p.3 Cơ b n v ngôn ng Java Chương trình là t p h p nh ng hành ng ư c s p x p theo m t tr t t nh t nh máy tính có th th c hi n ư c. : met_datatype methodname(parameter_list) : Khoa Công ngh Thông tin – ih c àL t Trang 44 . nh d li u và các phương th c c a l p Cú pháp: class classname{ var_datatype variablename. trong khi ó m i i tư ng là m t th hi n th c s . toán t và c u trúc i u khi n. các th hi n (instance) c a l p này t n t i bên trong th hi n c a m t l p che ph chúng. B n còn có th nh nghĩa m t l p bên trong m t l p khác.4 Các l p i tư ng trong Java Trong ngôn ng Java. l p là m t ơn v m u có ch a các s li u và các mã liên quan n m t th c th nào ó. Giá tr n p vào bi n có th nh hư ng cho chương trình ho t ng. Chúng hình thành n n t ng c a toàn b ngôn ng Java. Nó chi ph i vi c truy nh p n các thành ph n c a th hi n bao ph chúng. Bi n là các giá tr có th ư c thay i ph thu c vào i u ki n ho c thông tin ư c nh p vào máy tính. Chương trình có th ư c coi như m t tài li u hư ng d n có ch a các thành ph n ư c g i là các bi n và danh sách các hư ng d n ư c g i là l nh. M i l p xác nh m t th c th . Ki u d li u là m t t p các d li u v i các giá tr có các c tính ã ư c xác nh trư c. Lo i d li u m i này ư c s d ng xác nh các bi n mà ta thương g i là “ i tư ng”. ây là l p x p l ng nhau. D li u ho c mã ngu n ư c vi t ra luôn t bên trong m t l p. i tư ng là các th hi n (instance) c a l p. 3. T t c các i tư ng u thu c v m t l p có chung c tính và hành vi. Các phát bi u d ng i u khi n quy t nh vi c th c thi t ng ph n trong chương trình. Chúng còn quy t nh tr t t vi c th c thi chương trình và s l n chương trình c n th c hi n.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 3. ki u d li u. Các l nh này nói cho máy tính bi t c n ph i làm gì v i các bi n. b n c n xác ó. b n th c ch t xác nh m t ki u d li u. Các bi n ư c xác nh nh các ki u d li u.

Tên c a bi n met_datatype . i tư ng c a l p này s lưu l các chi ti t cá nhân cu khách hàng.Tên c a l p var_datatype .Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 } Trong ó: class .ki u d li u c a bi n variablename .T khoá xác nh l p classname .3 mô t b ng hình nh l p “Khách hàng”.Ki u d li u tr v c a phương th c methodname . Nh ng c i m c a l p xác nh các kho n m c d li u ư c lưu c t. và các hành vi xác nh các phương th c ư c tính n. Hình 3.Tên c a phương th c parameter_list – Các tham s ư c c a phương th c Hình 3.3: Mô t b ng hình nh l p “Khách hàng” Trong l p “Khách hàng”. các kho n m c d li u bao g m: Tên khách hàng a ch Ki u xe Tên ngư i bán hàng Các phương th c g m: Nh p các chi ti t c a khách hàng In các hoá ơn Khoa Công ngh Thông tin – ih c àL t Trang 45 .

ó là các l p nonstatic.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Các l p l ng nhau Vi c nh nghĩa m t l p bên trong m t l p khác ư c g i là l p l ng (nesting). d li u ư c phân l p theo các tiêu chí khác nhau ph m i tiêu chí.Inner obj=new Outer(). ki u th hi n riêng bi t. song không th ngư c l i. L p ki u không tĩnh (non static) L p bên trong (inner) quan tr ng nh t c a các l p l ng. L p l ng ch n m trong ph m vi l p bao quanh nó. L p tĩnh có th truy nh p vào các thành viên c a l p ph nó thông qua m t i tư ng. và k t qu Trong môi trư ng tính toán. L p bên trong có th truy nh p t t c các thành viên c a l p bao nó. nh nghĩa l p bên trong ch có th xác nh ư c trong ph m vi l p ngoài cùng. o n chương trình sau mô t l p ư c t o l p ra sao và s d ng như th nào: class Outer{ //Outer class constructor class Inner{ //Inner class constructor } } Cú pháp sau ây cho phép truy nh p vào l p bên trong Outer. 3. 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 các lo i máy b t lu n âu ch y chương trình Java. Chúng ư c h tr trên t t c các n n. lý d li u u vào và xu t d li u k t qu u rara.Có hai lo i l p l ng: L p ki u tĩnh (static) L p ki u tĩnh ư c nh nghĩa v i t khoá static. B i v y các chương trình Java không c n ph i thay i khi ch y trên các n n khác nhau.new Inner(). Ví d .5 Ki u d li u Các ng d ng luôn x u vào. Do v y l p tĩnh thư ng ít ư c s d ng. c a các quá trình tính toán u liên quan n d li u. u ra. d li u có m t tính ch t xác nh và có m t Java cung c p m t vài ki u d li u. thu c vào b n ch t c a nó. Trong Java ki u d li u ư c chia thành hai lo i: Khoa Công ngh Thông tin – ih c àL t Trang 46 .

79769313486231570E+308 1.483.Ví d s lư ng ngư i lao ng.79769313486231570E+308 Ki u double dùng lưu các s n th p phân có giá tr l n n +1.648.036’854.036’854.223.40292347E+38 Ví d : giá thành s n ph m -1.483.036’854. ‘\u0000’ to ’u\ffff ’ Ki u Char s d ng lưu tên ho c các d li u ký t .Ví d dân s c a m t nư c -3. -2. Chúng ư c s d ng r ng rãi khi x lý m t file văn b n.648 n Ki u int dùng lưu m t s có +2.808 Ki u long ư c s d ng lưu n m t s c giá tr r t l n n +9.Ví d tên ngư i lao ng.147.223.Ví d t ng lương mà công ty ph i tr cho nhân viên.79769313486231570E+308 Ví d giá tr tín d ng c a ngân hàng nhà nư c.372. “True” ho c “False” D li u boolean dùng lưu các giá tr “ úng” ho c “sai” Ví d : Ngư i lao ông có áp ng ư c yêu c u c a công ty hay không ? -32768 n 32767 Ki u short dùng lưu các s có giá tr nh dư i 32767.40292347E+38 n Ki u float dùng lưu các s +3. Ki u d li u tham chi u Trong Java có 3 ki u d li u tham chi u Khoa Công ngh Thông tin – ih c àL t Trang 47 .372.808 .648 giá tr l n n 2.372. -9.40292347E+38 th p phân n 3.775.1: Ki u d li u nguyên thu Ki u dài 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 hình dùng lưu tr m t giá tri b ng m t byte.775.147.775.808 9.483.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Các ki u d li u nguyên th y (primitive) Các ki u d li u tham chi u (reference) D li u ki u nguyên thu B ng 3.223.147.

896751f. C++. x lý tình hu ng này. tên c a nó và giá tr ban u ư c gán cho bi n (không b t bu c).Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Ki u d li u M ng (Array) L p (Class) Giao di n (Interface) Mô t T p h p các d li u cùng ki u. Khi khai báo bi n. o n mã sau ây th c hi n phép c ng m t giá tr d u ph y giá tr nguyên (integer). luôn nh r ng Java phân bi t ch thư ng và ch in hoa (case -sensitive). Lúc này m t ki u d li u s chuy n i sang ki u khác. Bi n i theo hư ng l i thu nh l i làm m t thông tin v l n c a giá tr ư c chuy n i. Sau ó nó ư c c ng v i 10 và k t qu là giá tr 44 ư c lưu vào b.Bi n i theo hư ng n i r ng chuy n m t giá tr sang m t d ng khác có r ng phù h p hơn so v i nguyên b n. Java s d ng tính năng ép ki u (type casting) c a các ph n m m trư c ó C. ví d trên giá tr th p phân sau d u ph y s b m t. M i bi n ư c khai báo trong m t kh i chương trình ch có tác ng trong ph m vi kh i ó. b n c n th n tr ng vì khi i u ch nh d li u có th b sai giá tr . u tiên giá tr d u ph y ng c ư c i thành giá tr nguyên 34. khai báo nhi u bi n ta s d ng d u ph y phân cách các bi n. ng (float) v i m t float c=34. 3.Ví d : l p “Sinhviên” ch a toàn b các chi ti t c a m t sinh viên và các phương th c th c thi trên các chi ti t ó. S n i r ng là quá trình làm tròn s theo hư ng n i r ng không làm m t thông tin v l n c a m i giá tr . Cú pháp: Khoa Công ngh Thông tin – ih c àL t Trang 48 .6 Các bi n Các ng d ng s d ng các bi n lưu tr các d li u c n thi t ho c các d li u ư c t o ra trong quá trình th c thi chương trình. Vi c khai báo m t bi n bao g m 3 thành ph n: ki u bi n.2: Ki u d li u tham chi u Ép ki u Có th b n s g p tình hu ng khi c ng m t bi n có d ng integer v i m t bi n có d ng float. không có ý nghĩa và không ư c phép truy nh p t bên ngoài kh i. Là m t l p tr u tư ng ư c t o ra cho phép cài t a th a k trong Java. Các bi n ư c xác nh b i m t tên bi n và có m t ph m vi tác ng. Ví d : tên sinh viên T p h p các bi n và các phương th c. Khi s d ng tính ch t này. B ng 3. Chúng không ư c th c hi n khi th c hi n phép gán. Int b = (int)c +10. Ph m vi tác ng c a bi n ư c xác nh m t cách rõ ràng trong chương trình.

S ph n t b t u v i 0 cho ph n t u. M i l n ta khai báo kích thư c c a m t m ng.’B’.khai báo m ng ký t có tên ch char ch[] = new char [10 ]. giá tr m c nh ph thu c vào ki u d li u. khai báo m t bi n nguyên (int) có tên là counter dùng là 1. M ng có th Cách khai báo Ch ơn thu n khai báo Khai báo và t o m ng ư c khai báo b ng ba cách : Mô t Ch ơn thu n khai báo m ng Cú pháp Datatype identifier[] Datatype identifier[] =new datatype [size ] Ví d char ch[ ]. Khai báo m ng M ng ư c dùng lưu tr các kho n m c cùng ki u d li u li n k nhau trong b nh . Java có nh ng yêu c u h n ch t tên bi n mà b n có th gán giá tr vào.value2…valueN }. Cũng như các bi n.3 Khai báo m ng xác nh tên và s ph n t c a m ng ta c n xem xét các ph n t m ng. N u không.’D’ }. Khoa Công ngh Thông tin – ih c àL t Trang 49 .Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Datatype indentifier [=value] [.Khai b áo m t m ng ch và lưu tr 10 ký t char ch [] = {‘A’. Nh ng h n ch này cũng gi ng các h n ch khi t tên cho các nh danh mà ta ã th o lu n các ph n trư c c a chương này. Ví d : n u ki u d li u là nguyên thì giá tr m c nh ban u s là 0. indentifier[=value]… ].c p phát t o b nh cho nó và gán các giá tr ban u cho các ph n t c a m ng Datatype identifier[] = {value1. ta có th gán các giá tr vào m ng t i các ph n t ư c t o ra trong m ng. Java s gán giá tr m c nh vào t t c các ph n t c a m ng. D li u trên m ng có th là ki u d li u nguyên thu ho c i tư ng.’C’.ki n Khai báo t o và kh i m ng. khai báo m ng ch và lưu 4 ch cái ki u ký t Khai báo và c p phát b nh cho các ph n t m ng s d ng toán t “new’ Khai báo. nó s không th thay i.1 cho ph n t th hai và c ti p như v y. ta có th th c hi n phát bi u sau ây: lưu giá tr ban u int counter = 1. B ng 3.

method_name: Tên c a phương th c parameter_list: Ch a tên c a tham s ư c s d ng trong phương th c và ki u d li u. t thu c tính cho phương th c.7 Phương th c trong m t l p Phương th c xác nh giao di n cho ph n l n các l p. Phương th c ư c nh nghĩa như m t hành ng ho c m t tác v th t s c a i tư ng. phương th c main(). Chương trình 3. L p này ch a hai phương th c là: show() và main(). Giá tr c a x ư c thay i dùng cho cho i tư ng th hai. Trong khi ó Java cho phép b n nh nghĩa các l p mà không c n phương th c.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 3. modifier: Cho phép b n datatype: Ki u d li u mà phương th c tr v . Phương th c show() hi n th m t giá tr c a bi n x. hai thí d c a i tư ng thu c l p Temp ư c khai báo.3 class Temp{ static int x=10. i tư ng th nh t g m giá tr m c nh c a bi n x. Nó còn ư c nh nghĩa như m t hành vi mà trên ó các thao tác c n thi t ư c th c thi. B n c n nh nghĩa phương th c truy c p d li u mà b n ã lưu trong m t l p. C hai phương th c u có kh năng truy c p bên ngoài l p khi chúng ư c khai báo như public. Nó ư c hi n th khi ta g i phương th c show() l n th hai. ki u d li u tr v ư c nh nghĩa như ki u void. D u ph y ư c dùng phân cách các tham s .//variable public static void show()/*method*/{ Khoa Công ngh Thông tin – ih c àL t Trang 50 . Cú pháp access_specifier modifier datatype method_name(parameter_list){ //body of method } Trong ó: access_specifier: Ch nh truy c p vào phương th c. ki u d li u có th là void. Ví d khai báo phương th c trong m t l p o n mã sau ây nh nghĩa l p Temp ch a m t giá tr nguyên (int). N u không có m t giá tr nào ư c tr v . N u chúng không tr v m t giá tr nào. Nó ư c hi n th ngay khi g i phương th c show() l n u tiên.

Java cung c p các ch nh truy xu t sau ây: Công c ng (Public): Phương th c có ch nh truy xu t public có th ư c nhìn th y t m i gói ho c m i l p. Lo i phương th c này ư c s d ng trong các l p k th a. t1.x=20. ng b (synchronized): S d ng v i phương th c trong quá trình th c thi threads. Tr u tư ng (abstract): Ng ý r ng phương th c không có m t mã (code) và nó s ư c b sung các l p con (subclass).//method call Temp t1=new Temp(). Riêng tư (Private): Phương th c riêng tư ch có th ư c truy c p nh phương th c công c ng itrong cùng m t l p. Khoa Công ngh Thông tin – ih c àL t Trang 51 . } public static void main(String args[]){ Temp t = new Temp().out. T nhiên (native): Ch ra r ng ph n thân c a phương th c ư c vi t trên các ngôn ng khác Java ví d C. } } Các ch nh truy xu t c a phương th c Các ch nh truy xu t dùng gi i h n kh năng truy nh p vào m t phương th c. ho c t i các gói khác nhau có th truy c p các phương th c la i này. K t thúc (final): Phương th c không th ư c th a k ho c ghi è (Overridden). Nó cho phép ch m t thread ư c truy c p vào kh i mã t i m t th i i m.show(). Java cung c p các b nghĩa sau: Tĩnh (static): phương th c có th ư c g i mà không c n n i tư ng.show().// object 1 t.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 System. Nó ch ư c s d ng i v i các d li u và các phương th c tĩnh khác. Các b nghĩa phương th c Các b nghĩa phương th c cho phép ta thi t l p các thu c tính c a phương th c. B o v (Protected): Các l p m r ng t l p hi n hành trong cùng m t gói.println(x). ho c C++.// object 2 t1.

Phương th c này cho phép m t l p t ng quát ch nh các phương th c s là phương th c chung trong các l p con. ….prinln(“Salary is : ” + salary).Ví d l p xác nh phương th c t ng quát ‘area()’. hình vuông … Phương th c n p ch ng là m t hình th c a hình trong quá trình biên d ch. double và float Phương th c ư c ghi è (overriden) là phương th c có m t l p cha cũng như các l p k th a.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Linh ho t (volatile): ư c s d ng v i các bi n thông báo r ng giá tr c a bi n có th ư c thay i vài l n khi th c thi chương trình và giá tr c a nó không ư c t vào thanh ghi. có cùng m t tên song có danh sách các tham s khác nhau. Còn phương th c ghi è là m t hình th c a hình trong quá trình th c thi. Phương th c này có th ư c hi n th c trong m t l p con tìm di n tích m t hình c th như hình ch nh t. B ng dư i ây ch ra nơi mà các b nghĩa ư c s d ng: B nghĩa public private protected abstrac final native volatile Phương th c Yes Yes Yes Bi n Yes Yes Yes L p Yes Yes (Nested class) Yes (Nested class) Yes Yes No No Yes No Yes Yes Yes No No Yes B ng 3. } Khoa Công ngh Thông tin – ih c àL t Trang 52 . o n chương trình sau mô t n p ch ng phương th c ư c th c hi n như th nào //defined once protected void perfomTask(double salary){ ……….4 S d ng các b nghĩa Phương th c n p ch ng và ghi è Nh ng phương th c ư c n p ch ng (overload) là nh ng phương th c trong cùng m t l p.Ví d phương th c swap() có th b n p ch ng b i các tham s c a ki u d li u khác như integer. System.out. S d ng vi c n p ch ng phương th c th c thi các phương th c gi ng nhau i v i các ki u d li u khác nhau.

println(“Total Salary is: ” + salary+bonus). Phương th c ghi è ư c nh nghĩa l i các l p con. • lass SupperClass // T o l p cơ b n { int a. trong khi ó ‘super’ ư c s d ng ch i tư ng l p cha. ây ta dùng t khoá “this” bi u th i tư ng hi n hành.out. o n mã sau ây mô t phương th c ghi è. } } //overloaded constructor // constuctor Khoa Công ngh Thông tin – ih c àL t Trang 53 . ….out.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 //overloaded –defined the second time with different parameters protected void performTask(double salary.println("In the super class"). int bonus){ …… System. } public void message() { System. • Phương th c ghi è không ph i là phương th c static (non-static). } Phương th c kh i t o c a l p có th ư c n p ch ng. SuperClass() { } SuperClass(int b) { a=b.

Phương th c kh i t o l p có hai lo i: Tư ng minh (explicit): B n có th l p trình nh ng phương th c kh i t o l p khi nh nghĩa l p. i u này ư c bi t dư i khái ni m ‘liên k t ng’ (dynamic binding). JVM cung c p m t phương th c kh i t o ng m nh. } public void message(){ // overiding the base class message() System.prinln(“In the sub class”). Nói chung chúng ư c dùng kh i t o các bi n thành viên 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 ó. phương th c kh i t o l p có th b n p ch ng (overload) Ví d m t phương th c kh i t o Khoa Công ngh Thông tin – ih c àL t Trang 54 .out. Phương th c kh i t o l p Phương th c kh i t o l p là m t lo i phương th c c bi t r t khác v i các phương th c thông thư ng. Gi ng như các phương th c khác. Hàm kh i t o l p th c thi như m t phương th c ho c m t ch c năng bình thư ng song nó không tr v b t c m t giá tr nào. ây ki u i tư ng ư c gán cho ‘spObj’ s ch ư c xác nh khi chương trình th c thi. } } chi u Bây gi chúng ta s t o ra m t n nó như sau: i tư ng l p cha và gán m t l p nh tham SuperClasss spObj=new SubClass(22). Nó có tên trùng v i tên c a l p. Nó không có ki u tr v . Khi t o m t i tư ng c a m t l p. Câu l nh ‘spObj. nh ng giá tr mà b n truy n vào ph i kh p v i nh ng tham s c a phương th c kh i t o (s lư ng.message()’ thu c phương th c l p c a SubClass. SubClass(int a) {//subclass constructor this.a.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 class SubClass Extends SuperClass {// derriving a class int a. th t và ki u d li u c a các tham s ) Ng m nh (implicit): Khi b n không nh nghĩa m t phương th c kh i t o cho m t l p. B n có th nh nghĩa nhi u phương th c kh i t o cho m t l p.

Chú ý r ng t khoá ‘this’ ư c s d ng tham chi u n i tư ng hi n hành c a l p. Employee (String varname. i u này liên quan n vi c th c hi n các phép toán logic. } } Phương th c kh i t o c a l p d n xu t Phương th c kh i t o c a m t l p d n xu t có tên trùng v i tên c a l p d n xu t ó. Java cung c p nhi u d ng toán t sau: Toán t Toán t Toán t Toán t Toán t Toán t s h c bit quan h logic i u ki n gán Khoa Công ngh Thông tin – ih c àL t Trang 55 .8 Các toán t M t chương trình th c t bao hàm vi c t o ra các bi n. ph c t p hơn và có th tr v giá tr . quan h và so sánh trên các bi u th c. 3.age = varage. int varage){ this. Phương th c kh i t o bao g m tên và tu i. this.name = varname. s h c. Các toán t k t h p các giá tr ơn ho c các bi u th c con thành nh ng bi u th c m i.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 o n mã sau ây nh nghĩa m t phương th c kh i t o tư ng minh cho m t l p Employee. Chương trình 3. 30). Câu l nh dùng g i phương th c kh i t o c a cha ph i là câu l nh u tiên trên phương th c kh i t o c a l p con ó. int age. } public static void main (String arg[]){ Employee e = new Employee ("Allen”.4 class Employee{ String name. Lý do là l p cha hình thành trư c khi có các l p con. Chúng ư c coi như các tham s và gán các giá tr c a chúng vào các bi n c a l p.

song các toán h ng ký t cho phép s d ng lo i toán t này. -= Ví d c+=a tương ương c=c+a Tr và gán giá tr Tr các giá tr c a toán h ng bên trái vào toán toán h ng bên ph i và gán giá tr tr v vào toán h ng bên trái. Ví d 5-3 k t qu là 2 và –10 tr v giá tr âm c a 10 Nhân Tr v giá tr là tích hai toán h ng.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Các toán t s h c Các toán h ng c a các toán t s h c ph i d ng s .Tr v giá tr t ng hai toán h ng Ví d 5+3 tr v k t qu là 8 Tr Tr v giá tr khác nhau gi a hai toán h ng ho c giá tr ph nh c a toán h ng. Các toán h ng ki u boolean không s d ng ư c. Ví d a++ tương ương v i a= a+1 Gi m d n Gi m giá tr c a bi n 1 ơn v .tương ương v i a=a-1 C ng và gán giá tr C ng các giá tr c a toán h ng bên trái vào toán h ng bên ph i và gán giá tr tr v vào toán h ng bên trái. Ví d 5*3 k t qu là 15 Chia Tr v giá tr là thương c a phép chia % Ví d 6/3 k t qu là 2 Phép l y modulo Giá tr tr v là ph n dư c a phép chia ++ -+= Ví d 10%3 giá tr tr v là 1 Tăng d n Tăng giá tr c a bi n lên 1. Ví d a-. M t vài ki u toán t ư c li t kê trong b ng dư i ây. *= Ví d c-= a tương ương v I c=c-a Nhân và gán Nhân các giá tr c a toán h ng bên trái v i toán toán h ng bên ph i Khoa Công ngh Thông tin – ih c àL t * / Trang 56 . Toán t + Mô t C ng.

p++. System.out. Khoa Công ngh Thông tin – ih c àL t Trang 57 . z=x-y. System . s=p%q.println(“x-y is ” +z).out. System. s=p+q.r=20.println(“Value of p before operation is ”+p).25. s*=r.75. System. /= Ví d c *= a tương ương v i c=c*a Chia và gán Chia giá tr c a toán h ng bên trái cho toán toán h ng bên ph i và gán giá tr tr v vào toán h ng bên trái.out. System.out. Ví d c%=a tương ương v i c=c%a B ng 3.out. System.println(“p+q is ”+s).q=12.out.z.s.5 Các toán t s h c Chương trình sau mô t vi c s d ng toán t s h c: class ArithmeticOp { public static void main(String args[]){ int p=5.println(“s*=r is ”+s).println(“Value of p after operation is ”+p).println(“p%q is ”+s). %= Ví d c /= a tương ương v i c=c/a L y s dư và gán Chia giá tr c a toán h ng bên trái cho toán toán h ng bên ph i và gán giá tr s dư vào toán h ng bên trái.y=14.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 và gán giá tr tr v vào toán h ng bên trái. double x=25.

Nó th c hi n phép tính trên hai bit có v trí tương ng trên hai toán h ng t o ra m t k t q a m i. z--.out.50. Toán t Bit d a trên cơ s i s Boolean.50 is “+z). } } u ra c a chương trình là p+q is 17 p%q is 5 s*=r is 100 Value of p before operation is 9. Ví d a=10 thì ~a=-10 Toán t AND Tr v giá tr là 1 n u các toán h ng là 1 và 0 trong các trư ng h p khác.println(“x/y is” +z). System .out.8070175438596429 Toán t bit Các toán t dang Bit cho phép ta thao tác trên t ng Bit riêng bi t trong các ki u d li u nguyên thu . M t vài d ng toán t ki u này ư c li t kê dư i ây Toán t ~ & Mô t Ph nh bit (NOT) Tr v giá tr âm c a m t s .println(“z-=2.0 Value of z after operation is 8. z=x/y.out.out.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 z-=2.println(“Value of z after operation is”+z). System. Ví d n u a=1và b=0 thì a&b tr v giá tr 0 Toán t OR | Khoa Công ngh Thông tin – ih c àL t Trang 58 . System.println(“Value of z before operation is”+z). System.0 x/y is 1.

gi nguyên d u c a s âm. B ng 3. D ch sang trái Chuy n toàn b các bít cu m t s sang trái m t v trí. K t qu c a m t bi u th c có dùng các toán t quan h là nh ng giá tr Boolean (logic “ úng” ho c “sai”). Toán h ng bên trái là s b d ch còn s bên ph i ch s v trí mà các bít c n d ch. >> << Ví d x=31 t c là 00011111 v y x>>2 s là 00000111. Toán t == Mô t So sánh b ng Toán t này ki m tra s tương ương c a hai toán h ng Ví d if (a= =b) tr v giá tri “True” n u giá tr c a a và b như nhau So sánh khác Ki m tra s khác nhau c a hai toán h ng > Ví d if(a!=b) Tr v giá tr “true” n u a khác b L n hơn Ki m tra giá tr c a toán h ng bên ph i l n hơn toán h ng bên trái hay không Ví du if(a>b) . Tr v giá tr “true” n u a l n hơn b. Ví d n u a=1và b=1 thì a^b tr v giá tr 0 D ch sang ph i Chuy n toàn b các bít cu m t s sang ph i m t v trí. gi nguyên d u cu s âm.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 ^ Tr v giá tr là 1 n u m t trong các toán h ng là 1 và 0 trong các trư ng h p khác. 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 các toán h ng là 1 và tr v 0 trong các trư ng h p khác. Các toán t quan h ư c s d ng trong các c u trúc i u khi n.6 Các toán t Bit Các toán t quan h Các toán t quan h ki m tra m i quan h gi a hai toán h ng. tr v ‘False’ Nh hơn != < Khoa Công ngh Thông tin – ih c àL t Trang 59 .ng ơc lai (nh hơn ho c b ng ). Toán h ng bên trái là s b d ch còn s bên ph i ch s v trí mà các bít c n d ch.

Tr v giá tr “true” n u a nh hơn b .println(a and b are equal”).0.0f.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Ki m tra giá tr c a toán h ng bên ph i có nh hơn toán h ng bên trái hay không Ví du if(a<b) . else System.out. ng ơc l i (l n hơn tr v ‘false’) B ng 3. if (a== b) System. ng ơc l i (l n hơn ho c b ng tr v ‘False’ L n hơn ho c b ng Ki m tra giá tr c a toán h ng bên ph i có l n hơn ho c b ng toán h ng bên trái hay không Ví du if(a>=b) .6 Các toán t quan h o n chương trình sau ây mô t vi c s d ng các toán t quan h >= <= Chương trình 3.out. ng ơc l i (nh hơn tr v ‘False’ Nh hơn ho c b ng Ki m tra giá tr c a toán h ng bên ph i có nh hơn ho c b ng toán h ng bên trái hay không Ví du if(a<=b) .6 class RelationalOp { public static void main (String args[]){ float a= 10.println(“a and b are not equal”). double b=10. Tr v giá tr “true” n u a nh hơn ho c b ng b . Tr v giá tr “true” n u a l n hơn ho c b ng b . } } K t qu chương trình s hi n th a and b are not equal Khoa Công ngh Thông tin – ih c àL t Trang 60 .

Chuy n giá tr t True sang False và ngư c l i.8 Các toán t logic n khi k t ! Các toán t i u ki n c bi t vì nó g m ba thành ph n c u Toán t i u ki n là m t lo i toán t thành bi u th c i u ki n Cú pháp : bi u th c 1?bi u th c 2: bi u th c 3. ki u d li u c n ph i ư c ki m tra. Tuy v y chúng không ph i là cùng m t ki u. các trư ng h p còn l i cho giá tr False (sai) Toán h ng ơn t NOT. Các toán t logic Các toán t logic làm vi c v i các toán h ng Boolean. M t vài toán t ki u này ư c ch ra dư i ây Toán t & Mô t Và (AND) Tr v m t giá tr “ úng” (True) n u ch khi c hai toán t có giá tr “True” Ví d : if(sciencemarks>90) AND (mathmarks>75) thì gán “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à I ^ Ví d N u age_category is ‘Senior_citizen’ OR special_category is ‘handicapped’ thì gi m giá tua l hành. Khoa Công ngh Thông tin – ih c àL t Trang 61 . Ví d : Quá trình th c thi các dòng l nh ti p t c cho thúc chương trình.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Trong chương trình trên c a và b là nh ng s có d u ph y ng. B ng 3. Giá cũng s ư c gi m n u c hai i u ki n u ư c th a mãn XOR Tr v giá tr True n u ch m t trong các giá tr là True. d ng d li u có khác nhau. B i v y khi ki m tra giá tr c a các toán h ng. a là ki u float còn b là ki u double.

9 Th t ưu tiên Thay i th t ưu tiên thay i th t ưu tiên trên m t bi u th c. 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 tiên. Th t ưu tiên c a các toán t Các bi u th c ư c vi t ra nói chung g m nhi u toán t . Toán t Các toán t ơn như +. tiêu chu n gán là “Regular” CommuterCategory=(CommuterAge>65)?”Senior Citizen”: “Regular” tr Toán t gán (=) dùng gán m t giá tr vào m t bi n.<.*=.-.<=.++. p=q=r=s=num. Th t ưu tiên quy t nh tr t t th c hi n các toán t trên các bi u th c.&. N u b n s dùng nhi u ngo c ơn l ng nhau thì toán t n m trong ngo c ơn Khoa Công ngh Thông tin – ih c àL t Trang 62 . Dòng l nh cu i cùng ư c th c hi n t ph i qua trái.!= Các toán t logic và Bit như &&. Thì giá tr trong bi n num ư c gán cho nhi u bi n trên m t dòng l nh ơn./=.>=. b n có th s d ng d u ngo c ơn. int num = 20000.>> Các toán t quan h như >. 4. B ng dư i ây li t kê th t th c hi n các toán t trong Java Th t 1.II./.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 bi u th c 1: Bi u th c logic. 5.^ Các toán t gán như =. 2.<<.I. N u nh ng ngư i này có tu i là 55. int p.-Các toán t s h c và các toán t d ch như *.q. u tiên giá tr bi n num ư c gán cho ‘s’.r. 3.-.s. sau ó giá tr c a ‘s’ ư c gán cho ‘r’ và c ti p như v y.= =.+.+=. Ví d o n l nh sau gán m t giá tr cho bi n num. B n có th gán nhi u giá n nhi u bi n cùng m t lúc. Tr tr v giá tr True ho c False bi u th c 2: Giá tr tr v n u bi u th c 1 xác nh là True bi u th c 3: Giá tr tr v n u bi u th c 1 xác nh là False Câu l nh sau ây ki m tra có nh ng ngư i i làm b ng vé tháng có tu i l n hơn 65 không và gán m t tiêu chu n cho h .-= B ng 3.

chúng c n ph i ư c nh d ng.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 phía trong s th c thi trư c.10 i u khi n lu ng T t c các môi trư ng phát tri n ng d ng u cung c p m t quy trình ra quy t nh (decision-making) ư c g i là i u khi n lu ng.10 Các chu i thoát 3.9 nh d ng d li u xu t dùng chu i thoát Nhi u khi d li u xu t ư c hi n th trên màn hình. 3. Nhưng trong ph m vi m t ngo c ơn thì quy t c th t ưu tiên v n gi nguyên tác d ng. sau ó n các vòng phía ngoài. Cho ta d li u xu t như sau : Happy Birthday B ng dư i ây li t kê m t s ch i thoát và công d ng c a chúng Chu i thoát \n \r \t \\ \’ \” Mô t ưa con tr n dòng k ti p (B t u m t dòng m i ) ưa con tr v u dòng (Gi ng ký t carriage return) ưa con tr n v trí Tab-Stop (Như v trí Tab cu ký t ) In v ch chéo ngư c (backslash) In d u nháy ơn (‘) In d u nháy kép (“) B ng 3. i u khi n r nhánh M nh M nh Vòng l p Vòng l p while Vòng l p do-while Vòng l p for if-else swich-case Khoa Công ngh Thông tin – ih c àL t Trang 63 .println(“Happy\tBirthday”). Vi c nh d ng này c n s tr giúp c a chu i thoát (Escape sequences) do Java cung c p Chúng ta hãy xem ví d dư i ây System. Vòng l p là m t c u trúc chương trình giúp b n có th dùng th c hi n vi c l p l i các hành ng khi th c thi chương trình mà không c n vi t l i các o n chương trình nhi u l n.out. i u khi n lu ng cho phép ngư i phát tri n ph n m m ki m tra s t n t i c a m t i u ki n nào ó và ra quy t nh phù h p v i i u ki n ó. nó i u khi n vi c th c thi ng d ng.

out.println (num+ “is an even number”).println (num +”is an odd number”).7 class CheckNumber{ public static void main(String args[]{ int num =10. Bi u th c này tr v giá tr True ho c False action 1: Các dòng l nh ư c th c thi khi giá tr tr v là True else: T khoá xác v giá tr False nh các câu l nh ti p sau ư c th c hi n n u i u ki n tr action 2: Các câu l nh ư c th c thi n u i u ki n tr v giá tr False o n chương trình sau ki m tra xem các s là ch n hay l và hi n th thông báo phù h p Chương trình 3. } else{ action 2 statements. D ng c a câu l nh if-elsse r t ơn gi n Cú pháp If (conditon){ action 1 statements. } Khoa Công ngh Thông tin – ih c àL t Trang 64 .Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Câu l nh if-else Câu 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 tác phù h p trên cơ s k t qu ó. else System. } Condition: Bi u th c Boolean như toán t so sánh.out. if(num %2 == 0) System.

…. case ‘value’:action 2 statement. break. Trong câu 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.value 2. b i v y không c n ph i ư c ưa vào d u ngo c móc. : case ‘valueN’: actionN statement. } expession . break. Hình v dư i ây mô t cách dùng if-else: Tên i u ki n Tăng lương Hình 3.valueN: Các giá tr h ng s phù h p v i giá tr trên bi n expression . default: default_action statement. Vi c s d ng câu l nh switch-case cho phép vi c l p trình d dàng và ơn gi n hơn.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 } o n chương trình trên num ư c gán giá tr nguyên là 10.Bi n ch a m t giá tr xác nh value1.action2…actionN: Các phát bi u ư c th c thi khi m t trư ng h p tương ng có giá tr True Khoa Công ngh Thông tin – ih c àL t Trang 65 . action1. Cú pháp swich (expression){ case ‘value’:action 1 statement. break. Thông báo “10 is an even number” ư c in ra. Lưu ý r ng cho n gi ch có m t câu l nh tác ng ư c vi t trong o n “if” và “else”.4 If-else Tom Giám Else-if c John > 3 năm kinh else nghi m Henry if Câu l nh switch-case Phát bi u switch-case có th ư c s d ng t i câu l nh if-else. Nó ư c s d ng trong tình hu ng m t bi u th c cho ra nhi u k t qu .

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2

break: T khoá ư c s d ng b qua t t c các câu l nh sau ó và giành quy n i u khi n cho c u trúc bên ngoài switch default: T khóa tuỳ ch n ư c s d ng ch rõ các câu l nh nào ư c th c hi n ch khi t t c các trư ng h p nh n giá tr False default - action: Các câu l nh ư c th c hi n ch khi t t c các trư ng h p nh n giá tr False o n chương trình sau xác nh giá tr trong m t bi n nguyên và hi n th ngày trong tu n ư c th hi n dư i d ng chu i. ki m tra các giá tr n m trong kho ng 0 n 6, chương trình s thông báo l i n u n m ngoài ph m vi trên.

Chương trình 3.8 class SwitchDemo{ public static void main(String agrs[]) { int day =4; switch(day) { case 0 : System.out.println(“Sunday”); break; case 1 : System.out.println(“Monday”); break; case 2 : System.out.println(“Tuesday”); break; case 3 : System.out.println(“Wednesday”); break; case 4 : System.out.println(“Thursday”); break; case 5: System.out.println(“Friday”); break;

Khoa Công ngh Thông tin –

ih c àL t

Trang 66

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2

case 6 :

System.out.println(“Satuday”); break;

default: System.out.println(“Invalid day of week”); } } }
N u giá tr c a bí n day là 4 ,chương trình s hi n th Thursday,và c ti p như v y .

Vòng l p While
Vòng l p while ư c s d ng khi vòng l p ư c th c hi n mãi cho n khi i u ki n th c thi v n là True. S lư ng l n l p không ơc xác nh trư c song nó s ph thu c vào t ng i u ki n.

Cú pháp while(condition){ action statement; : }
condition: Bi u th c Boolean, nó tr v giá tr True ho c False. Vòng l p s ti p t c cho n khi nào giá tr True ư c tr v . action statement: Các câu l nh ư c th c hi n n u condition nh n giá tr True o n chương trình sau tính giai th a c a s 5. Giai th a ư c tính như tích 5*4*3*2*1.

Chương trình 3.9 class WhileDemo{ public static void main(String args[]){ int a = 5,fact = 1; while (a >= 1) {

Khoa Công ngh Thông tin –

ih c àL t

Trang 67

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2

fact *=a; a--; } System.out.println(The Factorial of 5 is “+fact); } }
ví d trên, vòng l p ư c th c thi cho n khi i u ki n a>=1 là True. Bi n a ư c khai báo bên ngoài vòng l p và ư c gán giá tr là 5. Cu i m i vòng l p, giá tri c a a gi m i 1. Sau năm vòng giá tr c a a b ng 0. i u ki n tr v giá tr False và vòng l p k t thúc. K t qu s ư c hi n th “ The factorial of 5 is 120” o n chương trình sau hi n thi t ng c a 5 s ch n u tiên

Chương trình 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 trên, i và sum là hai bi n ư c gán các giá tr u là 1 và 0 tương ng. i u ki n ư c ki m tra và khi nó còn nh n giá tr True, câu l nh tác ng trong vòng l p ư c th c hi n. Ti p theo giá tr c a i ư c tăng lên 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à câu l nh tác ng l i ư c th c hi n. Sau năm vòng, i tăng lên 11, i u ki n tr v giá tr False và vòng l p k t thúc. Thông báo: Sum of first five odd numbers is 25 ư c hi n th .

Khoa Công ngh Thông tin –

ih c àL t

Trang 68

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2

Tóm t t bài h c
• L nh import ư c s d ng trong chương trình truy c p các gói thư vi n Java. • Chương trình Java ch a m t t p các gói. Chương trình có th ch a các dòng gi i thích. Trình biên d ch s b qua các dòng gi i thích này. • “Token” là thành ph n nh nh t c a chương trình. Có năm lo i “token”
inh danh (identifiers) T khóa (keywords) Ký t phân cách (separators) Nguyên d ng (Literals) Các toán t

• Java có các ki u d li u xây d ng s n g I là ki u d li u nguyên thu . Các bi n ư c khai báo v I m t d li u xác nh. Hãy th n tr ng khi khai báo tên bi n lo i tr kh năng nh m l n. • Java cung c p các ch nh truy xu t sau ây :
Công c ng (public) B o v (protected) Riêng tư (private)

• Java cung c p các b nghĩa (modifiers) sau ây:
Tĩnh (static) Tr u tư ng (abstract) final

• Kh i t o hàm có hai ki u :
Tư ng minh (Explicit) Ng m nh (Implicit)

• Java cung c p nhi u d ng toán t :
Các toán t s h c Các toán t bit Các toán t quan h Các toán t logic Toán t ì u ki n Toán t gán

ng d ng Java có m t l p ch a phương th c main. Các tham s có th ư c truy n vào phương th c main nh các tham s l nh (command line parameters). Java cung c p nh ng c u trúc sau: if-else

Khoa Công ngh Thông tin –

ih c àL t

Trang 69

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 switch for while do while Khoa Công ngh Thông tin – ih c àL t Trang 70 .

Trong Java. JVM s cung c p m t hàm m c nh ho c m t hàm kh i t o n (implicit). 8678 d.……là s cài t c a các hành ng c a i tư ng 5. int profit=200.no 3. ki u d li u d ng byte n m trong gi i h n t ………. ………. System. batch.out. Hãy ch các danh nh h p l : a. Emp1 c. Cho bi t k t qu thu ươc khi th c hi n o n chương trình sau? class me { public static void main(String srgs[ ]) { int sales=820. Tel_num b. } } 4.println((sale +profit)/10*5). úng/Sai Vòng l p while th c thi ít nh t m t l n th m chí n u i u ki n ư c xác nh là False úng/Sai Khoa Công ngh Thông tin – ih c àL t Trang 71 . úng/Sai 6.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Ki m tra s ti n b 1. n………… 2. Phương th c public có th truy c p phương th c private trong cùng m t l p. ‘static’ hàm ý r ng phương th c không có mã và ư c b sung trong các l p con úng/Sai Khi b n không nh nghiã m t hàm kh i t o cho m t l p.

b. Theo các i u ki n: n u m b ng 0. Vi t chương trình c ng b y s h ng c a dãy sau: 1!+2!+3!……………. d. N u m l n hơn n . hi n th k t qu tương ng. Khi m t giá tr ư c truy n vào phương th c kh i t o. Hãy vi t m t o n chương trình in ra dòng ch ” Welcome to the world of Java” 2. nó s tính di n tích hình ch nh t. Khoa Công ngh Thông tin – ih c àL t Trang 72 . 3. nó cho r ng dài và chi u r ng b ng nhau và b ng giá tr truy n vào. Khi hai giá tr ư c truy n vào. 5.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Bài t p 1. Ki m tra giá tr n là ch n hay l . Hãy vi t hai phương th c kh i t o tư ng minh cho m t l p dùng tính di n tích hình ch nh t. Vi t m t chương trình th c hi n nh ng vi c sau ây: a. Khai báo và gán giá tr u cho các bi n m và n là 100 và 200 tương ng. c. Lúc ó. 4. nó s tính di n tích tương ng. Vi t m t chương trình hi n th t ng các b i s c a 7 n m gi a 1 và 100. hi n th k t qu tương ng.

Nó cho phép m t l p có nhi u l p cha. Giao di n tương t như các l p tr u tư ng. T t c nh ng phát bi u khác tuỳ ch n. Các phương th c này có th ư c hi n th c b i m t hay nhi u l p. Các giao di n có th ư c s d ng ch nh m t t p các phương th c. nhưng có th hi n th c hàng lo t giao di n. l nh nh p các gói.util 4. Chương trình nên ư c vi t theo th t : t tên gói. Các bư c t o m t giao di n ư c li t kê dư i ây: nh nghĩa giao di n: M t giao di n ư c nh nghĩa như sau: Khoa Công ngh Thông tin – ih c àL t Trang 73 . nhưng không th t o ra ư c i tư ng. M t t p tin ngu n Java s có khai báo l p public ơn. S khác nhau ch m t l p tr u tư ng có th có nh ng hành vi c th . và nh nghĩa l p.2 Các giao di n Giao di n là m t trong nh ng khái ni m quan tr ng nh t c a ngôn ng Java. Nh ng câu l nh nh p thêm các gói ho c các l p khác vào chương trình. Các chương trình Java có th th a k ch m t l p t i m t th i i m.1 Gi i thi u Gói và giao di n là hai thành ph n chính c a chương trình Java. M t l p tr u tư ng có th ư c th a k . M t khai báo l p công c ng. và ư c nh p m t cách tư ng minh vào nh ng l p m i ư c nh nghĩa. Các giao di n c n ư c hi n th c.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Chương 4: CÁC GÓI & GIAO DI N N i dung chính nh nghĩa m t giao di n Cài t m t giao di n S d ng giao di n như là m t ki u d li u nh nghĩa gói T o và s d ng các gói Vai trò c a các gói trong vi c i u khi n truy c p Nh ng thành ph n c a gói java. 4. Giao di n ư c s d ng thay th m t l p tr u tư ng. 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 câu l nh khai báo gói. M t s các l p d ng riêng tư c a gói. nhưng m t giao di n thì không th có m t phương th c c th nào có hành vi c a c a riêng mình. Các gói ư c lưu tr theo ki u phân c p. không có m t s k th a mã th c thi nào.lang Nh ng thành ph n c a gói java.

Hi n th c giao di n Các giao di n không th th a k các l p. N u khi b n hi n th c m t giao di n mà th a k các giao di n khác. b n c n ch ra hành vi c a phương th c.java M t giao di n ư c hi n th c v i t khoá “implement”. T t c các phương th c trong các giao di n Khoa Công ngh Thông tin – ih c àL t Trang 74 . Nói m t cách khác. các tên s m t d u ph y.00.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Chương trình 4. mà không ư c nh nghĩa. các phương th c ch ư c khai báo. Ví d : class demo implements myinterface N u nhi u hơn m t giao di n ư c th c thi. giao di n cho phép ng d ng m i quan h “is a” . } Chương trình trên ư c d ch như sau: javac myinterface. Trong ví d trên. Các phương th c ư c nh nghĩa trong m t l p mà l p này hi n th c giao di n. b n nh nghĩa è các phương th c trong giao di n m i giao di n ã th a k . i u này ư c trình bày như sau: ư c ngăn cách v i nhau b i class Demo implements MyCalc. Mycount Hãy ghi nh các lưu ý sau trong khi t o m t giao di n: T t c các phương th c trong các giao di n này ph i là ki u public. Trong trư ng h p trên.int z). public static final int counter=5.int y). Các phương th c ph i ư c nh nghĩa trong m t l p mà l p ó hi n th c giao di n này. public void volume(int x. nhưng chúng có th th a k các giao di n khác.1 //Giao di n v i các phương th c public interface myinterface{ public void add(int x.int y. } //Giao di n nh nghĩa các h ng s public interface myconstants{ public static final double price=1450.

class Demo implements myinterface{ public void add(int x.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 ph i là ki u public. có nghĩa là nh nghĩa m t ki u d li u tham chi u m i. //Gi s phương th c volume ư c khai báo trong giao di n } public static void main(String args[]){ Demo d=new Demo(). M i gói g m có nhi u l p.2 bi u di n m t giao di n ư c cài t như th nào: Chương trình 4. Ch có m t th hi n c a l p mà l p ó th c thi giao di n có th ư c gán cho m t bi n tham chi u. và/ho c các giao di n ư c coi như là các thành viên c a nó.println(“ “+(x+y)).10.int z) { System.2 import java.20).. Ta có th s d ng các tên giao di n b t c nơi âu như b t kỳ ki u d li u khác. d.io.volume(10.10).*.int y) { System. o n mã Chương trình 4.out. d. Các chương trình Java ư c t ch c như nh ng t p c a các gói. B n không ư c s d ng các t khóa b sung khác như protected. ó là m t Khoa Công ngh Thông tin – ih c àL t Trang 75 .add(10. //Gi s phương th c add ư c khai báo trong giao di n } public void volume(int x. private. } } Khi nh nghĩa m t giao di n m i.. 4.out. Ki u c a bi n tham chi u ó là tên c a giao di n. khi khai báo các phương th c trong giao di n.3 Các gói Gói ư c coi như các thư m c.println(“ “+(x*y*z)). ó là nơi b n t ch c các l p và các giao di n c a b n.int y.

b n c n b t u mã ngu n c a b n v i m t khai báo gói. Nói tóm l i. m i l p trong m t gói c n ư c biên d ch. sau chúng b n có th b t u nh nghĩa l p c a b n.*. Hãy ghi nh các i m sau trong khi t o gói: o n mã ph i b t u v i m t phát bi u “package”.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 phương án thu n l i lưu tr các nhóm c a nh ng l p có liên quan v i nhau dư i m t cái tên c th . Mã ngu n ph i n m trong cùng m t thư m c. Các gói cũng có th ch a các gói khác. import java.*. Các l p ó c n ư c t ch c m t cách h p lý. Tương t t t c các t p tin khác. các gói có ích cho các m c ích sau: Chúng cho phép b n t ch c các l p thành các ơn v nh hơn (như là các thư m c). Các phát bi u khác có th xu t hi n sau khai báo gói là các câu l nh nh p. i u ó tr nên d dàng khi ta t ch c các t p tin l p thành các gói khác nhau.io. Các tên c a gói có th ư c s d ng nh n d ng các l p. Khoa Công ngh Thông tin – ih c àL t Trang 76 . i u này nói lên r ng l p ư c nh nghĩa trong t p tin là m t ph n c a gói xác nh. mà thư m c ó l i là tên gói c a b n. Quy ư c r ng. b n t o ra m t s l p. cho chương trình Java c a b n có kh năng s d ng các gói ó. v i m t cái tên ph n ánh ư c m c ích c a các l p. như sau: package mypackage. t o ra m t l p là thành viên c a gói. hãy nh p (import) chúng vào mã ngu n c a b n. d li u và phương th c m c r ng hơn trên m t n n t ng class-to-class. Khi b n làm vi c v i m t s các l p b n s c m th y khó quy t nh t tên cho các l p và các phương th c. T t c các i u mà b n c n làm là t các l p và các giao di n có liên quan v i nhau vào các thư m c riêng. S khai báo sau ây là h p l và không h p l : H pl package mypackage. Các gói gi u các l p tránh vi c t tên b xung t. Không h p l import java. và làm cho vi c xác nh v trí tr nên d dàng và s d ng các t p tin c a l p m t cách phù h p. Giúp tránh cho vi c t tên b xung t (trùng l p tên). Hãy tư ng tư ng r ng m i gói gi ng như m t thư m c con.io. Khi b n ang làm vi c v i m t chương trình ng d ng. Các gói cho phép b n b o v các l p. ôi lúc b n mu n s d ng tên gi ng nhau mà tên ó liên quan n l p khác. các tên gói s b t u b ng m t ch thư ng phân bi t gi a l p và gói.

như là các c u trúc d li u. Thông thư ng. Cung c p các l p và các giao di n cho vi c l p trình m ng TCP/IP. ngày tháng.net Mô t Không c n ph i khai báo nh p.lang java. Bên c nh ó.awt java. l ch. N u b n không khai báo các gói trong o n mã c a b n. b n ph i t chúng vào các gói. L nh nh p import -java. Có các tuỳ ch n sau trong khi nh p vào m t gói: Có th nh p vào m t t p tin c th t gói: import java. thì các l p và các giao di n c a b n sau khi k t thúc s n m trong m t gói m c nh mà không có tên. Cung c p nhi u l p và nhi u giao di n ti n ích khác nhau. Bao g m các l p tr giúp cho b n t t c các thao tác vào ra. B n c n t ch c các l p ó trong các thư m c khác nhau d dàng truy c p. Các thành ph n xây d ng giao di n ho (GUI). B ng 4.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 package mypackage. Java còn cung c p thêm nhi u gói phát tri n ng d ng và applet.mypackage.1 T o m t gói Gói là m t phương th c h u d ng nhóm các l p mà tránh ư c các tên trùng nhau. Các l p v i nh ng tên gi ng nhau có th t vào các gói khác nhau.1 Các gói trong Java. nhưng b n ph i t chúng vào các gói khác nhau. 4.3. B n thân Java ã ư c cài t s n m t t p các gói.v. Các l p ư c nh nghĩa b i ngư i s d ng cũng có th ư c nhóm l i trong các gói. Gói này luôn ư c nh p cho b n. Ý nghĩa l n nh t c a gói là b n có kh năng s d ng các tên l p gi ng nhau. làm ư c i u này.*.io..mypackage.util java. gói m c nh này ch có ý nghĩa cho các ng d ng nh ho c các ng d ng t m th i. Máy o Java s qu n lý các thành ph n n m trong các gói ã ư c nh p vào. b ng dư i ây c p n m t vài gói có s n c a Java: Gói java.applet java. Bao g m các l p b n c n th c thi m t applet trong trình duy t. b n có khuynh hư ng phát tri n m t s các l p.*.calculate Có th nh p toàn b gói: import java. Các bư c sau ây cho phép t o nên m t gói do ngư i dùng nh nghĩa: Khoa Công ngh Thông tin – ih c àL t Trang 77 . Khi b n b t u vi c phát tri n cho m t ng d ng l n.io java. v.

//các phương th c //… public class Display // nh nghĩa m t l p { …//Các phương th c } } } Khoa Công ngh Thông tin – ih c àL t Trang 78 . package mypackage. i u này ch ra r ng l p ư c nh nghĩa trong t p tin là m t ph n c a gói xác nh.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Khai báo gói b ng cách s d ng cú pháp thích h p. public class Calculate // nh nghĩa m t l p { int var. T t c các thành ph n c a gói s là public. Máy o Java (JVM) qu n lý t t c các ph n t n m trong gói ó. //khai báo gói import java. import java.*.util. S d ng phát bi u import nh p các gói chu n theo yêu c u. có th ư c truy c p t bên ngoài. package mypackage.*.util. Khai báo và nh nghĩa các l p s n m trong gói ó. Calculate(int n) { … var = n. o n mã ph i b t u v i khai báo gói.

class PackageDemo{ public static void main(String args[]){ Calculate calc = new Calculate(). ta làm như sau: import java.Calculate calc = new mypackage. Cú pháp như sau: mypackage.mypackage. i u này có nghĩa các t p tin nén Khoa Công ngh Thông tin – ih c àL t Trang 79 . javac –d d:\temp Calculate. và t p tin nén ch a các l p c a JDK.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Lưu các nh nghĩa trên trong m t t p tin v i ph n m r ng .3.Calculate. l p ho c giao di n ó s n m trong gói m c nh mà không có tên.*. Ch c năng này t o m t thư m c trùng v i tên gói. nh p m t l p ta dùng: import java. và t t p tin . và d ch các l p ư c nh nghĩa trong gói.java N u khai báo gói không có trong chương trình.Calculate. Vi c d ch có th th c hi n v i tham s “-d”. 4.class vào thư m c ư c ch rõ.io. nh p toàn b m t gói. cho các chương trình Java khác s d ng ư c các gói ó.*.java. Hãy ghi nh các i m sau ây khi b n khai thác các gói do ngư i dùng nh nghĩa trong các chương trình khác: Mã ngu n c a các chương trình ó ph i t n t i trong cùng m t thư m c v i gói ư c nh nghĩa b i ngư i s d ng. T o m t tham chi u sau: n các thành ph n c a gói.Calculate(). hãy khai báo chúng vào o n mã ngu n. } } N u phát bi u import cho gói ó không ư c s d ng. thì khi s d ng l p ó ph i ch ra l p ó gói nào. import mypackage.2 Thi t l p ư ng d n cho l p Chương trình d ch và chương trình thông d ch tìm ki m các l p trong thư m c hi n hành.mypackage. Nói chung. gói m c nh này thì ch có nghĩa cho các ng d ng nh ho c t m th i. Ta dùng o n mã ơn gi n import java.

Tuy nhiên. Ví d c a m t gói như sau: Chương trình 4. Classpath là m t danh sách các thư m c. ó javac nó t o Khoa Công ngh Thông tin – ih c àL t Trang 80 .Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 ch a các l p c a JDK và thư m c hi nh hành ch a mã ngu n t ng ư c t vào classpath. } public int divide(int x. Nó ch thích h p khi thi t l p CLASSPATH ch y chương trình. public class calculate{ public double volume(double height. javac –classpath c:\temp Packagedemo.int y){ return (x/y). Khi b n th c thi o n mã c a b n. ta không nên thi t l p môi trư ng classpath lâu dài. B n c n d ch t p tin này.3 package mypackage. Nó có th ư c d ch v i tuỳ ch n –d. Nh p toàn b gói. nh m t thư m c v i tên c a gói và t t p tin . b n c n ph i: Nh p l p ư c s d ng. Thông thư ng.java Th t c a các m c trong classpath r t quan tr ng.class vào thư m c này.int y){ return (x+y). double width.double depth){ return (height*width*depth). } } s d ng gói này. ch thi t l p ư ng d n cho vi c th c thi hi n th i. b n c n ph i t thi t l p classpath. S d ng các thành ph n c a gói. } public int add(int x. danh sách này tr giúp tìm ki m các t p tin . trong m t vài trư ng h p. cho n khi nó tìm th y l p c n tìm.class tương ng. mày o Java s tìm ki m các m c trong classpath theo th t các thư m c trong classpath.

volume(10. import mypackage.class vào thư m c này.4). và lưu tr t p tin calculate.io.java Chương trình biên d ch t o m t thư m c ư c g i là “mypackage” trong thư m c temp.println(“The division is: ”+sum).4 import java. thì khi ó. Các l p ch a d li u và o n mã. System. int sum = calc. mà không s d ng khai báo import cho gói ó. các gói và các ch nh truy c p.4 Gói và i u khi n truy xu t Các gói ch a các l p và các gói con. double vol = calc.32.3f. mypackage. System. B ng sau ây s tóm t t quy n truy c p các thành ph n c a l p: Cùng l p Cùng gói.calculate( ).println(“The addition is: ”+sum).20).l p th a k (Subclass) public Yes Yes protected Yes Yes No modifier Yes Yes private Yes No Khoa Công ngh Thông tin – ih c àL t Trang 81 .add(10. Ví d sau bi u di n cách s d ng m t gói: Chương trình 4.out.13. Java cung c p nhi u m c truy c p thông qua các l p. 4.calculate calc = new mypackage. int div = calc.*. b n c n ph i s d ng tên l p v i tên gói.out. class PackageDemo{ public static void main(String args[]){ calculate calc = new calculate().out.println(“The Volume is: ”+vol). System.divide(20.2f.calculate.32f). } } N u b n s d ng m t l p t m t gói khác.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 javac –d c:\temp calculate.

Integer num1 = new Integer(“31”).lang. Int sum = num1. Integer num2 = new Integer(“3”).3: Các l p trình bao b L p trình bao b c Boolean Byte Character Double Float Integer Long Short c cho các ki u d li u nguyên thu . B ng sau li t kê các l p trình bao b c. //intValue() là m t hàm c a l p trình bao b c Integer. Vì th .lang M c nh.5 Gói java.intValue(). Ki u d li u boolean byte char double float int long short B ng 4. Chương trình sau ây minh h a cách s d ng l p wrapper cho ki u d li u int Chương trình 4. Các phương th c c a m i l p này có trong ph n ph l c. L p bao b c Các ki u d li u nguyên th y thì không ph i là các i tư ng. chúng không th t o ra hay truy c p b ng phương th c. Ví d m t vài phương th c c a l p wrapper: Boolean wrapBool = new Boolean(“false”).lang này trong chương trình. t o và thao tác ki u d li u nguyên thu .intValue()*num2.2: Truy c p Yes Yes No Yes No No No No No n các thành ph n c a l p. không c n l nh nh p gói java.5 Khoa Công ngh Thông tin – ih c àL t Trang 82 .Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Cùng gói-không Yes th a k (nonSubclass) Khác gói-l p th a Yes k (subclass) Khác gói-không Yes th a k (nonSubclass) B ng 4. 4. Vì th . ta s d ng “l p bao b c” tương ng. m i chương trình java u nh p gói java.

for(int i = 0.parseInt(args[i]). Các l p bao b c c a byte. Các s ó ư c lưu tr trong m ng String args[].i<args. String str2 = new String(“Hello World”). M ng args[] là ki u String.’B’. String str3 = new String(ch). long. Các l p bao b c c a double và long cũng cung c p các h ng POSITIVE_INFINITY và NEGATIVE_INFINITY.1 L p String Chu i là m t dãy các ký t . 4.’E’}.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 class CmdArg{ public static void main(String args[]){ int sum = 0.out. int. L p String cung c p các phương th c thao tác v i các chu i.’D’. //str2 ch a “Hello World” char ch[] = {‘A’. System. Nó cung c p các phương th c kh i t o (constructor) khác nhau: String str1 = new String( ). và short cung c p các h ng s MIN_VALUE và MAX_VALUE.println(“T ng là: ”+sum). các ph n t ph i ư c i sang ki u d li u int trư c khi c ng chúng. Phương th c “parseInt()” trong l p “Integer” th c hi n quá trình chuy n i c a ki u d li u chu i sang ki u d li u s nguyên. Vì th . Thu c tính “length” xác nh s các ph n t trong m ng args[]. } } Vòng l p for ư c s d ng tìm t ng c a các s ư c truy n vào t dòng l nh. T t c các l p trình bao b c.’C’. ngo i tr l p “Character” có m t phương th c tĩnh “valueOf()” nh n m t chu i. //str3 ch a “ABCDE” Khoa Công ngh Thông tin – ih c àL t Trang 83 .length.5.i++) sum+= Integer. và tr v m t giá tr s nguyên ư c. //str1 ch a m t chu i r ng. Quá trình chuy n i ư c th c hi n v i s giúp c a l p trình bao b c “Integer”.

ây. gán v i m t chu i ang t n 4.tính t ký t b t u. phương th c này tr v m t chu i m i. Vì c hai bi n “day” và “weekday” cũng u nh m ch vào chu i gi ng h t nhau trong String Pool.2 Chu i m c nh M t chương trình Java có th ch a nhi u chu i. i u này có th ư c gán cho chu i ang t n t i. “String Pool” i di n cho t t c các ch ư c t o trong chương trình. Khoa Công ngh Thông tin – ih c àL t Trang 84 .Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 String str4 = new String(ch.là s lư ng ký t k t ký t b t Toán t “+” ư c s d ng c ng chu i khác vào chu i ang t n t i. String weekday = “Monday”. Không gi ng như toán t “+”. strSecond. Vi c này ti t ki m r t nhi u không gian b nh . ây. phương th c này không thư ng xuyên n i hai chu i t i v trí cu i cùng c a chu i u tiên.concat(strSecond). Phương th c concat( ) ch làm vi c v i hai chu i t i m t th i i m. m t th hi n cho bi n “day”. strFinal. Ví d : String strFirst. StrSecond = “Chaplin”. 2. Toán t “+” này ư c g i như là “n i chu i”.b ng cách s d ng phương th c concat( ) t i. có giá tr gi ng như c a bi n “day”. n i chu i ư c th c hi n thông qua l p “StringBuffer”.5. String Pool tìm ki m trong nó. Thay vào ó. n u tìm th y n u chu i ã t n t i thì không t o th hi n mà ch gán th tìm th y cho chu i m i. //str4 ch a “AB” vì 0. ư c t o trong String Pool. bi n ó có giá tr là “Monday”. m t th hi n ang t n t i ư c gán n bi n “weekday”. //…. u. M i khi m t chu i ư c t o. Ví d : String day = “Monday”. Chúng ta s th o lu n v l p này trong ph n sau. chu i m i ó s ch a giá tr c a c hai. StrFinal = strFirst. StrFirst = “Charlie”. Phương th c “concat( )” c a l p String cũng có th th c hi n vi c n i chu i.0.2). Khi chu i b ng ch “weekday” ư c t o. Hình nh sau minh ho khái ni m c a “String Pool”.

4. Ví d : String strname = “Java Language”.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 day Weekday 1 2 3 4 N Sunday Monday Hello Aptech World Hình 4. Ví d : String name = new String(“Java Language”). chúng ta s xem xét các phương th c c a l p String. copyValueOf( ) Khoa Công ngh Thông tin – ih c àL t Trang 85 .charAt(5). Ví d : String strname = “Java Language”. boolean flag = strname. ph thu c vào chu i k t thúc b ng m t chu i con nào ó không.startsWith(“Java”). endsWith( ) Phương th c này tr v m t giá tr ki u logic. startsWith( ) Phương th c này tr v giá tr ki u logic (Boolean). ph thu c vào chu i có b t u v i m t chu i con c th nào ó không. Bi n “flag” ch a giá tr false.3 Các phương th c c a l p String Trong ph n này. t ó v trí các s b t u t 0. boolean flag = strname.5. charAt( ) Phương th c này tr v m t ký t t i m t v trí trong chu i.endsWith(“Java”). char ch = name. Bi n “ch” ch a giá tr “L”.1 Khái ni m c a String Pool. Bi n “flag” ch a giá tr true.

String day = new String(“Sunday”). indexOf( ) Phương th c này tr v th t c a m t ký t nào ó.indexOf(‘n’).’g’.’e’}. Bây gi bi n “subname” ch a chu i “ag”. int index1 = day. System.’n’. Ví d : String text = new String(“Hello World”).’g’. Ví d : char name[] = {‘L’. Phương th c này cũng l y hai tham s nguyên.toUpperCase( )).2). toCharArray( ) Phương th c này chuy n chu i thành m t m ng ký t .indexOf(‘z’. int index3 = day.2).println(“Uppercase: ”+lower.’a’. Các câu l nh sau bi u di n các cách khác nhau c a vi c s d ng hàm.copyValueOf(name. String subname = String .Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Phương th c này tr v m t chu i ư c rút ra t m t m ng ký t ư c truy n như m t i s .5. //ch a –1 n u “z” không tìm th y t i v trí 2. ho c m t chu i trong ph m vi m t chu i.toCharArray( ). và tham s th hai ch nh s ký t ư c rút ra t m ng. Khoa Công ngh Thông tin – ih c àL t Trang 86 . //ch a 2 int index2 = day.indexOf(“Sun”).out. Tham s u tiên ch nh v trí t nơi các ký t ph i ư c rút ra.’a’.’u’. String lower = new String(“good morning”). char textArray[] = text. //ch a m c 0 toUpperCase( ) Phương th c này tr v ch hoa c a chu i.

Spaces “).out. Các i tư ng c a l p này r t m m d o. StringBuffer s3 = new StringBuffer(“StringBuffer”). ho c n i thêm d li u vào t i v trí cu i. name2 = “APTECH”.4 L p StringBuffer L p StringBuffer cung c p các phương th c khác nhau thao tác m t i tư ng d ng chu i.println(space). StringBuffer s2 = new StringBuffer(20). Hãy th th y s khác nhau trư c và sau khi c t b kho ng tr ng.trim()). ó là các ký t và các chu i có th ư c chèn vào gi a i tư ng StringBuffer.toLowerCase( )).out. Bi n “flag” ch a giá tr false. o n mã sau String space = new String(“ System. //Sau khi c t b kho ng tr ng equals() Phương th c này so sánh n i dung c a hai i tư ng chu i. trim() Phương th c này c t b kho ng tr ng hai u chu i. System.equals(name2). String name1 = “Aptech”.println(space. L p này cung c p nhi u phương th c kh i t o. Chương trình 4.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 toLowerCase( ) Phương th c này tr v ch thư ng c a chu i. 4. String upper = new String(“APTECH”). System. Khoa Công ngh Thông tin – ih c àL t Trang 87 .6 class StringBufferCons{ public static void main(String args[]){ StringBuffer s1 = new StringBuffer().println(“Lowercase: “+upper.5.out. Chương trình sau minh ho cách s d ng các phương th c kh i t o khác nhau t o ra các i tư ng c a l p này. boolean flag = name1.

capacity()).println(“s3 = “+ s3). System. //ch a 0 System. //ch a 16 System. m = “+s1.out.ensureCapacity(8). //ch a 28 } } “length()” và “capacity()” c a StringBuffer là hai phương th c hoàn toàn khác nhau.capacity()).capacity()).println(s1.7 minh ho dung lư ng ư c tính toán và ư c t như th nào.out. Dung lư ng c a StringBuffer có th thay i v i phương th c “ensureCapacity()”.out. N u dung lư ng m i nh hơn i s ư c truy n cho phương th c “ensureCapacity()”.out.println(s3.length()). t l i. thì dung lư ng m i (NewCapacity) ư c t.println(s2.capacity()). //ch a 20 System.out. System. Phương th c “length()” c p n s các ký t mà i tư ng th c ch a.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 System. Khoa Công ngh Thông tin – ih c àL t Trang 88 . và dung lư ng m i ư c tính toán 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 hơn i s ư c truy n cho phương th c “ensureCapacity()”. //ch a 12 System. Chương trình 4.out. 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.println(s2. i u ki n sau s ư c ki m Chương trình 4.out.println(“Dung lư ng c a b nh //ch a 5 s1.7 class test{ public static void main(String args[]){ StringBuffer s1 = new StringBuffer(5).println(s3.length()). thì dung lư ng ư c t b ng giá tr tham s truy n vào. i s int ã ư c truy n n phương th c này.

dung lư ng ban u c a s1 là 5.capacity()). Câu l nh s1. insert() Phương th c này có hai tham s . m = “+s1. s1.ensureCapacity(30).5.ensureCapacity(30). chúng ta s xem xét các phương th c c a l p StringBuffer v i m t chương trình. B t kỳ i s nào. Giá tr trong s1 bây gi là “goodevening”. Ví d : StringBuffer str = new StringBuffer(“Java sion”). append() Phương th c này n i thêm m t chu i ho c m t m ng ký t vào cu i cùng c a i tư ng StringBuffer.5 Các phương th c l p StringBuffer Trong ph n này.append(“evening”).out. m t giá tr nguyên (int). System. Tham s th hai có th là m t chu i. ư c chuy n sang chu i và sau ó m i ư c chèn vào. Ví d : StringBuffer s1 = new StringBuffer(“Good”).Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 System.println(“Dung lư ng c a b nh //ch a 12 s1. tr ký t ho c chu i. m t ký t (char).println(“Dung lư ng c a b nh //ch a 30 m = “+s1. Thi t l p dung lư ng c a “s1” n 30 b i vì dung lư ng truy n vào là 30 thì l n hơn dung lư ng ư c tính toán (12*2+2). V trí chèn s l n hơn hay b ng 0. và nh hơn hay b ng chi u dài c a i tư ng StringBuffer. Tham s u tiên là v trí chèn.ensureCapacity(8). } } Trong o n mã trên. s1. 4. Thi t l p dung lư ng c a s1 n 12 =(5*2+2) b i vì dung lư ng truy n vào là 8 nh hơn dung lư ng ư c tính toán là 12 .capacity()).out. Khoa Công ngh Thông tin – ih c àL t Trang 89 . hay m t giá tr s th c (float) ư c chèn vào.

Ví d : Khoa Công ngh Thông tin – ih c àL t Trang 90 .’v’). Phương th c getChars() có b n tham s sau: Ch s u: v trí b t u.Ví d : i tư ng StringBuffer t i v trí StringBuffer str = new StringBuffer(“James Gosling”). setLength() Phương th c này thi t l p chi u dài c a i tư ng StringBuffer. charAt() Phương th c này tr v m t giá tr ký t trong ư c ch nh. name.charAt(6). thì các ký t th a s b c t b t.setLength(str. nơi mà các ký t ư c sao chép. getChars() Phương th c này ư c s d ng trích ra các ký t t i tư ng StringBuffer. Bi n “name” ch a “Java”. N u chi u dài ch nh nhi u hơn chi u dài d li u thì các ký t null ư c thêm vào ph n cu i c a StringBuffer StringBuffer str = new StringBuffer(10). setCharAt() Phương th c này ư c s d ng thay th ký t trong m t StringBuffer b ng m t ký t khác t i m t v trí ư c ch nh. ư c sao chép vào m ng ích V trí b t u trong m ng ích: Các ký t t v trí này. Ch s k t thúc: v trí k t thúc M ng: M ng ích.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 str. và sao chép chúng vào m t m ng. Bi n “str” ch a chu i “Jbava sion”. char letter = str.’b’). str.setCharAt(2. t nơi mà ký t ư c l y ra.insert(1. N u chi u dài ư c ch nh nh hơn chi u dài d li u hi n t i c a nó.length() +10). //ch a “G” StringBuffer name = new StringBuffer(“Jawa”).

ho c long. str.println(Math. i s ư c truy n n nó có th là ki u int. ceil() Phương th c này tìm th y s nguyên nh nh t l n hơn ho c b ng truy n vào.ch.ceil(8. float.0).02)).0 Khoa Công ngh Thông tin – ih c àL t Trang 91 .Math L p này ch a các phương th c tĩnh (static) Chúng ư c mô t như sau: Cú pháp là Math. Ví d : i tư ng StringBuffer. double.5. is ư c floor() Phương th c này tr v s nguyên l n nh t nh hơn ho c b ng truy n vào. và tr v StringBuffer str = new StringBuffer(“devil”).println(Math. Bây gi bi n “ch” ch a “par” reverse() Phương th c này o ngư c n i dung c a m t m t i tư ng StringBuffer khác.lang. char ch[] = new char[10].0 System.out.<tên hàm> th c hi n các thao tác toán h c.getChars(3.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 StringBuffer str = new StringBuffer(“Leopard”). Ki u d ki u byte và short ư c chuy n thành ki u int n u chúng ư c truy n t i như là m t i s .6. //tr v -1.abs(num) //tr v 1.6 L p java.out.ceil(-1. Bi n “strrev” ch a “lived”.3)). Ví d : int num = -1. i s ư c System. Math. 4. StringBuffer strrev = str.reverse(). //tr v 9. abs() Phương th c này tr v giá tr tuy t i c a m t s .

sqrt() Phương th c này tr v căn b c hai c a m t s .floor(201. câu l nh Math. long.sin(Math.out. Các s ư c truy n vào có th là ki u int. i s có d u ph y ng.0. Giá tr c a “PI” ư c n b ng radian.0. //tr v 100 max() Phương th c này tìm giá tr l n nh t trong hai giá tr ư c truy n vào. //tr v -6.6)).5) tr v 35.out.println(Math. n u góc ư c truy n Ví d : Math.PI/2) tr v 1.0 System.out. //tr v 100. nh nghĩa trong l p Math (Math. Ví d . long. sin() Phương th c này tr v sine c a m t s . PI/2 radian = 90 . câu l nh random() Phương th c này tr v m t s ng u nhiên ki u double gi a 0.PI).floor(100)).Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 System. giá tr c a sin 450. i min() Phương th c này tìm giá tr nh nh t trong hai giá tr ư c truy n vào.1)).0 và 1. double. Các s ư c truy n vào có th là ki u int.round(34.0 System.0. i round() Phương th c này làm tròn Math. và float.ceil(100)). double và float.out. //tr v 201 System.sqrt(144) tr v 12.println(Math.println(Math. cos() Phương th c này tr v cosine c a m t góc tính b ng radian.println(Math.floor(-5. Ví d . tan() Khoa Công ngh Thông tin – ih c àL t Trang 92 .

N u thoát bình thư ng thì tr v 0. chúng ta bi t r ng vi c thu gom các d li u không thích h p trong Java là m t ti n trình t ng.totalMemory(). chúng ta có th tham chi u th hi n trong lúc th c hi n chương trình t vi c dùng phương th c getRuntime(). Tuy nhiên.freeMemory(). long totalmem = r. Ch y chương trình môi trư ng bên ngoài B ng 4.4 L p Runtime freeMemory() getRuntime() gc() totalMemory() exec(String) Chương trình 4.. giá tr khác 0 cho thoát không bình thư ng.getRunTime(). 4. B ng sau trình bày m t vài phương th c c a l p này: Phương th c exit(int) Ý nghĩa D ng vi c th c thi. cho phép ng d ng giao ti p v i môi trư ng. …. xem chi ti t vi c c p phát b nh . Tr v kích thư c b nh chưa s d ng tính b ng byte Tr v th hi n Runtime G i b ph n thu th p rác. và vi c th c thi c a các quá trình x lý khác. kích ho t m t cách th công b thu th p d li u không còn ư c s d ng ta g i phương th c gc() trên i tư ng Runtime hi n th i. Bây gi .Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Phương th c này tr v tan c a m t góc tính b ng radian. Tr v kích thư c b nh tính b ng byte.. …. long freemem = r.5.gc(). và tr v giá tr c a chương trình cho h i u hành. m t ng d ng không th t o ra m t th hi n c a thu c l p này. và ch y m t cách nh kỳ. M i chương trình Java có m t th hi n c a l p này. s d ng các phương th c totalMemory() và freeMemory(). L p này ư c s d ng cho vi c qu n lý b nh .7 L p Runtime L p Runtime ch a thông tin v môi trư ng th c thi.7 class RuntimeDemo{ public static void main(String args[]) { Khoa Công ngh Thông tin – ih c àL t Trang 93 . Runtime r = Runtime. r. Nó không th ư c kh i t o.

exe và tham chi u n calc.exe trong i tư ngProcess.5.getRuntime().exec(“calc. Tr v th i gian hi n t i b ng mili giây (ms). int) M c ích D ng vi c th c thi.out.Các trư ng c a l p này là in. Object. và tr v giá tr c a o n mã. } } } Có th tham chi u n Runtime hi n hành thông qua phương th c Runtime. int. Process p = null. ư c tính t lúc 0 gi ngày 01 tháng 01 năm 1970. G i b ph n thu th p rác. dòng ra chu n và dòng l i. Khoa Công ngh Thông tin – ih c àL t Trang 94 . int. } catch(Exception e){ System. Nó cũng cung c p phương th c truy c p các thu c tính liên quan n h th ng Runtime c a Java. Sao chép m ng. 4.getRuntime(). Thi t l p các thu c tính h th ng hi n hành.println(“Error executing calculator”). B ng 4. 0 cho bi t có th thoát ra m t cách bình thư ng. ch y chương trình calc. Sau ó. ư ng d n. Tr v thu c tính c a h th ng th i gian ch y Java. v. out.5 L p System. dòng vào. phiên b n. ra và l i chu n tương ng. và các thu c tính môi trư ng khác nhau như là. và err. B ng sau mô t các phương th c c a l p này: Phương th c exit(int) gc() getProperties() setProperties() currentTimeMillis() arrayCopy(Object. try { p = r.8 L p System L p System cung c p các ti n íchi như là. các trư ng này tiêu bi u cho dòng vào.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Runtime r = Runtime.v.exe”). hay các d ch v ..

9 class SystemDemo{ public static void main(String args[]){ System.println(System.class. } } M i thu c tính c n in ra c n ư c cung c p như m t tham s (d ng chu i) n phương th c System.out.out.getProperty().out.path”)).println(System.println(System.vm.class.out. System.name”)).getProperty(“java.getProperty(“java. System.url”)).out. System.println(System.println(System.getProperty(“java. K t qu chương trình trên như sau: Khoa Công ngh Thông tin – ih c àL t Trang 95 .vendor”)).out.version”)). c Chương trình 4.println(System.version”)). System.println(System.getProperty(“java.out. System.getProperty(“java. System. o n mã trong chương trình sau và hi n th m t vài các thu c tính môi trư ng Java.home”)). System.getProperty(“java.out.getProperty(“java.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 L p System không th t o th hi n ư c.out.specification.out. Phương th c này s tr v thông tin tương ng và phương th c System.vendor.vendor”)). System.getProperty(“java.println() in ra màn hình.println(System.version”)).println(System.getProperty(“java.specification.

getClass(). System.getName()). B b = new B(). S d ng phương th c tĩnh forName() c a l p l y m t th hi n c a l p thông qua tên c a l p ó. } class B implements A{ int deptno. L p Class không có phương th c xây d ng. Khoa Công ngh Thông tin – ih c àL t Trang 96 . } class ClassDemo{ public static void main(String args[]) { A a = new B().getClass().9 L p Class Các th hi n c a l p này ch a tr ng thái th i gian th c hi n c a m t i tư ng trong ng d ng Java ang ch y.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Hình 4.out.2 Ví d v l p System 4. S d ng m t i tư ng ClassLoader n p m t l p m i. Chương trình sau minh ho cách s d ng phương th c c a m t l p truy c p thông tin c a l p ó: Chương trình 4. final String name = “Diana”. Class x.println(“a is object of type: ”+x. Chúng ta có th l y m t i tư ng c a l p này. x= b. i u này cho phép chúng ta truy c p thông tin v i tư ng trong th i gian ch y. ho c m t th hi n b ng m t trong ba cách sau: S d ng phương th c getClass() c a i tư ng. x = a.10 interface A{ final int id = 1.5.

Thông báo cho Thread (lu ng) mà hi n th i trong tr ng thái ang ch .5. Thông báo t t c các Thread (lu ng) hi n hành trong tr ng thái ch . System.10 L p Object L p Object là m t l p cha c a t t c các l p. Dù là m t l p do ngư i dùng nh nghĩa không th a k l i b t kỳ m t l p nào khác. ưa Thread (lu ng) vào tr ng thái ch . x=x. 4.out. theo m c nh nó th a k l p Object.getName()).”).3 Quá trình xu t ra các k t qu c a l p Class. Phương th c cu i cùng. B i vì.println(“b is object of type: ”+x. Trong chương trình sau.11 Class ObjectDemo{ public static void main(String args[]) { Khoa Công ngh Thông tin – ih c àL t Trang 97 . } } K t qu ch y chương trình ư c mô t như hình dư i ây: Hình 4.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 System. chúng ta không khai báo b t kỳ l p ho c gói nào.getName()+ “is the superclass of b. Tr v m t chu i i di n cho i tư ng.out. M t vài các phương th c c a l p Object ư c bi u di n bên dư i: Phương th c equals(Object) finalize() notify() notifyAll() toString() wait() M c ích So sánh i tư ng hi n t i v i i tư ng khác.6 L p Object.getSuperclass(). Bây gi .println(x. chúng ta có th t o b ng cách s d ng phương th c equals(). Chương trình 4. B ng 4. theo m c nh l p ObjectDemo m r ng l p Object. Thông thư ng b nh nghĩa è l p con.

kích thư c t i a c a nó s Khoa Công ngh Thông tin – ih c àL t Trang 98 .println(“Yes. ch r ng l p tr u tư ng Dictionary.Ví d : m t b ng băm v i dung lư ng 100. Hashtable m r ng kích thư c khi các ph n t ư c thêm vào. } } 4. Khi m t Hashtable m i.80).util cung c p m t s l p ti n ích Java. nh ng ngư i l p c danh công vi c n lương.75 s có m t gi i h n là 75 ph n t . b t c lúc nào vi c thêm vào m t ph n t m i làm vư t qua gi i h n hi n hành c a Hashtable. Gi i h n c a Hashtable là dung lư ng nhân lên b i các y u t ư c n p. Hashtable() Xây d ng m t l p m i b ng cách s d ng giá tr m c nh cho dung lư ng ban u và y u t n p. Nó bao g m m t s l p sau: Hashtable Random Vector StringTokenizer 4. float) Xây d ng m t l p m i v i dung lư ng ban u ư c ch nh và y u t n p.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 if (args[0]. b n có th ch nh dung lư ng ban u và y u t n p (load factor). nó có th trình n nh ng d án. và m t y u t n p là 0. B ng băm “hash1” s lưu tr 500 ph n t .1 L p Hashtable L p Hashtable m nghĩa trong gói java. và c như v y. Khi b ng băm lưu tr v a y 80% (m t y u t n p vào c a 0. Hashtable(int. Aptech is the right choice!”).util Gói Java.6 Gói java. i u này s làm cho hashtable tăng kích thư c lên.out.6.7 Các phương th c xây d ng Hashtable. B ng 4. (value). thư ng xuyên trong t t c các lo i chương trình ng d ng.80). Trong trư ng h p này. Các phương th c xây d ng cho b ng băm ư c bi u di n trong b ng sau: Constructor Hashtable(int) Purpose Xây d ng m t b ng m i v i dung lư ng ban u ư c ch nh.0.equals(“Aptech”)) System.util. Ví d . Hashtable hash1 = new Hashtable(500. l p này cũng ư c nh Hashtable ư c s d ng ánh x khoá (key) n giá tr ư c s d ng ánh x các tên n tu i.

Phương th c get() tr v ph n t cùng v i khoá (tên và năm). và ư c truy l c b ng cách s d ng phương th c get(). tên c a các t p nh là các khoá. Object) là Object) khoá và giá tr .Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 ư c tăng lên. Các ph n t ư c thêm vào b ng băm b ng cách s d ng phương th c put(). M t vài phương th c c a Hashtable ư c tóm t t trong b ng sau: Phương th c clear() clone() contains(Object) M c ích Xoá t t c các ph n t t b ng băm. tìm t p nh ó trong b ng băm. get(Object key) Tr v i tư ng có khoá ư c ch nh. th y có danh sách ch a b t kỳ các t p nh t 1969. public class HashTableImplementer{ public static void main(String args[]) { //t o m t b ng băm m i Hashtable ht = new Hashtable(). B ng 4. isEmpty() Tr v true n u b ng băm r ng. ct) elements() Tr v m t t p h p ph n t c a b ng băm.*. Tr v True n u b ng băm ch a các i tư ng ư c ch nh. Trong chương trình này. //thêm các t p nh t t nh t c a Pink Floyd Khoa Công ngh Thông tin – ih c àL t Trang 99 . T o m t b n sao c a Hashtable. Thêm m t ph n t m i vào b ng băm (Object. key) size() Tr v s ph n t trong b ng băm. toString() Tr v i di n chu i ư c nh d ng cho b ng băm.8 Các phương th c l p Hashtable. M i ph n t trong m t hashtable bao g m m t khoá và m t giá tr . “containsKey” ư c s d ng tìm ki m cho khoá “Animals”. Phương th c “get()” ư c s d ng tìm t p nh “Wish You Were Here” có trong b ng băm không. remove(Object Xoá m t i tư ng ư c cho b i khoá ư c ch nh. containsKey(Obje Tr v True n u b ng băm ch a khoá ư c ch nh. Các phương 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 băm. keys() Tr v t p h p các khoá trong b ng băm. Các ph n t có th ư c xoá t m t b ng băm v i phương th c remove(). rehash() Thay i b ng băm thành m t b ng băm l n hơn.12 import java. Chương trình sau s d ng l p Hashtable. và các năm là các giá tr .util. Chương trình 4. put(Object. “contains” ư c s d ng tra c u ph n t nguyên 1969.

ht.println((String)enum.println(“Animals was found”).nextElement()).out. for(Enumeration enum = ht.println(“Remaining:\r\n”). new Integer(1969)). System. } } Khoa Công ngh Thông tin – ih c àL t you Were Here was released Trang 100 . enum.out. new Integer(1995)).out.contains(new Integer(1969))) System. //Duy t qua t t c các khoá trong b ng. //ki m tra cho b t kỳ t p nh nào t 1969 if(ht. //Tìm ra Integer year = (Integer)ht. new Integer(1997)).out.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 ht.toString()).remove(“Ummagumma”).println(“Wish in”+year. ht. new Integer(1973)).put(“Dark Side of the Moon”. System.containsKey(“Animals”)) System.out.put(“Pulse”.) System. //Hi n th b ng băm System.put(“Wish You Were Here”.hasMoreElements().println(“Removing Ummagumma\r\n”).toString()).get(“Wish You Were Here”). ht. ht.println(“An album from 1969 exists”).keys(). //ki m tra cho t p nh các con thú if(ht.println(“Initailly: “+ht.put(“Animals”. ht.out.out. new Integer(1975)). //Xoá m t t p nh System.put(“Ummagumma”.

Có hai phương th c xây d ng ư c nh nghĩa.2 L p Random L p này là m t b t o s gi ng u nhiên.0 t b t o s ng u nhiên. M t khác. M t trong nh ng phương th c xây d ng này l y giá tr kh i u như m t tham s . Vi c xây d ng m t b t o s ng u nhiên v i m t giá tr kh i u là m t ý tư ng hay.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 K t qu s ch y chương trình như sau: Hình 4. b n có th s d ng b t kỳ các phương th c sau ây c p m t giá tr t nó: nextDouble() nextFloat() nextGaussian() nextInt() nextLong() Các phương th c xây d ng và các phương th c c a l p Random ư c tóm t t trong b ng sau: Phương th c random() random(long) nextDouble() nextFloat() nextGaussian() M c ích t o ra m t b t o s ng u nhiên m i T o ra m t b t o s ng u nhiên m i d a trên giá tr kh i t o ư c ch nh.0 n 1.6. và s d ng th i gian hi n t i như m t giá tr kh i u. T o ra các giá tr Gaussian s có m t giá tr trung bình c a 0.4 K t qu c a HashTableImplementer 4. M t khi b t o s ng u nhiên ư c t o ra. Tr v m t giá tr ki u double k ti p gi a 0. Tr v giá tr ki u double ư c phân ph i Gaussian k ti p t b t o s ng u nhiên. và m t ih c àL t Khoa Công ngh Thông tin – Trang 101 . Tr v m t giá tr ki u float k ti p gi a 0. i u này có ý nghĩa trong vi c g r i chương trình.0F và 1.0F t b t o s ng u nhiên. Phương th c xây d ng khác không có tham s . tr khi b n mu n b t o s ng u nhiên luôn t o ra m t t p các giá tr gi ng nhau. th nh tho ng nó r t h u ích t o ra trình t gi ng nhau c a các s random.

Khi m t l p Vector dùng h t dung lư ng c a nó. Phương th c elements() tr v m t t p h p các i tư ng ư c lưu tr trong l p Vector. M t ph n ư c thêm vào m t l p Vector b ng cách s d ng phương th c addElement(). setSeed(long) Thi t l p giá tr kh i t o t b t o s ng u nhiên.0. và lư ng tăng m c nh. nextLong() Tr v giá tr ki u long k ti p t m t b t o s ng u nhiên. Tương t . L p Vector c a Java gi i quy t v n này. Tr v dung lư ng hi n th i c a l p Vector. sao chép l p vector. L p Vector cung c p ba phương th c xây d ng khác nhau mà có th chúng ta ch nh dung lư ng kh i t o. khi nó ư c t o ra. Trong th c t có nhi u trư ng h p không th xác nh kích thư c c a m ng trư c khi t o nó. nextInt() 4. các ph n t khác nhau này là th hi n c a các l p khác nhau. T i b t kỳ th i i m. Nó cung c p m t d ng m ng v i kích thư c ban u. thì dung lư ng c a nó ư c gia tăng b i m t s lư ng riêng cho Vector ó. m t l p Vector có dung lư ng lưu tr m t s lư ng nào ó các ph n t .6. m t ph n t có th ư c thay th b ng cách s d ng phương th c setElementAt(). M t l p Vector có th tìm ki m b ng cách s d ng phương th c contains().10 các phương th c xây d ng c a l p Vector. Vector(int. Các phương th c xây d ng này ư c tóm t t trong b ng sau: Phương th c xây 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. m ng này có th tăng thêm khi nhi u ph n t ư c thêm vào. M t l p Vector lưu tr các m c là ki u Object.9 Các phương th c l p Random. M t l p Vector có th lưu tr các ph n t khác nhau.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 l ch tiêu chu n c a 1. B ng 4.3 L p Vector M t trong các v n v i m t m ng là chúng ta ph i bi t nó l n như th nào khi chúng ta t o nó. Tr v giá tr ki u Integer k ti p t m t b t o s ng u nhiên. B ng 4. nó có th dùng lưu tr các th hi n c a b t kỳ l p Java nào. Vector() T o ra m t l p Vector m i v i dung lư ng kh i t o m c nh. Các phương th c này và các phương th c thành viên khác c a l p Vector ư c tóm t t trong b ng dư i ây: Phương th c addElement(Object) capacity() clone() contains(Object) M c ích Thêm ph n t ư c ch nh vào l p Vector. int) T o ra m t l p Vector m i v i dung lư ng ban u ư c ch nh. nhưng không ph i là các ph n t c a nó. và tăng s lư ng c a m t Vector. phương th c này ơn gi n ch tìm s xu t hi n c a m t i tư ng trong Vector. và lư ng tăng. Tr v True n u l p Vector ch a i tư ng Khoa Công ngh Thông tin – ih c àL t Trang 102 .

removeAllElements() Xoá t t c các ph n t t l p Vector. tr v v trí u tiên tìm th y. “Five”.*. Nó ch a 6 ph n t : “Numbers In Words”. insertElementAt(Object. lastIndexOf(Object) Tìm ki m lóp Vector. removeElementAt(int) Xoá i tư ng t i ch m c ư c ch nh. Chèn i tư ng ư c ch nh t i v trí ư c int) ch nh. “One”. “Three”. int) Tìm ki m l p Vector b t u t v trí ch nh. firstElement() Tr v ph n t u tiên trong l p Vector. ensureCapacity(int) m b o r ng l p Vector có th lưu tr ít nh t dung lư ng t i thi u ư c ch nh. public class VectorImplementation{ public static void main(String args[]) { Khoa Công ngh Thông tin – ih c àL t Trang 103 . Size() Tr v s c a các ph n t hi n th i trong l p Vector. Chương trình 4. int) Tìm ki m l p Vector b t u t i s ch m c ư c ch nh. int) Thay th i tư ng t i ch m c ư c ch nh v i i tư ng ư c ch nh. và tr v ch m c u tiên tìm th y i tư ng. và tr v ch m c c a i tư ng tìm th y cu i cùng. toString() Tr v m t chu i ch a n i dung c a l p Vector. lastElement() Tr v ph n t cu i cùng trong l p Vector.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 ư c ch nh. “Four”.13 import java. elements() Tr v m t b ng li t kê c a các ph n t trong l p Vector.util. setElementAt(Object. lastIndexOf(Object. removeElement(Object) Xoá i tư ng ư c ch nh t l p Vector. Sao chép các ph n t c a l p Vector vào m ng ư c ch nh. setSize(int) Thi t l p kích thư c c a l p Vector thành kích thư c m i ư c ch nh. “Two”. trimToSize() nh l i kích thư c c a l p Vector di chuy n dung lư ng th a trong nó. và tr v ch m c c a ph n t cu i cùng tìm th y. B ng 4. isEmpty() Tr v True n u l p Vector không có ph n t . indexOf(Object) Tìm ki m l p Vector.11 Các phương th c l p Vector copyInto(Object []) Chương trình sau t o ra m t l p Vector vect. Phương th c removeElement() ư c s d ng xoá các ph n t t vect. elementAt(int) L y ph n t v trí ư c ch nh. indexOf(Object.

vect.print(vect. for(int i = 0. i++){ System.size()).removeElement(“Five”).println(“Size: “+vect. vect.i<vect.out. } } } Quá trình hi n th k t qu s ư c mô t như hình dư i.4). “). vect.addElement(“Two”).insertElementAt(“Four”.addElement(“Five”). System.out.println(“Vector “).out.addElement(“Four”).insertElementAt(“Numbers In Words”. for(int i = 0. Khoa Công ngh Thông tin – ih c àL t Trang 104 . System.addElement(“Three”).addElement(“One”).out. vect.out.println(vect.println(“”). vect.elementAt(i)+” . “). System.size()). i<vect. System.i++) { System.out. vect.out. vect.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Vector vect = new Vector().size().elementAt(i)+ “ . } vect.println(“Size: “+vect.size().0).println(“Vector “). System.

StringTokenizer st3 = new StringTokenizer(“aaa. /. true).4 L p StringTokenizer M t l p StringTokenizer có th s d ng tách m t chu i thành các ph n t (token) nh hơn. String. Ví d . và -) trong khi phân tích m t bi u th c. “+-*/”. T o ra m t i tư ng StringTokenizer d a boolean) trên chu i ư c ch nh. String) chu i ư c ch nh và m t t p các d u phân cách.6. Ta cũng có th s d ng t p các toán t toán h c (+. . B ng sau tóm t t 3 phương th c xây d ng c a l p StringTokenizer: Phương th c xây d ng StringTokenizer(String) Ý nghĩa T o ra m t i tư ng StringTokenizer m i d a trên chu i ư c ch nh. tách ra các thành token ta có th tuỳ bi n ch ra m t t p d u phân cách các token khi kh i t o i tư ng StringTokenizer. m i t trong m t câu có th coi như là m t token. N u ta không ch ra t p d u phân cách thì m c nh là d u tr ng (space.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Hình 4.bbbb. StringTokenizer(String. và m t c hi u cho bi t n u các d u phân cách s ư c tr v như các token hay không.”). l p StringTokenizer ã i xa hơn vi c phân tách các t trong câu.ccc”.12 Các phương th c xây d ng c a l p StringTokenizer. 4. StringTokenizer(String.. trên ư c s d ng trong các ví d sau: Các phương th c xây d ng StringTokenizer st1 = new StringTokenizer(“A Stream of words”).5 K t qu c a chương trình minh ho l p Vector. “. B ng 4. StringTokenizer st2 = new StringTokenizer(“4*3/2-1+4”. tab..). m t t p các d u phân cách. Tuy nhiên. Khoa Công ngh Thông tin – ih c àL t Trang 105 . *. Strìng) T o ra m t i tư ng StringTokenizer m i d a trên (String.

“st2” phân tách m t dòng c a các trư ng ư c phân cách b i d u ph y. Vì th . nextElement() Tr v token k ti p trong chu i.util. Nó thì gi ng h t như hasMoreTokens. hasMoreTokens() Tr v True n u còn có token ang ư c ánh d u trong chu i. các ký t xu ng dòng. StringTokenizer c a “st3” s d ng d u ph y như m t d u phân cách. Th hai. Câu l nh th 3. /.13 Các phương th c l p StringTokenizer. Các phương th c có th s d ng c a l p StringTokenizer ư c tóm t t trong b ng sau: Phương th c countTokens() hasMoreElements() M c ích Tr v s các token còn l i. như v i “st1”. StringTokenizer c a “st1” s ư c xây d ng b ng cách s d ng các chu i ư c cung c p và d u phân cách m c nh. và hi n th các token. nextToken() Tr v Token k ti p trong chu i. Nó thì gi ng như nextToken. “st1” ư c s d ng phân tách m t bi u th c toán h c.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Trong câu l nh u tiên. tab. nextToken(String) Thay i b d u phân cách b ng chu i ư c ch nh. phương th c hasMoreTokens() và nextToken() ư c s d ng duy t qua t p các token. L p StringTokenizer cài t giao di n Enumeration. D u phân cách m c nh là kho ng tr ng. nó bao g m các phương th c hasMoreElements() và nextElement(). Chương trình 4. B ng 4. u tiên. Các d u phân cách này thì ch s d ng khi phân tách văn b n. String mathExpr = “4*3+2/4”. Tr v True n u còn có token ang ư c ánh d u trong chu i. public class StringTokenizerImplementer{ public static void main(String args[]){ // t m t bi u th c toán h c và t o m t tokenizer cho chu i ó. Nó gi ng h t như hasMoreElements. và -. C hai tokenizer. Câu l nh th hai trong ví d trên xây d ng m t i tư ng StringTokenizer cho các bi u th c toán h c b ng cách s d ng các ký hi u *. Trong ví d này. và sau ó tr v token k ti p trong chu i.*. Hãy xem xét chương trình ã cho bên dư i. Khoa Công ngh Thông tin – ih c àL t Trang 106 . Nó thì gi ng như nextElement.13 import java. hai i tư ng StringTokenizer ã ư c t o ra. +.

and field4”. //t o m t chu i c a các trư ng ư c phân cách b i d u ph y và t o //m t tokenizer cho chu i.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 StringTokenizer st1 = new StringTokenizer(mathExpr.field3. //trong khi v n còn các token.hasMoreTokens()) System.nextToken()).false). System. Khoa Công ngh Thông tin – ih c àL t Trang 107 .nextToken()).out. StringTokenizer st2 = new StringTokenizer(commas. while(st1.field2. true). } } K t qu ch y chương trình ư c mô t như hình dư i.”.println(“Tokens of Hình 4. hi n th mathExpr: “). while (st2.out.println(“Comma-delimited tokens : “). hi n th .”*+/-“. //trong khi v n còn token.out.6 K t qu ch y chương trình minh ho l p StringTokenizer. String commas = “field1.hasMoreTokens()) System.”.println(st2. System.out.println(st1.

L p System cung c p các ti n ích như là.lang. Các i tư ng c a l p này thì linh ng hơn.util ch a các l p sau: • • • • Hashtable Random Vector StringTokenizer L p Hashtable có th ư c s d ng t o m t m ng c a các khoá và các giá tr . L p java. M t gói là m t thư m c t ch c các giao di n và các l p c a b n. m t giao di n ư c s d ng thay cho m t l p tr u tư ng. nh p chu n. Các l p String ư c s d ng t o và x lý chu i. L p Runtime óng gói môi trư ng th i gian ch y. d u ph y ng (floating-point). ho c phân b Gaussian. ho c ư c n i vào v trí cu i cùng c a chu i. java. L p StringBuffer cung c p các phương th c khác nhau x lý chu i. có th ư c so sánh và ư c n i vào nhau. xu t.Math cung c p các phương th c th c hi n các hàm toán h c. CLASSPATH là m t danh sách c a các thư m c mà JVM tìm ki m các t p tin l p.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Tóm t t bài h c Khi không có s thi hành th a k . Khoa Công ngh Thông tin – ih c àL t Trang 108 . String Pool i di n cho t t c các chu i ã ư c t o ra trong m t chương trình. Nó cho phép các ph n t ư c tra c u b i khoá ho c giá tr . ó là. L p Random là m t b t o s gi ng u nhiên mà có th tr v các giá tr ki u integer. Các ki u d li u nguyên th y có th ư c x lý truy c p thông qua các l p trình bao b c (Wrapper) c a chúng. L p Vector có th s d ng lưu tr b t kỳ các i tư ng nào. L p StringTokenizer cung c p m t cơ ch m m d o cho vi c phân tách các chu i. Nó có th lưu tr các i tư ng c a nhi u l p khác nhau. và các lu ng l i. các chu i có th ư c gán. các ký t ho c các chu i có th ư c chèn vào gi a i tư ng StringBuffer.

Khoa Công ngh Thông tin – ih c àL t Trang 109 .là m t danh sách c a các thư m c. Trong khi t o gói. ư c s d ng ánh x các khoá v i các giá tr . ……………………. 7... …………………luôn là l nh u tiên trư c các l nh: import...Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Ki m tra s ti n b 1. …………………phương th c ư c s d ng thay th m t ký t trong l p StringBuffer b ng m t ký t khác t i v trí ư c ch nh. c a l p StringTokenizer tr v s token còn l i. L p bao b c (wrapper) cho các ki u d li u double và long cung c p hai h ng s là ………………. mà JVM s tìm ki m các t p tin l p. M t giao di n có th ch a nhi u các phương th c. class trong chương trình Java.và……………. Phương th c…………………. 6. ………………. 8. thì mã ngu n ph i n m trong thư m c có tên như tên gói. 2. 5.. úng/Sai 4. úng/Sai 3.

Vi t m t chương trình mà nh p vào m t s i n tho i t i dòng l nh. Chương trình s hi n th mã qu c gia (091). và s i n tho i (6758080) (S d ng l p StringTokenizer). Vi t m t chương trình b ng cách s d ng các hàm c a l p Math bình phương c a các s l n nh t và nh nh t c a m t t p các s ư c nh p vào b i ngư i s d ng t i dòng l nh.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Bài t p 1. 2. T o m t gói và vi t m t hàm. 4. hi n th 3. hàm ó tr v giai th a c a m t i s ư c truy n vào trong m t chương trình. Hãy t o ra s ghi nh c a chính b n. T o m t giao di n và s d ng nó trong m t chương trình c a Java hi n th bình phương và lu th a 3 c a m t s . Hi n th các m u tin còn l i. Khoa Công ngh Thông tin – ih c àL t Trang 110 .14 Chương trình ph i làm như sau: Ki m tra xem s 3443 có t n t i trong s ghi nh c a b n hay không. mã vùng (022). Hi n th s i n tho i c a Tina. 5. Xoá s i n tho i c a Joy. Ki m tra xem m u tin c a Jack có hi n h u trong s ghi nh c a b n hay không. nơi mà nh ng con s ư c nh p vào như sau: Joy Jack Tina 34543 56765 34567 B ng 4. như m t chu i có d ng (091) 022-6758080.

Trong chương này. h p danh sách hay các i u khi n khác. chúng có th ư c i u khi n b i ngư i l p trình. AWT cung c p các thành ph n khác nhau t o GUI hi u qu và lôi cu n ngư i s d ng. label v. Các ngôn ng như VB hay VC++ có th cung c p ch c năng kéo và th trong khi ó ph n m m gi ng như C++ yêu c u ngư i l p trình ph i vi t toàn b mã xây d ng GUI. AWT là vi t t t c a Abstract Windowing Toolkit.v… có th ư c nhìn th y trên màn hình. ta s th o lu n v Java h tr tính năng GUI cùng các s thi hành c a chúng.1 Gi i thi u v AWT Các ng d ng ph n m m hi n nay r t thân thi n vì ư c trình bày nhi u màn hình giao di n h a p m t. t o các i tư ng GUI chúng ta c n nh p gói java. hay b i ngư i s d ng. Các thành ph n này này có th là: V t ch a (Container) Khoa Công ngh Thông tin – ih c àL t Trang 111 . nhãn. B t kỳ cái gì chung cho t t c các thành ph n GUI u ư c tìm th y trong l p Component. Các ngôn ng l p trình hi n nay cung c p các i tư ng h a. Các ngôn ng l p trình khác nhau cung c p nhi u cách khác nhau t o GUI.awt.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Chương 5 AWT N i dung chính Gi S S S X i thi u v AWT d ng các Component d ng các Container d ng các Layout Manager lý s ki n c a các Component 5. GUI a d ng t ng d ng n ng d ng và có th ch a nhi u i u khi n như h p văn b n. Các thành ph n như là button. GUI cung c p ch c năng nh p li u theo cách thân thi n v i ngư i dùng.GUI). AWT là m t b các l p trong Java cho phép chúng ta t o GUI và ch p nh n các nh p li u c a ngư i dùng thông qua bàn phím và chu t. M t trong s nh ng k t qu quan tr ng nh t chính là các ngôn ng hi n nay ư c d a trên Giao di n ngư i dùng h a (Graphical User Interface . Ngư i dùng tương tác v i i tư ng này thông qua con tr chu t hay bàn phím. M t ph n t GUI ư c thi t l p b ng cách s d ng th t c sau: T o i tư ng Xác nh s xu t hi n ban u c a i tư ng Ch ra nó n m âu Thêm ph n t vào giao di n trên màn hình M t thành ph n GUI là m t i tư ng tr c quan.

5. Frame có th ho t ng như m t v t ch a hay như m t thành ph n (component). 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 . 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 nhưng không hi n th (invisible) Frame(String title): T o m t frame không hi n th . và các thành ph n có kích thư c nh hơn khác. Khoa Công ngh Thông tin – ih c àL t Trang 112 . có tiêu Chương trình 5. Frame và Panel là các v t ch a thư ng ư c s d ng.2. L p này tr c ti p hay gián ti p phái sinh ra hai v t ch a ư c s d ng ph bi n nh t là Frame và Panel. . Frame là l p con c a Window.1 minh ho cách t o m t Frame.1 H th ng cây phân c p l p AWT 5.awt ch a m t l p g i là Container. Applet là m t v t ch a. Gói java. Appletviewer là m t công c ư c JDK h tr xem các applet. giao di n và các gói khác. latch. B t c v t gì mà k th a t l p Container s là v t ch a.2 Container Container là vùng mà b n có th t các thành ph n giao di n c a b n vào ó. Panel không có các ư ng biên. applet ư c d n xu t t Panel. hook. Chúng ư c trình bày trong m t c a s c l p.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Thành ph n (Component) Trình qu n lý cách trình bày (Layout manager) h a (Graphic) và các tính năng v (draw) Phông ch (Font) S ki n (Event) Gói AWT ch a các l p. chúng ư c trình bày trong m t c a s do trình duy t hay appletviewer cung c p. Như khung (frame). B n hãy xem v t ch a như m t c a s . c a s này có ch a các ư ng biên xung quanh. pane.1 Frame Frame không ph thu c vào applet và trình duy t. Object CheckboxGroup MenuComponent BorderLayout Component FlowLayout GridLayout Hình 5. Frame là c a s cl p nhưng ngư c l i Panel là vùng n m trong c a s khác. Hình sau ây mô t m t ph n nh c a h th ng phân c p l p AWT. các ph n t này có th ư c v hay ư c tô màu tuỳ thích.

setSize(300. l p con này s t o Frame.2 Panel Panel ư c s d ng Khoa Công ngh Thông tin – nhóm m t s các thành ph n l i v i nhau. trong phương th c kh i t o này ta cho g i phương th c super().Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Chương trình 5.setVisible(true). f.2 Hình 5. Tuy nhiên. ta s d ng hai phương th c n m trong phương th c main: setSize() và setVisible(). L p FrameDemo này có m t phương th c kh i t o. làm ư c i u này. Nó s g i phương th c kh i t o c a l p cha (trong trư ng h p này là Frame). Cách ơn ih c àL t Trang 113 .1 import java. } } L p Framedemo là m t l p con c a l p Frame. Frame v n không nhìn th y ư c và không có kích thư c.2 Frame 5.200).*. M c ích c a super() là g i phương th c kh i t o c a l p cha. class FrameDemo extends Frame{ public FrameDemo(String title){ super(title). f. K t xu t c a chương trình gi ng như hình 5.2. } public static void main(String args[]){ FrameDemo f=new FrameDemo(“I have been Frameed!!!”).awt. Nó s t o m t i tư ng c a l p con.

200).*.setSize(300. Frame f=new Frame(“Testing a Panel”). f.setVisible(true). Chương trình 5. và không có kích thư c. class Paneltest extends Panel{ public static void main(String args[]){ Paneltest p=new Paneltest(). f. Tuy nhiên. f.3 Panel Khoa Công ngh Thông tin – ih c àL t Trang 114 . Chúng ta s d ng hai phương th c trong phương th c main – setSize() và setVisible() thi t l p kích thư c và hi n th frame. Do ó.2 ch ra cách t o m t panel: Chương trình 5. frame s không nhìn th y ư c. Vì v y ta c n t o m t frame m i và thêm Panel m i ư c t o này vào ó. hàm Panel().add(p).2 import java. chúng ta c n thêm panel n m t frame. } public Paneltest(){ } } Panel không th ư c nhìn th y tr c ti p.awt.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 gi n nh t t o m t panel là s d ng phương th c kh i t o c a nó. K t xu t c a chương trình: Hình 5.

Tuy nhiên chúng không ư c s d ng thư ng xuyên. modal). Tham s ‘modal’ ch ra r ng dialog s ngăn ch n b t kỳ tương tác nào x y n v i các c a s ư c m khác. // calling frame String title = “Title”.3 Dialog L p ‘Dialog’ tương t như l p Frame.4 Các l p thành ph n Bây gi chúng ta hãy xét m t s thành ph n thư ng ư c s d ng. Label. TextField TextComponent TextArea Button C o m p o n e n t Label Checkbox List Choice Container Canvas Scrollbar Panel Window Applet Frame Dialog Hình 5. trong khi dialog ang ư c hi n th trên màn hình. i tư ng dialog ư c t o như sau: Frame myframe=new Frame(“My frame”). Scrollpane và Dialog. n. boolean modal = true. Khoa Công ngh Thông tin – ih c àL t Trang 115 . // whether modal or not Dialog dlg=new Dialog(myframe. title.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 5. Ki u h p tho i này ngăn ch n ngư i dùng tương tác v i các c a s khác (c a cùng ng d ng) trên màn hình. có th ư c thay i kích thư c hay làm cho nhìn th y.2. Ví d ư c dùng ph bi n nh t là Textfield. Textarea v. 5.v… Và các thành ph n cao c p khác như Scrollbar. nghĩa là Dialog là l p con c a l p Window. Checkbox. cho t i khi dialog ư c óng l i.3 Thành ph n (Component) M t thành ph n có th ư c t trên giao di n ngư i dùng.

class Labeltest extends Frame{ Label label1=new Label(“This is just a label”). Nó không th ư c s a i.3. Label(String labeltext) T o m t Label v i n i dung ư c cho. int alignment) T o m t Label v i m t ch Label.1 Các phương th c c a Label Chương trình 5. } public static void main(String args[]){ Labeltest f=new Labeltest(“Label”). dư i: Phương th c setFont(Font f) setText(String s) getText() Ch c năng Thay i phông ch c a Label Thi t l p nhãn cho Label L y n i dung hi n t i c a nhãn B ng 5.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 5.3 canh l . Khoa Công ngh Thông tin – ih c àL t Trang 116 .LEFT.1 Nhãn (Label) L p này ư c s d ng trình bày m t String.RIGHT hay Label. b ng bên Các phương th c ư c s d ng ph bi n c a label ư c trình bày import java. Label(String labeltext.CENTER. canh l có th là Label. add(label1). public Labeltest(String title){ super(title).3 ch ra cách s d ng c a Label: Chương trình 5. ây là m t chu i ch c.awt.*. S d ng m t trong nh ng constructor sau ây t o m t label: Label() T o m t Label tr ng.

3. Frame là container mà thành ph n Label ư c thêm vào. Trong Java.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 f. K t xu t c a chương trình ư c ch ra hình 5. ây. L y n i dung c a TextField. Gán n i dung cho TextField.setSize(300.2 Ô văn b n (TextField) M t Textfield là m t vùng ch ch a m t dòng văn b n. TextField(int columns): T o m t textfield m i v i s c t ư c cho trư c.5 Hình 5.show(). Xác nh TextField có so n th o ư c hay không. trong ó văn b n có th ư c hi n th hay ư c nh p vào b i ngư i dùng. Xác nh xem trư ng có ang trong mode so n th o hay không. TextField(String s): T o m t textfield m i v i chu i văn b n ư c cho trư c.5 Label 5.200). TextField(String s. Khoa Công ngh Thông tin – ih c àL t Trang 117 . f. Vi c này ư c th c hi n b ng cách s d ng phương th c add(). Giá tr tr v ki u Boolean. Các phương th c thư ng ư c s d ng c a sau: Phương th c setEchoChar(char) setText(String s) getText() setEditable(boolean) isEditable() i tư ng TextField ư c tóm t t trong b ng Ch c năng t các kí t ư c hi n ra thay th ký t nh p vào. Nó ch ư c so n th o khi giá tr tham s truy n vào là True. 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. } } Label s hi n th ch khi nó ư c thêm vào container. int columns): T o m t textfield m i v i n i dung và s c t ư c cho trư c.

public TextFieldtest(String title){ super(title).Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 B ng 5. class TextFieldtest extends Frame{ TextField tf1=new TextField(30). f. chúng ta s d ng phương th c setLayout() thay i cách trình bày c a các thành ph n trên v t ch a. } public static void main(String args[]){ TextFieldtest f=new TextFieldtest(“TextField”). } } Trong chương trình này.show().6 TextField Khoa Công ngh Thông tin – ih c àL t Trang 118 .*.200). Layout manager có ch c năng x p x p các thành ph n trong m t v ch a. K t xu t c a chương trình ư c ch ra hình bên dư i: Hình 5. setLayout(new FlowLayout()).4 ch ra cách s d ng c a TextField: Chương trình 5.awt.setSize(300. f.4 import java.2 Các phương th c c a TextField Chương trình 5. add(tf1).

Các phương th c thư ng ư c s d ng nhi u nh t c a TextArea: Phương th c setText(String) getText() setEdiable(boolean) isEdiable() insertText(String.5 ch ra cách s d ng c a TextArea: Chương trình 5.5 import java. TextArea(int rows. B ng 5.3 Các phương th c c a TextArea Chương trình 5. s c t i tư ng này c n có. int cho trư c.3 Vùng văn b n (TextArea) M t Textarea ư c s d ng khi văn b n nh p vào có trên hai hay nhi u dòng. Xác nh xem TextArea có ang trong ch so n th o ư c không. Tr v giá tr là ki u Boolean.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 5. Textarea có m t scrollbar. int cols): T o m t TextArea m i v i dung. int) replaceText(String. int. 3) B trí ph n t này trên màn hình. Tr v n i dung c a TextArea. int) Ch c năng Gán n i dung cho TextArea. làm theo các bư c sau: 1) T o m t i tư ng. t om Textarea.3. b n có th s d ng các constructor sau t o TextArea: TextArea(): T o m t TextArea m i. TextArea(String text. Xác nh xem TextAreacó th ư c so n th o hay không. TextArea ta1=new TextArea(). s dòng và s c t ư c cho trư c. Chèn chu i ư c vào v trí ư c cho trư c. Trong Java. Thay th văn b n n m gi a v trí int. class TextAreatest extends Frame{ Label lbl=new Label(“Details”). int cols): T o m t TextArea m i v i s lư ng c t và dòng ư c cho trư c. TextArea có th ư c so n th o khi giá tr này là True. int rows. public TextAreatest(String title){ Khoa Công ngh Thông tin – ih c àL t Trang 119 . 2) Ch ra s dòng.*. TextArea(String text): T o m t TextArea m i v cnoij dung ư c cho trư c.awt. TextArea là m t trư ng văn b n có th ư c so n th o v i nhi u dòng.

3) Hi n th ph n t trên màn hình. } public static void main(String args[]){ TextAreatest t=new TextAreatest(“TextArea”). } } K t xu t c a chương trình ư c ch ra hình bên dư i: Hình 5. add(lbl).200).Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 super(title). add(ta1). setLayout(new FlowLayout()). Ví d Trang 120 ơn ih c àL t . t. t om t button.show().3. b n làm theo các bư c sau: 1) T o ph n t Button v i m t nhãn ch ra m c ích c a Button.4 Button (nút n) Nút n hay còn g i là nút l nh là m t ph n không th thi u c a b t kỳ GUI nào. S d ng button là cách d nh t nh n các tác ng c a ngư i dùng. 2) B trí ph n t này trên màn hình.7 TextArea 5. t. S d ng m t trong hai constructor sau Button() Button(String text) S d ng setLabel() và getLabel() Khoa Công ngh Thông tin – t o các button trong Java: thi t l p và l y giá tr nhãn c a button.setSize(300.

show(). add(b1). add(b2).*. } } K t xu t c a chương trình ư c ch ra hình 5.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 gi n sau ây s t o ra 3 button ư c trình bày trong chương trình 5.6: Chương trình 5. Hình 5. class Buttontest extends Frame{ Button b1 = new Button(“red”). t. public Buttontest(String title){ super(title). Button b2 = new Button(“Green”).8 Button Khoa Công ngh Thông tin – ih c àL t Trang 121 . setLayout(new FlowLayout()).setSize(300. t. add(b3). } public static void main(String args[]){ Buttontest t= new Buttontest(“Button”). Button b3 = new Button(“Blue”).6 import java.200).awt.8.

B n ch có th ch n m t option trong nhóm các nút radiobutton. Ngư i dùng ph i click trên các checkbox ch n hay b ch n chúng. ngư c l i b n có th ch n nhi u hơn m t checkbox t i m t th i i m. u tiên chúng ta t o i tư ng CheckboxGroup như sau: CheckboxGroup cg=new CheckboxGroup().false). false). cg. Nó ư c s d ng như m t option button xác nh các ch n l a. Checkbox b1=new Checkbox(“red”. S d ng các constructor sau t o các checkbox trong Java: Checkbox(): T o m t checkbox tr ng. Làm theo các bư c sau t o các checkbox hay radiobutton: 1) 2) 3) 4) T o ph n t .awt. thi t l p và nh n v Chương trình 5. Hi n th các ph n t trên màn hình.3. class Checkboxtest extends Frame{ Label l1=new Label(“CheckBoxes”). Checkbox b3=new Checkbox(“Blue”. Sau ó chúng ta t o các i tư ng. B trí các ph n t trên màn hình. Chúng ta s d ng các phương th c setState() và getState() tr ng thái c a checkbox. true). M t radiobutton cũng tương t như m t checkbox. nhw sau: Checkbox male=new Checkbox(“male”.true). Xác nh tr ng thái kh i u c a ph n t (ch n hay không ch n). Checkbox b2=new Checkbox(“Green”.false).7 minh h a cách s d ng c a các checkbox và các radiobutton: Chương trình 5. cg. Khoa Công ngh Thông tin – ih c àL t Trang 122 . Checkbox female=new Checkbox(“female”.5 Checkbox và RadioButton Checkbox ư c s d ng khi ngư i dùng ti n hành ch n m t hay nhi u tùy ch n. t o Thành ph n checkbox có th s d ng m t l p ph ư c g i là CheckboxGroup ra các radiobutton. Checkbox(String text): T o m t checkbox v i nhãn ư c cho. t o các radiobutton.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 5.7 import java.*.

ta ưa giá tr true như m t tham s cho hàm contructor Checkbox. Checkbox b4=new Checkbox(“small”. 02 checkbox ư c ánh d u ch n.true).false). add(b2). add(b1). setLayout(new GridLayout(8. t. } public static void main(String args[]){ Checkboxtest t=new Checkboxtest(“Checkbox and radiobutton”). t.show(). ngoài ra còn có m t tham s String là nhãn c a Khoa Công ngh Thông tin – ih c àL t Trang 123 .200). add(b4). i tư ng này ho t ng như m t container s ch a thành ph n checkbox mà ta ã t o. Checkbox b5=new Checkbox(“medium”. add(b6). Sau ó ta t o 6 checkbox.1)).cb. CheckboxGroup cb=new CheckboxGroup().setSize(300. } } u tiên chúng ta t o m t i tư ng Frame.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Label l2=new Label(“Radiobuttons”). add(b5). public Checkboxtest(String title){ super(title). add(b3).false).cb. làm ư c i u này. Checkbox b6=new Checkbox(“large”. add(l1).cb. add(l2).

r t c n thi t trình bày m t danh sách các ch n l a n ngư i dùng trên m t GUI. ta cho g i phương th c show(). Choice colors=new Choice(). Java h tr l p Choice cho phép chúng ta t o các danh sách ch a nhi u m c.9 Checkbox 5. M t danh sách ch n l a ư c t o b ng cách s d ng m t s các chu i hay các giá tr văn b n. colors.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 checkbox. Khi danh sách v a ư c t o ra. m i l n ch thêm ư c m t m c.8 minh h a cách t o m t danh sách ch n l a: Chương trình 5. Thêm các m c (có ki u là String) vào danh sách. M i th i i m ch thêm ư c m t item b ng cách s d ng phương th c addItem như ư c ch ra bên dư i: colors. Ngư i dùng có th click vào m t hay nhi u m c t danh sách. K t xu t ư c ch ra hình bên dư i: Hình 5. nó s r ng.8 Khoa Công ngh Thông tin – ih c àL t Trang 124 . Hi n th danh sách trên màn hình. hi n th các i u khi n này theo d ng lư i. ta ph i thi t l p cách trình bày v d ng GridLayout có 8 dòng và 1 c t. Cu i cùng. B trí danh sách trên màn hình. Chương trình 5. t o các danh sách ch n l a. hãy làm theo các bư c ư c cho sau ây: 1) 2) 3) 4) T o danh sách các ph n t .addItem(“Green”). hi n th nó.6 Danh sách ch n l a (Choice List) Th nh tho ng. ta t o m t bi u hi n cho l p Checkboxtest và thi t l p kích thư c cho Frame.addItem(“Red”).3.

awt. } public static void main(String args[]){ Choicetest t=new Choicetest(“Choice list”). colors.200). colors. colors.addItem(“Yellow”). public Choicetest(String title){ super(title).addItem(“Red”). t.show(). t. Choice colors=new Choice(). class Choicetest extends Frame{ Label l1=new Label(“What is your favorite color”). colors.addItem(“Orange”). add(l1).addItem(“Black”). setLayout(new FlowLayout()).addItem(“Green”).setSize(300. add(colors). colors.*.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 import java. colors. } } K t xu t ư c ch ra hình bên dư i: Khoa Công ngh Thông tin – ih c àL t Trang 125 .addItem(“Blue”).addItem(“White”). colors.

chúng ư c x p x p theo hàng. bên ph i hay gi a. textbox. setLayout(exLayout).v… M t layout manager t ng b trí các thành ph n này trong container. Bây gi chúng ta s tìm hi u chi ti t các cách trình bày và cách b trí các thành ph n c a ta vào nh ng v trí mong mu n.10 Danh sách ch n l a 5. t trái sang ph i.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Hình 5. Layout manager này s t ng x p x p các thành ph n. T t c các thành ph n ư c t trong m t container.4 Qu n lý cách trình bày (Layout manager) Layout manager i u khi n cách trình bày v t lý c a các ph n t GUI như là button. ‘FlowLayout’ là cách trình bày m c nh c a m t applet. và ư c x p x p nh layout manager tương ng. Layout manager ư c thi t l p b ng phương th c ‘setLayout()’. 5.4.1 FlowLayout manager FlowLayout là layout manager m c nh cho Applet và Panel. Khi m t s thành ph n ư c t o. option button v.RIGHT). Các thành ph n ư c x p x p t góc trái trên n góc ph i dư i c a màn hình. Cho ví d . canh các i u Khoa Công ngh Thông tin – ih c àL t Trang 126 . Các ki u trình bày khác nhau: Flow layout Border layout Card layout Grid layout GridBag Layout T t c các thành ph n mà chúng ta v a t o s d ng layout manager m c nh. Các constructor c a FlowLayout: FlowLayout mylayout = new FlowLayout() // constructor //constructor with alignment specified FlowLayout exLayout=new FlowLayout(FlowLayout. //setting the layout to Flowlayout Các i u khi n có th ư c canh v bên trái.

Chương trình 5. } } K t xu t c a chương trình ch ra hình 5. t.show().11.setSize(300.CENTER)). b n s d ng cú pháp sau: setLayout(new FlowLayout(FlowLayout. add(b1).9 import java. } public static void main(String args[]){ Fltest t=new Fltest(“Flow Layout”). public Fltest(String title){ super(title).*.200). class Fltest extends Frame{ Button b1=new Button(“Center Aligned Button 1”). Button b2=new Button(“Center Aligned Button 2”).awt. add(b2).Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 khi n v bên ph i.RIGHT)). Khoa Công ngh Thông tin – ih c àL t Trang 127 . Button b3=new Button(“Center Aligned Button 3”). Chương trình 5. add(b3). setLayout(new FlowLayout(FlowLayout.9 minh h a v FlowLayout manager. t.

4.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Hình 5. thêm m t thành ph n vào vùng ‘North’. ‘East’.BorderLayout. ‘South’ ư c dàn n m ngang trong khi ó các thành ph n t trong vùng ‘East’ và ‘West’ l i ư c dàn th ng ng. Nh ng thành ph n này có th ư c t các hư ng ‘North’. // thi t l p layout add(b1.BorderLayout. // khai báo thành ph n setLayout(new BorderLayout()). lúc ó Frame s gi ng Khoa Công ngh Thông tin – ih c àL t Trang 128 .NORTH). SOUTH – t phía dư i c a container. ‘West’ và ‘Center’ c a container. // thêm thành ph n vào layout Các thành ph n v n gi nguyên v trí tương i c a chúng k c khi container b thay i kích thư c.2 BorderLayout Manager BorderLayout là layout manager m c nh cho ‘Window’.CENTER). ‘South’. Các thành ph n ư c t trong vùng ‘North’.11 Flowlayout 5. Layout này x p x p t i a 5 thành ph n trong m t container. Các thành ph n ư c t trong vùng ‘center’ s ư c dàn u vào nh ng khu v c n m gi a c a container. WEST – t phía bên trái c a container. // thêm thành ph n vào vùng ‘center’ Khi t t c các thành ph n ư c như sau: t vào các vùng tương ng. CENTER – t gi a c a container. NORTH – t nh c a container. EAST – t phía bên ph i c a container. b n s d ng cú pháp sau: Button b1=new Button(“North Button”). add(b2. ‘Frame’ và ‘Dialog’.

setLayout(card). Chúng ta thi t l p layout c a panel chính là Cardlayout như sau: CardLayout card=new CardLayout().3 CardLayout Manager CardLayout có th lưu tr m t ngăn x p các giao di n. Panel chính s ch a nh ng panel này.*. panelMain. và sau ó t các panel này vào trong BorderLayout. Chương trình 5. chúng ta có th s d ng các Panel v i các layout khác nhau ch a các thành ph n. 5. panelMain. Tham s c a panel và tham s th hai là tên i tư ng Panel.10 u tiên là m t String làm nhãn import java.4.add(“Blue Panel”. panelOne). Phương th c ‘add()’ s d ng hai tham s .10 minh h a CardLayout: Chương trình 5.awt. Bư c k ti p là thêm các panel khác vào panel chính: panelMain. chúng ta b trí t p h p các thành ph n ư c yêu c u trên các panel tương ng. panelTwo).add(“Red Panel”. B ng thư ng là i tư ng Panel.1)). M t thành ph n c l p như button s i u khi n cách trình bày các b ng l p trên cùng.12 BorderLayout BorderLayout có th ch a nhi u hơn 5 thành ph n.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Hình 5. Ví d : panelTwo. Khoa Công ngh Thông tin – ih c àL t Trang 129 . th c hi n i u này. M i panel s ư c b trí vào các layout khác nhau. u tiên. M i giao di n gi ng như m t b ng (card).setLayout(new GridLayout(2.

fourth. add(back).*.setLayout(c1). add(next).third. next=new Button(“Next”). //First panel first=new Panel().second.lbl3.next. Panel p1. lbl2=new Label(“Second”).add(lbl1).first.applet. p1. first. CardLayout c1.// Set panel layout to CardLayout width=”300” lbl1=new Label(“First”). /*<applet code=”CardLayoutDemo.lbl4. lbl4=new Label(“Fourth”). p1=new Panel().lbl2. Khoa Công ngh Thông tin – ih c àL t Trang 130 . lbl3=new Label(“Third”). public void init(){ back=new Button(“Back”).class” height=”100”></applet>*/ public class CardLayoutDemo extends Applet{ Button back. TextField other1. c1=new CardLayout(). Label lbl1.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 import java.

third. //Add panels to the card deck panel p1.add(lbl4).add(“2”. fourth. p1.second).first).fourth).Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 //Second panel second=new Panel(). } } K t xu t c a chương trình như sau: Khoa Công ngh Thông tin – ih c àL t Trang 131 . second.add(lbl2).add(“4”. //Third panel third=new Panel(). add(p1). p1.third).add(“3”. p1. //Fourth panel fourth=new Panel().add(lbl3).add(“1”.

class Gltest extends Frame{ Button btn[]. M i lư i nên ch a ít nh t m t thành ph n. public Gltest(String title){ super(title).11 import java. GridLayout Manager GridLayout tr giúp vi c chia container vào trong ô lư i. String str[]={“1”.4.length. “5”.3)). GridLayout ư c t o như sau: Gridlayout g1=new GridLayout(4.length]. “2”.3). Các thành ph n ư c t trong các ô giao c a dòng và c t.13 CardLayout Trong hình bên trên. “7”. btn=new Button[str.11 minh h a cách trình bày lư i: Chương trình 5. setLayout(new GridLayout(3.4.i++){ Khoa Công ngh Thông tin – ih c àL t Trang 132 . Nhưng ngư i dùng có th i u hư ng sang các panel khác s d ng các phương th c c a CardLayout. “3”. “9”}. i<str. Chương trình 5. 5.awt. “8”.*.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Hình 5. 4 là s dòng và 3 là s c t. “4”. for (int i=0. Vì th ch có th u tiên m i ư c th y trên màn hình. “6”. M t lư i ư c s d ng khi t t c các thành ph n có cùng kích thư c. các panel ư c thêm vào panel chính như là các th riêng bi t.

add(btn[i]).5 GridBagLayout Manager GridBagLayout là cách trình bày hi u qu và ph c t p hơn b t c cách trình bày nào khác. th t t các thành ph n không theo nguyên t c t trái sang ph i và t trên xu ng dư i. } } public static void main(String args[]){ Gltest t=new Gltest(“Grid Layout”). khi các thành ph n ư c x p x p trong lư i theo dòng và c t. Nó tương t như GridLayout manager. t. Layout này t các thành ph n vào v trí chính xác.show().setSize(300. t. các thành ph n không c n có cùng kích thư c.14 GridLayout 5. GridBagLayout gb=new GridBagLayout() ContainerName.200).4. V i layout này.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 btn[i]=new Button(str[i]). Tuy nhiên.setLayout(gb). Khoa Công ngh Thông tin – ih c àL t Trang 133 . } } K t xu t chương trình như sau: Hình 5.

Ch ra s lư ng các ô (cell) chi u ngang và chi u d c trong vùng hi n th c a m t thành ph n. gridy Ch ra v trí cell s t thành ph n. B ng sau li t kê danh sách các bi n thành viên c a l p GridBagConstraints: Các bi n thành viên weightx. Giá tr m c nh cho các bi n này là 0. Giá tr m c nh cho c hai là 0. M c nh là kích thư c thành ph n không thay i.WEST GridBagConstraints. weighty gridwidth. anchor fill B ng 5. Nó s thêm 2*ipadx vào chi u r ng t i thi u và 2*ipady vào chi u cao t i thi u c a thành ph n.SOUTH GridBagConstraints. Khi thi t l p giá tr c a gridx là ‘GridbagConstraints. Tăng chi u cao c a thành ph n theo chi u ng (VERTICAL) làm cho thành ph n kh p v i chi u d c.EAST GridBagConstraints. Tăng chi u r ng.SOUTHEAST gridx. ipady M c ích Ch ra s phân ph i c a kho ng tr ng trong GridBagLayout. gridheight ipadx.RELATIVE’ thì thành ph n ư c thêm s n m v trí bên ph i c a thành ph n cu i cùng. chi u cao c a thành ih c àL t Trang 134 .NORTHEAST GridBagConstraints. Tăng chi u r ng c a thành ph n theo chi u ngang (HORIZONTAL) làm cho thành ph n kh p v i chi u ngang. Ch ra cách mà m t thành ph n ư c b trí vào cell th nào n u như cell l n hơn thành ph n.NONE GridBagConstraints.BOTH Khoa Công ngh Thông tin – Mô t M c nh. L p ‘GridBagLayoutConstraints’ ch a t t c các thông tin mà l p GridLayout c n b trí và nh kích thư c m i thành ph n.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 s d ng layout này. Các thành viên d li u tĩnh (static) sau ây có th ư c s d ng: GridBagConstraints. b n c n cung c p thông tin v kích thư c và v trí c a m i thành ph n.NORTH GridBagConstraints.HORIZONTA L GridBagConstraints.4 Các bi n thành viên c a l p GridBagConstraints B ng sau ây cung c p m t danh sách các bi n d li u tĩnh là các giá tr cho bi n fill: Giá tr GridBagConstraints. Ch ra cách x p x p các thành ph n trong cell. không làm thay i kích thư c c a thành ph n.VERTICAL GridBagConstraints. M c nh s t vào gi a cell. Ch ra lư ng làm thay i chi u cao và chi u r ng t i thi u c a thành ph n.

buttom.*. gb=new GridBagLayout(). M c nh là 0. lbl là thành ph n ‘Label’ và ‘gbc’ là tư ng c a l p GridBagConstraints.12 minh h a m t ví d c a GridBagLayout và GridBagConstraints. gbc).10). Chương trình 5. Xác nh kho ng cách top.5. B ng 5. Checkbox cb1.cb4. ta=new TextArea(“Textarea”. Button b1.setConstraints(lb1.awt. Khoa Công ngh Thông tin – ih c àL t Trang 135 .cb3.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 insets ph n theo c chi u ngang và chi u d c. left và right gi a các thành ph n.12 i import java. class Gbltest extends Frame{ TextArea ta.b2. TextField tf. GridBagLayout gb. GridBagConstraints gbc. gblay. ‘gblay’ là i tư ng c a l p GridBagLayout. gbc=new GridBagConstraints(). CheckboxGroup cbg.5 Các bi n thành viên d li u tĩnh c a bi n fill S d ng phương th c ‘setConstraints()’ Cho ví d : thi t l p các h ng s cho m i thành ph n. public GBltest(String title){ super(title). setLayout(gb).cb2. tf=new TextField(“enter your name”). Chương trình 5.

Khoa Công ngh Thông tin – ih c àL t Trang 136 . cb1=new Checkbox(“Bold”.true).BOTH.1. addComponent(cb1. cbg. cbg=new CheckboxGroup().0.1.1).1).HORIZONTAL.4. cbg.0.1. cb3=new Checkbox(“Plain”. addComponent(b2.1).false).1. addComponent(ta. gbc.2. gbc.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 b1=new Button(“TextArea”). cbg. addComponent(cb2. gbc. addComponent(b1.fill=GridBagConstraints.1.fill=GridBagConstraints. b2=new Button(“TextField”). cb2=new Checkbox(“Italic”. gbc. cb4=new Checkbox(“Bold/Italic”.HORIZONTAL.fill=GridBagConstraints.1).false).HORIZONTAL.0.HORIZONTAL.false).0. gbc.1). cbg.2.2.fill=GridBagConstraints.1.HORIZONTAL.fill=GridBagConstraints. gbc.fill=GridBagConstraints.2.

} public void addComponent(Component c.setConstraints(c. gbc.1.1. } public static void main(String args[]){ Gbltest t=new Gbltest(“GridBag Layout”).3. t.gbc).2.gridwidth=ncol.HORIZONTAL.3.3). } } Khoa Công ngh Thông tin – ih c àL t Trang 137 . gbc.fill=GridBagConstraints.HORIZONTAL. gb. gbc. int nrow.4.1.show().0.200).gridheight=ncol. t.1.gridy=row. gbc.setSize(300. add(c). gbc.fill=GridBagConstraints.1).1). addComponent(cb4.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 addComponent(cb3. int row. int col. int ncol){ gbc.gridx=col. addComponent(tf.

Cú pháp sau s thêm vào thành ph n TextArea v i s dòng và s c t c n chi m: addComponent(ta. K t xu t c a chương trình ư c ch ra hình 5.BOTH.0. Cú pháp sau mô t thành ph n ch ư c m r ng theo hư ng n m ngang: gbc.1).gridy=row.2. các thành ph n có chi u r ng l n hơn s chi m gi nhi u kho ng tr ng hơn là các thành ph n có giá tr v chi u r ng nh hơn.15 Hình 5.4. gbc.fill=GridBagConstraints.fill=GridBagConstraints. Thành viên fill c a l p GridBagConstraints ch ra thành ph n có th ư c m r ng theo hư ng n m ngang và th ng ng. Khoa Công ngh Thông tin – ih c àL t Trang 138 .gridx=col.HORIZNTAL. 0 – Kh i 2 – Kh i u t dòng th 0 u t dòng th 2 4 – ta chi m gi 4 dòng 1 – ta chi m 1 c t S d ng cú pháp sau b trí các thành ph n vào trong dòng và c t nào ó: gbc.15 GridBagLayout Gi i thích o n mã trên: gbc.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Khi m t container b thay i kích thư c và khi kho ng tr ng ph t n t i.

label. ây.gridwitdh=ncol. gridwidth xác nh s lư ng các c t mà m t thành ph n chi m gi gridheight xác nh s lư ng các dòng mà m t thành ph n chi m gi . ăng ký m t thành ph n v i listener. Hàm x lý s ki n này s ư c g i b t c khi nào s ki n tương ng phát sinh. nh phím v. nh n phím. Vi c x lý nh ng s ki n này ph thu c vào ng d ng. Nh ng handler này t ng ư c g i khi m t s ki n thích h p phát sinh. Tương tác c a ngư i dùng có th là di chuy n chu t. L p thi hành listener c n ph i nh nghĩa nh ng phương th c này. 5. gridy) là c t và dòng nơi mà thành ph n có th ư c t vào. S d ng cú pháp sau ch ra s lư ng các c t và dòng mà các thành ph n có th chi m gi : gbc. Trong quy trình này. M t Event Listener l ng nghe m t s ki n nào ó mà m t i tư ng ã thi t l p. Các thành ph n có th là các button. hay window. s d ng mô hình này. ta có th s d ng: Khoa Công ngh Thông tin – ih c àL t Trang 139 . Môi trư ng mà các ng d ng này ư c thi hành ví d như trình duy t cũng có th x lý các s ki n khác. hay g i là listener v i các i tư ng. AWT x lý m t vài s ki n.2 làm vi c theo mô hình x lý s ki n này. C u trúc như sau: public class MyApp extends Frame implements ActionListener Xác nh t t c các thành ph n t o ra s ki n. Cho ví d . M i event listener cung c p các phương th c x lý nh ng s ki n này.gridheight=nrow. Ngư i l p trình cũng c n ph i x lý nh ng s ki n nh t nh và c n ph i vi t hàm x lý các s ki n ó. các thành ph n có chi u r ng l n hơn s chi m gi nhi u kho ng tr ng hơn là các thành ph n có giá tr v chi u r ng nh hơn.5 X lý các s ki n Các h th ng GUI x lý các tương tác ngư i dùng v i s tr giúp c a mô hình hư ng s ki n (event-driven). ng d ng c n ăng ký m t hàm x lý s ki n v i m t i tư ng.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 ây (gridx.v…T t c các thao tác này thi t l p m t s ki n c a m t lo i nào ó. menu item. và Khi m t container b thay i kích thư c và khi kho ng tr ng ph t n t i. ng d ng cho phép b n ăng ký các phương th c handler. b n làm theo các bư c sau: Cài t giao di n listener thích h p. JDK1. gbc.

nh . b n hay làm cho ho t ng ư c. Phát sinh khi giá tr trong thành ph n textfield hay textarea b thay i. Xác nh t t c các s ki n ư c x lý. Nh ng phương th c này s ư c n p ch ng trong l p mà cài t nh ng giao di n này. Phát sinh khi bàn phím n. ư c m hay thoát. ư c kéo hay th ra. B ng sau ây ch ra các s ki n khác nhau và mô t v chúng: L p s ki n ActionEvent AdjustmentEvent ComponentEvent FocusEvent ItemEvent WindowEvent TextEvent MouseEvent KeyEvent Các giao di n c n ư c cài ActionListener AdjustmentListener ComponentListener FocusListener ItemListener WindowListener TextListener MouseListener MouseMotionListener KeyListener Các giao di n nh nghĩa m t s phương th c x lý m i s ki n. Phát sinh khi m t c a s ư c kích ho t. m t item trong danh sách ch n l a ư c nh n úp (doubleclick) hay m t menu ư c ch n. Phát sinh khi m t m c menu ư c ch n hay b ch n. ActionEvent có hai phương th c: x lý các s ki n liên quan v i Mô t Phát sinh khi m t button ư c nh n. t x lý m t trong s nh ng s ki n này là: Khoa Công ngh Thông tin – ih c àL t Trang 140 . Phát sinh khi m t thanh scrollbar ư c s d ng. ư c click. Các 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 kéo i. hay khi m t checkbox hay m t item trong danh sách ư c click. Chương trình sau ây s d ng m t ActionListener m t button.addActionListener(This). Phát sinh khi m t thành ph n m t hay nh n focus t bàn phím. Thi hành các phương th c c a listener và vi t hàm x lý s ki n tương ng v i các phương th c. ư c óng.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 exitbtn. Phát sinh khi chu t di chuy n. Phát sinh khi m t thành ph n ư c thay i kích thư c. ư c di chuy n.

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2

getSource(): tr v ngu n c a s ki n. toString(): tr v chu i tương ương v i s ki n. Chương trình 5.13 trình bày cách tính g p ôi c a m t s ư c nh p vào. Chương trình này ư c th c hi n b ng cách k t h p các phương th c c a l p, nghĩa là các phương th c x lý s ki n và giao di n. Vi c click trên m t button s làm kh i ng ActionEvent và g i phương th c actionPerformed(). Nó s ki m tra button ư c click v i s tr giúp c a hàm getSource và tr v k t qu thích h p. Chương trình 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 Công ngh Thông tin – ih c àL t

Trang 141

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 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 chương trình ư c ch ra hình bên:

Hình 5.16 X lý s ki n

Hình 5.17 ch ra m t ph n c a cây phân c p các l p c a gói event.

Khoa Công ngh Thông tin –

ih c àL t

Trang 142

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2

Object

java.util.EventObject

Java.awt.Event

ActionEvent

AdjustmentEvent

ComponentEvent

ItemEvent

ContainerEvent

InputEvent

FocusEvent

WindowEvent

KeyEvent

MouseEvent

Hình 5.17 Gói Event Hình sau ch ra th t phân c p các giao di n c a các event listener.
ActionListener AdjustmentListener E v e n t L i s t e n e r ContainerListener FocusListener ItemListener KeyListener MouseListener MouseMotionListener TextListener WindowListener

Hình 5.18 Event Listener Hình sau là danh sách các listener ư c s d ng cho các thành ph n ch ra.

Khoa Công ngh Thông tin –

ih c àL t

Trang 143

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2

ActionListener

Button List MenuItem TextField

Hình 5.19 Action Listener
ItemListener

Choice Checkbox List

Hình 5.20 Item Listener
WindowListener

Dialog Frame

Hình 5.21 Window Listener Các listener cho l p Component ư c ch ra
Component

hình 5.22:

ComponentListener FocusListener KeyListener MouseListener MouseMotionLIstener

Hình 5.22 Các Component

Khoa Công ngh Thông tin –

ih c àL t

Trang 144

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2

5.6 Th c ơn (menu)
Ngôn ng Java có m t t p h p các l p i tư ng t o các menu. Có hai lo i menu – pull down và pop-up. Menu làm cho ng d ng ta xây d ng d s d ng hơn. 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ê các m c ch n khác nhau hay còn g i là menu. M t menu c l p có th ch a các m c ch n con, các m c con này ư c g i là Menu Item. Java cung c p các Checkbox MenuItem, chúng có th ư c b t hay m , ph thu c vào tr ng thái. Hình 5.14 minh h a cách s d ng c a menubar, menu, menuItem, và CheckboxMenuItem. Chương trình 5.14

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

Khoa Công ngh Thông tin –

ih c àL t

Trang 145

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2

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

Khoa Công ngh Thông tin –

ih c àL t

Trang 146

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 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 Công ngh Thông tin – ih c àL t

Trang 147

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 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 chương trình trên, m t màn hình v i các trình ơn File, Edit và Help ư c hi n th . Khi b n click vào m c File, b n s th y k t xu t sau ây:

Hình 5.23 Pull-down Menu M t menu có th ch a các menu con. Khi b n click vào trình ơn Help, 3 m c con có tên là Content, Index và Find s xu t hi n. Trong trình ơn Find, có 2 m c con là

Khoa Công ngh Thông tin –

ih c àL t

Trang 148

Nhưng phương th c này ư c s d ng v b tc hình nào trong các hình sau: Oval Rectangle Square Circle Lines Text B n có th v nh ng hình này b ng b t c màu nào. L p Graphics bao g m t p h p r t nhi u phương th c. M t khác m t pop-up menu s hi n ra n u b n nh n chu t ph i trên màn hình: Hình 5.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Search by name và Search from Cache. v b t c hình nh nào chúng ta c n ph i có n n ho (Graphical Background). 5. nó s ư c ánh d u và b n có th th y d u ch n tương ng trên m c ư c ch n ó. Menu. Frame. Nh ng m c ch n con này thu c ki u CheckboxMenuItem. chúng ta goi phương th c ‘getGraphics()’ hay b t c phương th c nào trong các phương th c sau ây: repaint() ư c g i khi c n v l i nh ng update(Graphics g) Khoa Công ngh Thông tin – ih c àL t i tư ng ã v . M c ‘Format text’ có 2 m c con là Insert và Overtype. Trang 149 . Khi b n click vào m c ch n. Nh ng l p này ư c s d ng t o thanh Menubar. Applet và Canvas là các môi trư ng hi n th ho . Ngôn ng Java cung c p các l p khác nhau. có ư c m t n n ho .7 L p Graphics Java cung c p gói AWT cho phép ta v các hình ho . MenuItem và CheckboxMenuItem trong chương trình.24 Pop-up menu Các m c ch n ư c trình bày trên pop-up menu là Read-Only và Format text.

Phương th c này dùng Vi c g i phương th c paint() l p i l p l i thông qua phương th c repaint() s xoá i các hình ã v trư c ó. To X trên frame. Cú pháp như sau: drawString (String str. làm ư c i u này. int xCoor. int xCoor. int yCoor). i tư ng c a l p Phương th c này s xoá nh ng i tư ng ã v . i tư ng ư c truy n cho phương th c này ư c dùng v các hình nh ho khác nhau. ây. v các hình m i mà v n gi l i nh ng hình ã v trư c ó. nơi chu i c n ư c v . public void update (Graphics g){ paint (g).1 V các chu i.7. phương th c update() s không xoá nh ng i tư ng ã v . paint(Graphics g) ư c g i b i phương th c update(). nó truy n i tương c a l p Graphics ho c GraphicsContext cho phương th c paint(). 5. các ký t và các byte v ho c in m t chu i. int yCoor). Chú thích các tham s : M ng các ký t . int offset. nhưng ch g i phương th c paint(). chúng ta c n override l i phương th c update(). nơi chu i c n ư c v . n i các ký t ư cv . V trí b t u. int length. và truy n nó cho Graphics g i phương th c ‘paint()’. Cú pháp như sau: drawChars (char array[]. To Y trên frame. } ây.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 ư c g i m t cách t ng b i phương th c ‘repaint()’. Khoa Công ngh Thông tin – ih c àL t Trang 150 . l p Graphics cung c p phương th c ‘drawString()’. i tư ng c a l p Graphics là ‘g’. Ba tham s là: Chu i c n v . l p Graphics cung c p phương th c ‘drawChars’. v . v ho c xu t các ký t trên frame.

int xCoor. Khoa Công ngh Thông tin – ih c àL t Trang 151 . nơi các ký t c n ư c v .drawString ("Good Night". g. bytes"). int yCoor). to x và y là to tính theo dòng. setVisible (true). g. setSize (300. To Y. 75). characters. L p Graphics cung c p phương th c ‘drawBytes()’ Cú pháp c a phương th c này như sau: v ho c in các byte ra frame. chúng ta có th in m t ph n c a m ng mà thôi. V trí offset hay v trí b t S byte c n v .'c'. 300).drawString ("Good Morning". char ch[] = {'a'. To X. 50.4 minh ho cách v chu i. nơi các ký t c n ư c v .'d'. 5 tham s c a phương th c trên là: M ng các byte. 50.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 S các ký t c n ư c v . ây. public class DrawStrings extends Frame{ public DrawStrings(){ super ("Draw strings. các ký t và các byte. int length. } public void paint(Graphics g){ g. i v i m t ký t ho c m t m ng các byte.'b'. 50.'e'.*. To Y. To X. 50).'f'}.awt. int offset. u.drawString ("Good Afternoon". Chương trình 5. 100).15 import java. drawBytes (byte array[]. Chương trình 6.

Sau ây là k t qu c a chương trình trên: Hình 5. drawOval (int xCoor.106.103.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 g. int width.drawChars(ch. ký t t m t m ng ký t .107}. int height). int yCoor. B n ph i import gói java.7.1. int yCoor.101.104. int height).105. characters và bytes 5. Ta ph i làm i u này vì l p Graphics n m trong gói này.50.6. Phương th c ‘drawLine()’ nh n các tham s sau: Khoa Công ngh Thông tin – ih c àL t Trang 152 .25 Strings.102.2. int width.awt s d ng các i tư ng ho có s n trong gói này. byte b[] = {100. và v các byte t m ng các byte. g. int x2.drawBytes(b. int y2). int y1.125).2 V ư ng th ng và hình Oval v ư ng th ng và hình Sau ây là cú pháp c a các phương th c ư c s d ng oval: drawLine (int x1. fillOval (int xCoor.50. setColor (Color c). } public static void main (String args[]){ new DrawStrings().4. } } Chương trình trên v chu i.150).

Phương th c ‘drawRect()’ ư c dùng nh n 4 tham s sau: To X c a góc trên bên trái To Y c a góc trên bên trái Chi u r ng c a hình ch nh t Chi u cao c a hình ch nh t v hình ch nh t ơn gi n. ư c tô v i màu cyan. thì giá tr c a chi u r ng l n hơn chi u cao. v nhưng ư ng th ng có màu. nơi b X.blue). nơi b Y. int arcwidth. Phương th c ‘setColor’ dùng thi t l p màu cho hình nh ho . To Y. hình oval s h th ng có h tr . Phương th c ‘drawOval()’ nh n 4 thông s sau: To X. int yCoor. và ngư c l i v i hình oval cao. nơi k t uv t uv t thúc v t thúc v (x1). Chi u cao c a hình Oval. (x2). chúng ta s d ng câu l nh sau ch n màu xanh: g. Phương th c này b t u v t i to ‘x1’ và ‘y1’. nơi k Y. int width. nhưng nó s tô hình oval. int height. Chi u r ng c a hình Oval. và k t thúc t i to ‘x2’ và ‘y2’. i v i hình oval r ng.setColor(Color.setColor (Color. int arcwidth. fillRoundRect (int xCoor. S d ng phương th c setColor t màu tô.cyan). int archeight). g.3 V hình ch nh t và hình ch nh t bo góc Sau ây là cú pháp c a các phương th c ư c dùng nh t bo góc: v hình ch nh t và hình ch drawRect (int xCoor. int archeight). int yCoor. int height). int width. int width. i Phương th c ‘fillOval()’ nh n 4 thông s . int yCoor. int height. int yCoor. ây. drawRoundRect (int xCoor. (y1). (y2).Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 To To To To X. int width.7. int height). L p Color cung c p các màu khác nhau mà 5. Phương th c này Khoa Công ngh Thông tin – ih c àL t Trang 153 . Trong chương trình này. chúng ta thi t l p m t màu nào ó. fillRect (int xCoor.

int height. 4 tham s u thì tương t v i phương th c v hình ch nh t. Pixel là ơn v o. Tuy nhiên. Tham s th 5 có ki u d li u là boolean. int arcwidth.red). fillArc(int xCoord. trong ó 4 tham s u thì gi ng v i phương th c drawRect. ‘arcwidth’ làm tròn góc trái và góc ph i c a hình ch nh t. 5. Phương th c ‘drawArc()’ nh n 6 tham s sau: To x To y Chi u r ng c a cung ư c v . Câu l nh s như sau: g. Hai tham s khác là: arcwidth c a hình ch nh t archeight c a hình ch nh t ây. Nó là ơn v nh nh t trong vùng v . Nh ng phương th c này v các hình nh v i m t màu cho trư c ho c m i màu hi n hành. int yCoord.green). int height. Chúng ta có th thi t l p màu c a hình ch nh t. ây. Nh ng phương th c này nh n các tham s gi ng v i phương th c drawRect() và drawRoundRect(). Phương th c ‘drawRoundRect()’ v hình ch nh t có các góc tròn. giá tr c a tham s th 5 quy t nh là hình ch này này có 3 chi u hay không. int archeight).setColor (Color.4 V hình ch nh t 3D và v cung Sau ây là cú pháp c a các phương th c dùng v hình ch nh t 3D và hình cung: draw3Drect (int xCoord. int yCoord. Góc b t u. int width. b t u t i to X. Giá tr này True có nghĩa là hình ch nh t là 3D. Ví d . arcwidth = 20 có nghĩa là hình ch nh t ư c làm tròn c nh trái và c nh ph i m i c nh 10 pixel. int width. drawArc(int xCoord. tô hay v hình ch nh t và hình ch nh t bo góc. Phương th c này nh n 6 tham s . Khoa Công ngh Thông tin – ih c àL t Trang 154 . archeight = 40 s t o ra hình ch nh t ư c làm tròn t nh n áy 20 pixel. int yCoord. Phương th c ‘draw3Drect()’ nh n 5 tham s . int arcwidth. ‘archeight’ làm tròn góc trên nh và góc áy c a hình ch nh t. chúng ta s d ng phương th c ‘fillRect()’ và ‘fillRoundRect()’. L nh sau dùng v hình v i màu xanh: g. int archeight). Chi u cao c a cung ư c v .setColor(Color.7. r ng c a cung (góc c a cung) so v i góc ban u.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Phương th c này v hình ch nh t có chi u r ng và chi u cao cho trư c. int width. Tương t . int height. boolean raised). Y. chúng ta ch n màu .

82. Cú pháp drawPolyline (int xArray[]. 75. } Khoa Công ngh Thông tin – ih c àL t Trang 155 . 180}.5 V hình PolyLine Chương trình sau l y các i m t hai m ng c a phương th c này như sau: v m t lo t các ư ng th ng. 95. 15)). 30. 60. 300). M ng lưu tr to y c a các i m. 135}. class PolyLines extends Frame{ int x1[] = {50. int totalPoints). 160. 60}. v các ư ng th ng ta l y các i m t hai m ng như sau: (array1[0].5 minh ho các v polyline. S ư ng th ng v ư c luôn nh hơn s truy n vào thông s th 3 c a phương th c drawPolyline(). setSize (300. array2[2])…. int y1[] = {50. public PolyLines()//constructor{ super ("Poly Lines"). Chương trình 6.*.7. 75. nhưng nó v cung và tô cung v i màu hi n th i. Phương th c ‘drawPolyline()’ nh n 3 tham s sau: M ng lưu tr to x c a các i m. array2[0]) (array1[1]. 135}.BOLD. 95. 155. int yArray[]. 130. g.awt.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Phương th c ‘fillArc()’ cũng nh n 6 tham s gi ng như phương th c drawArc(). array2[1]) (array1[2]. setVisible (true). int y2[] = {150. Chương trình 5.16 import java. int x2[] = {67. Font.setFont (new Font(“Times Roman”. 115. 120. 5. T ng s i m c n v .

g. g.setFont (new Font("Times Roman". y2.6 V và tô a giác L p Graphics cung c p hai phương th c v a giác. Phương th c u tiên nh n m t i tư ng c a l p Polygon. 15)). Chúng ta s s d ng phương th c 2 v a giác. g.setColor(Color. Cú pháp c a drawPolygon() như sau: Khoa Công ngh Thông tin – ih c àL t Trang 156 .7 Hình 5. } } K t qu c a chương trình ư c minh ho hình 6.26. 5).drawPolyline (x1. Font.drawString("Current Color is black". g.blue). g. 5). Minh h a PolyLine 5. y1. Phương th c th c 2 l y hai m ng i m. 100. } public static void main (String args[]){ new PolyLines().drawString ("Current Color is blue".drawPolyline (x2. và t ng s i m c n v . 200). 100).7.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 public void paint (Graphics g){ g.BOLD. 100.

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 drawPolygon(int x[]. Chương trình 5. class PolyFigures extends Frame{ int x1[] = {50. 120. } public static void main (String args[]){ new PolyFigures(). 170}.cyan). Phương th c ‘drawPolygon()’ nh n 3 tham s sau gi ng như phương th c drawPolyline() M ng lưu tr to x c a các i m.setColor (Color. 100.190}. 30. g. 80}. 40. Chương trình dư i ây l y các i m t 2 m ng v a gíac. int y[]. 25.drawPolygon (x1. int y1[] = {50. 240.17 import java.*. int y2[] = {150. 220. 150. setSize(300. y2. 170. 70. g. setVisible (true). int numPoints). int y[]. Khoa Công ngh Thông tin – ih c àL t Trang 157 . 5). y1. int x2[] = {80. 300). T ng s i m c n v . } public void paint (Graphics g){ g. M ng lưu tr to y c a các i m. Cú pháp c a fillPolygon() như sau: fillPolygon (int x[]. 6). public PolyFigures(){ super ("Poly figures").awt. 50. 80}. 200. int numPoints). 100.fillPolygon (x2. 120.

xanh lá cây (green). B ng sau trình bày giá tr có th có c a các màu ó: Thành ph n Ph mvi Red 0-255 Green 0-255 Blue 0-255 B ng 6.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 } } Sau ây là k t qu c a chương trình trên: Hình 5. xanh dương (blue). int green.8 i u khi n màu Trong Java. Hình minh h a Polygon 5. chúng ta i u khi n màu b ng cách dùng 3 màu chính là (red). i tư ng c a l p Color ch a 3 s nguyên cho các tham s red.2 Ph m vi giá tr c a các thành ph n màu S d ng các giá tr trên m t màu như sau: t o ra m t màu tuỳ thích. blue.27. Cú pháp c a hàm d ng t o ra color (int red. Java s d ng mô hình màu RGB. B ng sau hi n th các giá tr c a các màu thư ng g p: Màu White Light Gray Gray Dark Gray Black Red 255 192 128 64 0 Green 255 192 128 64 0 Blue 255 192 128 64 0 Khoa Công ngh Thông tin – ih c àL t Trang 158 . int blue). green.

blue color. color1 = color1. cho d hơn.lightgray color. 5.pink color. l p Color S d ng k t h p các giá tr RGB cung c p s n m t s màu.brighter().darkgray color.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Pink 255 175 175 Orange 255 200 0 Yellow 255 255 0 Magenta 255 0 255 B ng 6. Ta có th thi t l p màu b ng cách dùng l nh sau: g. Nh ng i này i tư ng ho . int myred = color1.getRed (). int myblue = color1.red color. //g là i tư ng c a l p Graphics t o ra m t màu tuỳ ý.4 Các màu thư ng g p o n mã sau minh ho cách t o m t màu tuỳ ý: Color color1 = new Color (230. ta dùng color c = new Color (255.white color.setColor (c). 175).yellow B ng 6. Ví d .green color. int mygreen = color1. 60). color4 = color4.3 Các giá tr RGB Các i tư ng màu khác nhau có th có th ư c dùng v ho c tô các l nh sau: ư c t o b ng nh ng giá tr này.getGreen (). g. 210. 140. color. 130).darker().magenta color.9 i u khi n Font Java cung c p l p Font trong gói java.orange color. t o màu h ng.gray color.black color.getBlue().setColor (color1).cyan color. 175.awt cho phép s d ng các lo i font khác Khoa Công ngh Thông tin – ih c àL t Trang 159 . Color color4 = new Color (90.

ITALIC+Font.drawString (“Default Font is ”. Tham chi u n l p này ư c gán cho bi n ge. Trư c tiên. truy c p phương th c getAllFont(). Phương th c’getAllFont()’ tr v t t c các font mà h th ng h tr . 14 là kích thư c c a font. Font. do ó ta không th kh i t o l p này. g. ây là l p tr u tư ng.BOLD – ki u font.PLAIN. Font defaultFont = g. L p này bao g m m t s phương th c. Ta có th l y tên thông qua phương th c getFontList().setFont (f1). Ki u c a font. chúng ta nên ki m tra xem h th ng có h tr hay không. khi không có ch n font nào c . chúng ta t o l p Font. Ví d : Font. Phương th c getFont() tr v font m c nh dùng hi n th chu i. v a nghiêng. Hãy xét ví d sau: Font f3 = new Font (“Monospaced”. Chúng ta có th k t h p 2 ki u font l i v i nhau. Bi n này g i phương th c getAllFont(). khai báo m t i tư ng c a l p GraphicsEnvironment như sau: GraphicsEnvironment ge. Phương th c kh i t o c a Font có 3 tham s sau: i tư ng c a Tên c a font. Kích thư c font. Phương th c getAllFont() ư c s d ng ây. Font. 50).getLocalGraphicsEnvironment ().getAllFonts().Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 nhau. Font. thay i font m c nh c a h th ng thành font khác. 20).getFont (). Nh ng thông s này t o ra i tư ng f1.BOLD. Phương th c getAllFonts() thu c l p GraphicsEnvironment. ây ki u font c a f3 v a m.ITALIC. chúng ta s d ng phương th c ‘getLoacalGraphicsEnvironment()’ c a l p GraphicsEnvironment. i tư ng này s d ng cú pháp sau l y t t c các font có trong m ng Font: Font f[] = ge. 16). ge = GraphicsEnvironment. Khoa Công ngh Thông tin – ih c àL t Trang 160 .getLocalGraphicsEnvironment (). Chúng ta s d ng các font khác nhau hi n th các chu i khác nhau. //g là i tư ng Graphics g. Cú pháp sau minh ho nh ng thông s trên: Font f1 = new Font (“SansSerif”.BOLD. Font.ITALIC. ge = GraphicsEnvironment. Font. Ba tham s ư c truy n ây là: ‘SanSerif’ – tên c a font. 30. s d ng font.

vì FontMetrics i ôi v i m t font nào ó. và getLeading() tr v chi ti t c a font.18 import java. chúng ta s d ng fm l y chi ti t c a font. Chương trình 6. getDescent(). cùng v i i tư ng f1. Phương th c getName() c a l p Font tr v tên Font. 300). setVisible(true).7 minh ho vi c s d ng các phương th c khác nhau mà l p FontMetrics có. getAscent(). setSize (400. Các phương th c getHeight. Font. Chương trình 5. 22). Baseline (Dòng cơ s ): xác nh cơ s c a các ký t (không k ph n th p nh t c a ký t ) Ascent: kho ng cách t ư ng baseline n nh c a ký t . Descent: kho ng các t baseline áy c a ký t .*.awt. Height: chi u cao c a font. L p FontMetric là l p tr u tư ng.getFontMetrics (f1). L nh này t o i tư ng fm c a l p FontMetrics. B n c n tính kích thư c c n thi t khi in các ký t tránh các ký t è lên nhau. } public void paint (Graphics g){ Font f1 = new Font ("Times Roman". FontMetrics fm = g.PLAIN.10 L p FontMetric L p này xác nh kích thư c c a các ký t khác nhau thu c các lo i font khác nhau. Khoa Công ngh Thông tin – ih c àL t Trang 161 . Bây gi . i u này r t c n thi t vì các ký t khi in u chi m m t kích thư c riêng. Phương th c getFontMetrics() có tham s là i tư ng c a l p Font. Xác nh kích thư c bao g m chi u cao (height). Phương th c getFont() c a l p FontMetrics tr v Font mà g n v i i tư ng l p FontMetrics. Leading: kho ng cách gi a các ch . chúng ta s d ng các phương th c khác nhau xem xét chi ti t các lo i font khác nhau. baseline. descent. Trong chương trình này. class FontMetricsUse extends Frame{ public FontMetricsUse(){ super ("Detail of Fonts"). và leading.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 5.

PLAIN.getFontMetrics (f2).drawString ("Ascent: " + String. 250). g. 50. g. 50.drawString ("Descent: " + String. g.getDescent()). 75).getFont().drawString ("Descent: " + String. 50.valueOf (fm.getDescent()). } public static void main (String args[]){ new FontMetricsUse ().drawString ("Ascent: " + String.getHeight()).valueOf (fm. } } K t qu c a chương trình trên: Khoa Công ngh Thông tin – ih c àL t Trang 162 . g.getName(). g. Font f2 = new Font ("DialogInput".getFontMetrics (f1).drawString ("Leading: " + String. g.valueOf (fm.drawString ("Height: " + String.valueOf (fm.getFont().drawString ("Details of Font " + name. Font. 275).getName().drawString ("Height: " + String. g. 100).getAscent()). fm = g. 50.getHeight()).Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 FontMetrics fm = g. 175). 50. 30.getLeading()). g. g. 125). 22). name = fm. 150).getLeading()). 50). 50. 225).valueOf (fm.drawString ("Details of Font " + name. 50.getAscent()).valueOf (fm. 30. 50.valueOf (fm. 200).drawString ("Leading: " + String. String name = fm.valueOf (fm. g.

làm ư c i u này.8 minh ho cách l p FontMetrics ư c s d ng in o n văn b n nhi u font. K ó. chúng ta in msg1 và msg2 trên các dòng khác nhau s d ng chung 1 font Monospaced. L p FontMetrics giúp ta xác nh kho ng cách c n thi t in m t dòng văn b n cho m t font nào ó.awt. b i vì dòng th 2 ư c in ngay sau dòng th nh t.28 L p FontMetrics Chương trình 6. chúng ta c n bi t kho ng cách chi u cao c a font. ây. chúng ta c n tính kho ng cách c n thi t in msg1. Sau ó. Chương trình 5. nhi u dòng.19 import java. in dòng k ti p. msg2. setSize (450. chúng ta in msg2 s d ng font DiaglogInput. 200). Trư c tiên chúng ta in msg1 s d ng font Monospaced. class MultiFontMultiLine extends Frame{ public MultiFontMultiLine(){ super ("Multiline Text"). Trong chương trình này.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Hình 5. chúng ta c n in văn b n nhi u font trên nhi u dòng. chúng ta s l y ư c v trí mà chúng ta b t u in o n văn b n k ti p. Phương th c stringWidth() c a l p FontMetrics ư c dùng tính ra t ng kho ng cách c n thi t in msg1.*. Khi chúng c ng thêm kho ng cách này vào bi n x. Phương th c getHeight() ư c dùng làm i u này. setVisible (true). i u này th t c n thi t. Phương th c setFont() ư c dùng thi t l p font in văn b n. Khoa Công ngh Thông tin – ih c àL t Trang 163 .

BOLD. int height = fm. y). g. FontMetrics fm = g. y).setFont(f2).Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 } public void paint (Graphics g){ Font f1 = new Font ("MonoSpaced". g. String msg2 = "A new approach to programming". x. x.getFontMetrics(f1). y = 100. g. x = x + fm.setFont(f1). int x = 20. 18).stringWidth(msg1). y).drawString (msg2.setFont(f1). g.drawString (msg2. } Khoa Công ngh Thông tin – ih c àL t Trang 164 . } public static void main (String args[]){ new MultiFontMultiLine (). y). Font f2 = new Font ("DialogInput". y += height.getHeight(). g. String msg1 = "Java Language". g.drawString (msg1.drawString (msg1. g. Font. Font. x. x = 20.PLAIN. 14). x. int y = 50.

i u này có nghĩa là các hình m i không è lên các hình c .Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 } K t qu c a chương trình trên: Hình 5. 300).10 import java. Thay vào ó. Khi m t i tư ng m i ư c v . nó s è lên các hình ã v trư c ây.11Ch n ch v Các i tư ng ư c v b ng cách s d ng mode v .awt. l p Graphics cung c p phương th c setXORMode (Color c). Chương trình 6. K t qu là. Ch hi n th n i dung c a i tư ng m i. khi s d ng mode XOR thì hi n nhiên là t t c các hình u hi n th y . } public void paint (Graphics g){ Khoa Công ngh Thông tin – ih c àL t Trang 165 . nhi u dòng 5. class PaintMode extends Frame{ public PaintMode(){ super ("Paint Mode"). setVisible (true). chúng ta s d ng phương th c setXORMode() tô các hình ho khác nhau. Chương trình 5. ph n chung gi a các hình s ư c hi n th thành m t màu khác.9 minh ho ti n l i c a c a vi c s d ng phương th c setXORMode(). Tương t .*. setSize (300.29 Văn b n ư c xu t nhi u font. mà không è lên các hình khác. hình m i hoàn toàn che khu t nh ng hình trư c ó. khi các i tư ng ư c v i v l i nhi u l n thì chúng s xoá các i tư ng ã v trư c ó. ây. Nhưng khi không s d ng mode XOR. làm cho n i dung c và n i dung m i u hi n th trên cùng n n.

cyan). 50.blue).fillRoundRect (90. 50. g.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 g. g.setColor (Color. g.setPaintMode ().setColor (Color. 70. g. } } K t qu c a chương trình trên: Hình 5.setXORMode (Color. } public static void main (String args[]){ new PaintMode(). 65. 20).setXORMode (Color. 180. 30. g. g. g.pink). 30.blue). 60). 60).fillRect (50. g.fillRoundRect (90.fillOval (70. 30). 165. g. g. 20. 150.40. 40. 60. 30). 80.fillOval (70.30 Paint mode Khoa Công ngh Thông tin – ih c àL t Trang 166 . 30). 40.fillRect (50.setColor (Color.magenta).yellow).50. g. g.setColor (Color.

BorderLayout x p x p các thành ph n trong ‘North’.awt t o các thành ph n GUI này. M t khác nó cũng giúp ta phát tri n các ng d ng ngư i dùng nhi u hi u qu hơn. thư ng thư ng là các panel. Nó tương t như grid layout. Ta c n s d ng các l p t n t i trong gói java. Thành ph n GUI là m t i tư ng tr c quan. CardLayout t các thành ph n trên nh c a các thành ph n khác. S d ng l p Graphic v các i tư ng h a. Các ki u trình bày khác nhau: • FlowLayout • BorderLayout • CardLayout • GridLayout • GridBagLayout Phương th c ‘setLayout()’ ư c s d ng t layout. M t Event Listener l ng nghe m t s ki n c th nào ó mà m t i tư ng thi t l p. ‘East’. Các thành ph n ư c x p x p t góc trái trên n góc ph i bên dư i c a màn hình. GridBagLayout b trí các thành ph n m t cách chính xác hơn các layout manager khác. L p FontMetrics xác nh kích thư c c a các ký t .awt cho phép s d ng nhi u font khác nhau. FlowLayout là Layout Manager m c nh cho các applet và các panel. Ngư i dùng có th s d ng chu t hay bàn phím tương tác v i i tư ng này. Gridlayout t các thành ph n trong các dòng và các c t. L p Font trong gói java. Có hai ki u menu – pull-down và pop-up. ‘South’. Khoa Công ngh Thông tin – ih c àL t Trang 167 . nh n phím. H th ng GUI x lý t t c các tương tác c a ngư i dùng v i s h tr c a mô hình hư ng s ki n (event-driven). Trong mô hình x lý s ki n. M t s ki n ư c kích ho t khi ngư i s d ng t o m t hành ng như là di chuy n chu t. Nó t o m t stack c a m t s thành ph n. B t c thao tác nào mà liên quan t i t t c các thành ph n GUI u ư c tìm th y trong l p Component. checkbox và radio button mà ư c s d ng trong ng d ng hay applet thì có th ư c th y trên màn hình. L p layout manager cung c p m t phương ti n i u khi n cách trình bày v t lý c a các thành ph n GUI. label. Nó s g i l n lư t các phương th c x lý s ki n. S khác nhau duy nh t ây là thành ph n không c n có cùng kích thư c và có th ư c t trong b t kỳ dòng hay c t nào. ‘West’ và ‘Center’ c a m t container. ng d ng cho phép b n ăng ký các handler ư c g i là các listener cho các i tư ng.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Tóm t t GUI giúp chúng ta t o giao di n hình nh cho m t ng d ng. nh phím v. T t c các thành ph n u có cùng kích thư c.v…. Các thành ph n GUI như các button.

BorderLayout là cách trình bày m c nh c a Window..dùng l y t t c các font ch mà h th ng h tr ..Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Ki m tra s ti n b 1. Trong l p FontMetrics...... Frame và Dialog? úng/Sai 7... FlowLayout là cách trình bày m c nh c a Applet và Panel? úng/Sai 6.. TextArea là m t h p văn b n ch ch a ư c m t dòng. úng/Sai Khoa Công ngh Thông tin – ih c àL t Trang 168 .. trong ó có th hi n th văn b n ho c có th nh p vào b i ngư i s d ng? úng/Sai 4. Ch có th t ư c duy nh t m t thanh menu trên Frame? úng/Sai 9... V t ch a là gì? 3. 'ascent' là kho ng cách t 'baseline' n áy c a ký t . CheckBox s d ng thêm l p radioButtonGroup t o ra radiobuttons? úng/Sai 5.. 10. Phương th c . ActionEvent là gì? 8. M i thành ph n GUI là m t i tư ng? úng/Sai 2..

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Bài t p 1. S a bài t p 1 có giao di n như sau: 3. Vi t chương trình Java sau: nh p thông tin chi ti t v ngư i s d ng như hình 2. Vi t giao di n chương trình trò chơi puzzle như sau: Khoa Công ngh Thông tin – ih c àL t Trang 169 .

pie ư c hi n ra. 5. S a bài 3 khi ngư i s d ng click vào nút cùng hàng ho c cùng c t v i nút không có s thì i ch nút v a click và nút không s cho nhau. Vi t chương trình có menu pop-up như hình dư i ây: 6. Vi t applet như sau: Ngư i s d ng ư c phép nh p vào giá tr màu trong các ô tương ng. Khi click nút 'Draw' các bi u d ng ư ng. Khoa Công ngh Thông tin – ih c àL t Trang 170 . Khi ngư i s d ng n nút không cùng hàng hay không cùng c t thì hi n thông báo "Không h p l " còn khi ngư i s d ng ã s p x p các nút theo th t t 1 n 15 thì hi n ra thông báo chúc m ng.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 4. bar.

font ch trong Applet 6.1. nó s t o i tư ng cung c p cho applet. Mà nó b t u t v trí ti p theo c a quá trình th c thi trư c ó.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Chương 6 APPLETS N i dung chính Hi u ư c các Applet c a Java Phân bi t applet và các ng d ng thông thư ng Tìm hi u chu trình s ng cu m t applet T o các applet Hi n th các hình nh s d ng applet Truy n tham s cho applet Tìm hi u ho . kh i t o các bi n và t o các i tư ng. ư c g i g i khi m t applet b t u th c thi. T t c các u là các l p con c a l p ‘Applet’. Trong quá trình kh i t o. i s c a phương th c này là i tư ng c a l p Graphics. Phương th c này ư c dùng t i các hình nh ho . ho c m t hình nh trên n n applet. b n c n import hai gói java. m t phương th c ư c g i m t cách t ng.awt 6. Phương th c init() Ch c năng ư c g i trong quá trình kh i t o applet.2 C u trúc c a m t Applet M t Applet nh nghĩa c u trúc c a nó t 4 s ki n x y ra trong su t quá trình th c thi. text. Phương th c paint() dùng hi n th m t ư ng th ng (line).awt. t o applet.Graphics.applet java. i v i m i s ki n. L p Applet bao g m nhi u phương i u khi n quá trình th c thi c a applet.1 Java Applet applet th c sau: Applet là m t chương trình Java có th ch y trong trình duy t web. L p này thu c gói java. Câu l nh sau ư c dùng import l p Graphics: import java. i u quan tr ng là không ph i lúc nào applet cũng b t u t ban u. L p Applet thu c package ‘java. Các phương th c này ư c minh ho trong b ng 6. còn có nh ng phương th c ‘paint()’ và ‘repaint()’. M t khi quá trình start() Khoa Công ngh Thông tin – ih c àL t Trang 171 .awt.applet’. màu. Ngoài nh ng phương th c cơ b n này.

*. Khi m t applet b hu . Phương th c này ư c dùng 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. l p này s k th a t t c các phương th c và bi n c a l p ‘applet’. thì applet ư c kh i ng. Phương th c có tham s thu c ki u d li u String. showStatus (getAppletInfo()). 70. th i gian th c thi c a vi x lý.1 import java.1 hi n th m t chu i dòng 70 và c t 80: Chương trình 6. //Hi n th m t chu i ư c tr v t hàm getAppletInfo() trên Khoa Công ngh Thông tin – ih c àL t Trang 172 . B ng 6. Chapter ” + num. Nhưng m c nh nh ng phương th c này không th c thi m t thao tác nào c .drawString()’ ch ra v trí mà o n văn b n ư c v âu trên màn hình. và paint() ư c th a k t m t applet. user có th overide phương th c ‘getAppletInfo()’ c a l p Applet. Các phương th c c a applet init(). public class Applet1 extends Applet{ int num. Phương th c ‘g. Applet s d ng phương th c ‘showStatus()’ hi n th thông tin trên thanh tr ng thái. không gian ĩa ư c tr v cho h th ng. import java. 80). destroy(). l y các thông tin c a applet. public void init(){ num = 6. Tham s này là i tư ng c a l p Graphics.1: Các phương th c c a m t applet Phương th c ‘repaint()’ ư c dùng khi c a s c n c p nh t l i.applet. Câu l nh sau t o m t l p có tên là ‘Applet1’. ư c dùng hu m t applet. start(). } public void paint (Graphics g){ g.awt.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 stop() destroy() kh i t o hoàn t t. thì b nh . M t applet b ng ng trư c khi nó b hu . Phương th c này ch c n m t thông s . Phương th c này tr v 1 i tư ng ki u String. ây là ví d ơn gi n c a applet. Chương trình 6.drawString (“Hello to Applet. stop().*. public class Applet1 extends Applet Phương th c init() và paint() thư ng ư c dùng th c hi n m t s hàm kh i t o và v applet.

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2

//thanh tr ng thái } public String getAppletInfo() //user overrides{ return “Created by Aptech”; } }
S d ng cú pháp 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 này s d ng th applet. Th applet này l y tham s u tiên là ư ng d n c a file applet. Th applet có hai thu c tính sau: Width Height truy n tham s vào applet, s d ng param, sau ó là thu c tính value. Sau ây là ví d c a th applet: <applet code=Applet1 width=300 height=200> </applet> Lúc này, ta có th th c thi applet này b ng cách dùng trình xem applet. ây là công c c a JDK. ch y file HTML trong trình xem applet, ta gõ câu l nh sau: appletviewer abc.html // ‘abc.html’ là tên c a file HTML M t tuỳ ch n khác c a applet là ta thêm th applet như là m t dòng chú thích trong o n code. Lúc ó, applet ư c d ch, và th c thi b ng cách s d ng l nh sau: appletviewer Applet1.java Sau ây là k t qu c a chương trình trên:

Khoa Công ngh Thông tin –

ih c àL t

Trang 173

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2

Hình 6.1 Applet

6.2.1 S khác nhau giũa Application và Applet
Sau ây là s khác nhau gi a application và applet: th c thi các application chúng ta dùng trình thông d ch java, trong khi ó applet có th ch y ư c trên các trình duy t (có h tr Java) hay s d ng công c appletViewer, công c này i kèm v i JDK. Quá trình th c thi c a application b t u t phương th c ‘main()’. Tuy nhiên applet thì không làm như v y. Các application s d ng ‘System.out.println()’ hi n th k t qu ra màn hình trong khi ó applet s d ng phương th c ‘drawString()’ xu t ra màn hình. M t i u áng lưu ý là m t chương trình Java ơn l thì có th v a là application v a là applet. Ch c năng c a applet ư c b qua khi nó ư c th c thi như là m t application và ngư c l i. Chương trình 6.2 s minh ho i u này Chương trình 6.2

import java.applet.Applet; import java.awt.*; /* <applet code = "both" width = 200 height = 100> </applet> */ public class both extends Applet{ Button btn;
Khoa Công ngh Thông tin – ih c àL t
Trang 174

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 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 biên d ch chương trình, nó có th d ng cú pháp sau: appletviewer both.java K t qu như sau: ư c th c thi như là m t applet b ng cách s

Hình 6.2 Applet N u ch y chương trình trên như m t application, thì s d ng cú pháp sau: java both K t qu là:

Khoa Công ngh Thông tin –

ih c àL t

Trang 175

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2

Hình 6.3 Application Khi applet ch y trên trình duy t web, c i m này 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 riêng bi t chat. B n cũng có th k t h p các c i m c a frame và applet vào trong m t chương trình.

6.2.2 Nh ng gi i h n b o m t trên applet
Có m t s h n ch mà applet không th làm ư c. B i vì các applet c a Java có th phá h ng toàn b h th ng c a ngư i s d ng. Các l p trình viên Java có th vi t các applet xoá file, l y các thông tin các nhân c a h th ng… Vì th , các applet c a java không th làm các vi c sau: Không th c ho c ghi file trên h th ng file c a ngư i s d ng. Không th giao ti p v i các site internet, nhưng ch có th v i các trang web có applet mà thôi. Không th ch y b t c chương trình gì trên h th ng c a ngư i c. Không th t i b t c chương trình ư c lưu tr trong h th ng c a ngư i s d ng. Nh ng gi i h n trên ch úng khi các applet ư c ch y trên trình duy t Netscape Navigator ho c Microsoft Internet Explorer.

6.3 Chu trình s ng c a m t Applet
Chu trình s ng c a m t Applet ư c mô t
Destroy

dư i ây:
Stop

Creation

Starting Initalization

Hình 6.4 Chu trình s ng c a m t applet

nó t o m t nút v i chu i ó như là tên c a nút. n u trình duy t nh y n m t liên k t nào ó trang khác. Nó cũng x y ra khi c a s trình duy t thay i v trí c a nó trên màn hình. applet ư c t o.awt. Bư c k ti p là kh i t o. applet s ư c kh i ng. Quá trình này bao g m vi c t o các i tư ng mà applet c n. Phương th c ‘stop()’ ch ư c g i khi user không còn trang ó n a. nhưng qúa trình kh i t o thì ch x y ra m t l n. S khác nhau gi a quá trình kh i t o và quá trình kh i ng là m t applet có th kh i ng nhi u l n. K ti p là phương th c ‘destroy()’. Phương th c ‘paint()’ có m t tham s . trong khi finalize() là cách t ng quát d n d p applet. Phương th c này 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 trình duy t sang c a s khác.awt. ho c trư c khi truy t duy t k t thúc. chúng ta ph i import trong o n code c a applet. chúng ta s truy n tham s cho applet. nút ó có tên m c nh là ‘Default’. Chúng ta có th s d ng o n mã sau: import java. Phương th c này ư c dùng hu nh ng lu ng (thread) hay quá trình ang ch y.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Trư c tiên. và ư c kh i ng tr l i khi ngư i s d ng quay v trang ó.Graphics. Phương th c ‘start()’ ư c override cung c p các thao tác kh i ng cho applet. Bây gi chúng ta nh nghĩa th <PARAM> trong o n mã HTML như sau: /* <applet code=”Mybutton1” width=”100” height=”100”> <PARAM NAME=”mybutton” value=”Display Dialog”> </applet> */ Chương trình 6. màu n n. 6.4 Truy n tham s cho Applet Trong chương trình sau. Phương th c ‘destroy()’ khác v i phương th c finalize() là phương th c destroy() ch dùng cho applet. lúc ó applet s b ng ng. Phương th c này x y ra nhi u l n trong su t quá trình applet t n t i. ho c trang ó ã ư c thu nh l i dư i thanh taskbar. M t khi applet ư c kh i t o. N u không có tham s truy n vào. Có th là text. L p Graphics thu c l p java. Phương th c này giúp applet d n d p trư c khi nó ư c gi i phóng kh i vùng nh . Ví d . Phương th c paint() cũng là m t phương th c quan tr ng khác. Tham s này là i tư ng c a l p Graphics. Phương th c ‘init()’ s ki m tra tham s có tên là ‘mybutton’. Phương th c này cho phép ta hi n th m t cái gì ó trên màn hình. ư ng th ng. Phương th c init() ư c nh nghĩa è cung c p các hành vi kh i t o. Applet có th kh i ng ngay c khi nó ã ư c ng ng trư c ó. Thành ph n nút ‘bNext’ có tên ư c truy n như là m t tham s .3 Khoa Công ngh Thông tin – ih c àL t Trang 177 . ho c hình nh. Sau ó. i u này x y ra khi m t applet ư c n p.

awt.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 import java. //when no parameter is passed if (str==null) str = new String ("Default"). //when parameter is passed bNext = new Button(str). } } Sau ây là k t qu c a chương trình trên: Khoa Công ngh Thông tin – ih c àL t Trang 178 .*. /* <applet code="Mybutton1" width="200" height="100"> <PARAM NAME="mybutton" value="Display Dialog"> </applet> */ public class Mybutton1 extends Applet{ Button bNext. add (bNext). public void init(){ /*getParameter returns the value of the specified pareameter in the form of a String object*/ String str = getParameter("mybutton").*. import java.applet.

5: truy n tham s cho applet Bây gi chúng ta s s d ng l p Graphics v các hình ch ng h n như: ư ng th ng. hình oval. và hình ch nh t.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Hình 6. L p này có th dùng hi n th văn b n b ng b t c font nào. Khoa Công ngh Thông tin – ih c àL t Trang 179 . Chúng ta s h c l p Font trong các ph n sau.

bao g m các phương th c ư c s d ng v các hình ho như hình oval. hình ch nh t. hình tròn. hình vuông. v a là application. L p Graphics n m trong gói AWT. Khoa Công ngh Thông tin – ih c àL t Trang 180 .Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Tóm t t Applet là chương trình Java ch y trong trình duy t web. Java s d ng b ng màu RGB. ư ng th ng và văn b n. M t chương trình Java có th v a là applet.

Trong java........ úng/Sai úng/Sai n ho cơ b n là úng/Sai Khoa Công ngh Thông tin – ih c àL t Trang 181 .. M t chương trình Java có th v a là applet. Java applet không th c.... 6. v a là application... Phương th c .... 5..... Phương th c .dùng c p nh t (update) c a s .. ghi file trên máy ngư i s d ng........... Phương th c .... i u khi n màu s c ư c th c hi n thông qua hai màu tr ng và en. 3......Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Ki m tra s ti n b 1... 4.dùng t m d ng applet.dùng t o tham chi u n i tư ng n (Graphics)..... 2.

nút l nh và nhãn.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Bài t p Vi t applet như sau: Khi ngư i s d ng nh p vào ô văn b n và click chu t vào nút 'Check identifier' applet ph i ki m tra xem t có trong ô văn b n có ph i là m t t khoá có trong java không. Khoa Công ngh Thông tin – ih c àL t Trang 182 . Ghi chú: S d ng các font ch khác nhau cho ô văn b n.

forName(“sun.jdbc. MySQL… 7. MS SQL Server. Ví d : N p trình i u khi n SQL Server: Class. N p trình i u khi n: n p trình i u khi n ta s d ng cú pháp sau: Class.1.jdbc. Ph n cơ s c a JDBC ch a trong gói java.sql ( ư c cài t riêng như m t tuỳ ch n) ch a các giao ti p. Trong ó driverString là chu i ch nh tên c a trình i u khi n c n n p. l p ph c v nhu c u m r ng như giao tác phân tán (distributed transactions). ph n m r ng ch a trong gói javax.getConnection() nh n v i tư ng Connection k t n i v i CSDL.sqlserver.2.2.microsoft. Vì trình i u khi n có th không tưong thích v i CSDL nên quá trình n p trình i u khi n có th phát sinh ng ai l ClassNotFoundException làm chương trình d ng t Khoa Công ngh Thông tin – ih c àL t Trang 183 . Gi i thi u v JDBC D LI U JDBC (Java Datatbase Connectivity) ch a m t t p các i tư ng và phương th c giúp giao ti p v i CSDL m t cách thu n l i.forName(driverString). • Thi t l p k t n i: chương trình Java g i phương th c Drivermanager.JdbcOdbcDriver”). Các bư c l p trình cơ s d li u v i JDBC 7. Ví d : N p trình i u khi n ODBC (thư ng cho MS Access): Class. web…JDBC có kh năng k t n i v i nhi u DBMS khác nhau như Access.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Chương 7 K T N I CƠ S N i dung chính 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. Oracle. K t n i cơ s d li u k t n i ư c trên CSDL ta l n lư t th c hi n các bư c sau: • N p trình i u khi n.1.odbc.sql (có s n trong JDK).forName("com.SQLServerDriver").

odbc.jdbc. nên câu l nh c n ơc t trong kh i l nh: try {} catch{}: try{ Connection conn = DriverManager.mdb).mdb ta th c hi n các bư c sau: o M h p tho i ODBC Data Source Administrator: Ch n Start\Run: Gõ vào h p Open: odbcad32. o Ch n Miscrosoft Access Driver(*. } catch (ClassNotFoundException e) { e.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 ng t. } Thi t l p k t n i: t o m t k t n i t i CSDL ta ph i t o ra m t i tư ng Connection theo cú pháp dư i ây.getConnection(url. “myLoginName”. có d ng: jdbc:subprotocol:subname subprotocol: giao th c tương ng v i lo i CSDL subname: tên c u n i ODBC thông qua ó ta có th k t n i t i CSDL. Ho c ch y ti n ích Data Source(ODBC). Chú ý r ng câu l nh này có th phát sinh ng ai l SQLException.JdbcOdbcDriver").exe.forName("sun.printStackTrace(). Nh n OK. Khoa Công ngh Thông tin – ih c àL t Trang 184 . Ch ng h n. o Ch n User (System) DSN\Add. } Trong ó: • • • • url: chu i nêu lên c i m c a CSDL. t o m t subname (c u n i ODBC) tên là nhasach k t n i t i CSDL trong file C:\NhaSach.printStackTrace(). } catch (SQLException e) { e. do ó sau: an mã n p trình i u khi n c n ph i t trong kh i try {} catch{} như try { Class. “myPassword”).

printStackTrace().mdb).getConnection(url). } catch (ClassNotFoundException e) { e.odbc.printStackTrace(). } Ví d : Thay vì k t n i t i CSDL thông qua c u n i ODBC ta có th k t n i tr c ti p như sau: String path = "D:\\data\\sample.forName(“sun.getConnection(url).printStackTrace().Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 o Nh n nút Finish.odbc. o t tên cho subname là nhasach trong ô Data Source Name.jdbc. } catch (ClassNotFoundException e) { e.DBQ="+path+". } catch (SQLException e) { e. o Nh n OK.". try{ Class. Connection conn = DriverManager.forName(“sun.jdbc.mdb".DataBase=QLSV"003B Connection conn = DriverManager. ta k t n i t i CSDL này qua các câu l nh sau: try{ Class. Khoa Công ngh Thông tin – ih c àL t Trang 185 . String url="jdbc:odbc:DRIVER=Microsoft Access Driver(*.JdbcOdbcDriver”).mdb (không c n m t kh u ngư i dùng).mdb.JdbcOdbcDriver”). Ví d : Sau khi ã có subname nhasach k t n i t i file C:\NhaSach. String url = "Jdbc:Odbc:bb. READONLY=false. o Ch n nút Select và duy t t i file C:\NhaSach.

} Ví d : c cb : an mã sau k t n i t i CSDL nhasach d ng SQL Server n m trên máy tính String url = "jdbc:microsoft:sqlserver://" ":1433.SQLServerDriver").jdbc. username. T o truy v n và l y k t qu truy v n T o i tư ng Statement i tư ng • G i phương th c createStatement() c a l p Connection thông qua myConnection: myConnection.printStackTrace().Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 } catch (SQLException e) { e. Connection conn = DriverManager.createStatement().getConnection(url.printStackTrace(). password).Database=nhasach".forName("com. } 7. } catch (SQLException e) { e. } catch (ClassNotFoundException e) { e.2. try{ + "localhost" + Class.2. String password = "sa".printStackTrace().sqlserver.microsoft. String username = "sa". • L y i tư ng Statement tr v : Khoa Công ngh Thông tin – ih c àL t Trang 186 .

o getString(): l y giá tr ki u String. stmt = myConnection. l y t ng thành ph n d li u trong t ng m u tin ta dùng phương th c getXXX(String FieldName) ho c getXXX(int FieldIndex)c a i tư ng thu c l p ResultSet. o getObject(): l y giá tr ki u Object. o getDouble(): l y giá tr ki u Double. rs= sta. Khoa Công ngh Thông tin – ih c àL t Trang 187 . L y k t qu truy v n l y ư c k t qu c a câu truy v n ta c n ph i t o ra m t m u c u trúc l nh sau: i tư ng ResultSet b ng ResultSet rs. Di chuy n n m u tin cu i cùng.executeQuery(sql). Di chuy n n m u u tiên.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Statement stmt. Trong ó: sta: là i tư ng Statement ho c PreparedStatement sql: là câu truy v n Sau khi ã có i tư ng ResultSet. tr v false n u ngư c l i): Phương th c next() previous() last() first() isLast() isFirst() Ý nghĩa Di chuy n n m u tin k ti p Di chuy n n m u tin trư c m u tin hi n hành. • XXX là ki u d li u tương ng v i c t (field) c n l y.createStatement(). • FieldName: Tên c t c n l y. o getInt(): l y giá tr ki u Int. ánh s t 1. o getByte(): l y giá tr ki u Byte. Ki m tra xem có ph i ang m u tin cu i hay không. ta dùng các phương th c sau di chuy n n t ng m u tin và ki m tra v trí con tr (các phương th c này tr v true n u th c hi n ư c. Trong ó. Ki m tra xem có ph i ang m u tin u tiên hay không. • FieldIndex: Ch s c a c t c n l y (trong câu truy v n).

try{ Class.table.*.".JdbcOdbcDriver"). } catch (ClassNotFoundException e) { = new Khoa Công ngh Thông tin – ih c àL t Trang 188 .READONLY=false. String []columnName = {"MaSach".0). import java. public class Test extends JPanel{ Connection connect= null. Statement sta= null.sql. "NamXB"}."TacGia".*.mdb).swing. ResultSet rs. import javax. String url="jdbc:odbc:DRIVER=Microsoft Access Driver (*. TenSach.event.DBQ="+path+".*.add(new JScrollPane(table)).util.*.mdb".*. "TenSach" .awt. String sql="SELECT MaSach.awt. String path = "c:\\jv\\nhasach.odbc. TacGia.swing. DefaultTableModel modelTable DefaultTableModel(columnName. NamXB FROM Sach".Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Ví d : import java. JTable table= new JTable(modelTable).getConnection(url). connect = DriverManager. import javax. public Test() throws Exception{ this.forName("sun.jdbc.*. import java. import java.

getInt("NamXB")).add(rs. frame. rs= sta. } } public static void main(String []args)throws Exception{ JPanel test= new Test().getContentPane(). JFrame frame= new JFrame ("JTable"). Khoa Công ngh Thông tin – ih c àL t Trang 189 . } sta= connect. } catch (SQLException e) { e. modelTable.createStatement().getString("TenSach")). //duyet tung record . myVector.setSize(500.200).getString("MaSach")). myVector. myVector.add(test). myVector.printStackTrace().Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 e.add(rs.add(""+ rs. //dua tung record vao mot vector //Chen vector vao bang JTable while(rs.addRow(myVector).add(rs. frame.printStackTrace().executeQuery(sql).getString("TacGia")).next()){ // Tao vector luu mot dong du lieu Vector myVector= new Vector().

setVisible(true). } } Khoa Công ngh Thông tin – ih c àL t Trang 190 .Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 frame.

Khoa Công ngh Thông tin – ih c àL t Trang 191 . Sau khi ã có i tư ng ResultSet.getConnection() nh n v i tư ng Connection k t n i v i CSDL. k t n i ư c trên CSDL ta l n lư t th c hi n các bư c sau: o N p trình i u khi n. L y k t qu c a câu truy v n b ng cách t o ra m t i tư ng ResultSet. o Thi t l p k t n i: chương trình Java g i phương th c Drivermanager.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Tóm t t bài h c JDBC (Java Datatbase Connectivity) ch a m t t p các i tư ng và phương th c giúp giao ti p v i CSDL m t cách thu n l i. ta dùng các phương th c c a l p này di chuy n n t ng m u tin l y và hi n th k t qu . G i phương th c createStatement() c a l p Connection l y i tư ng Statement.

Thêm. T o form QuanLySach v i các ch c năng sau: • • Hi n danh sách các th l ai.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Bài t p T o CSDL SQL Server ho c Access ( t tên file là NhaSach) v i các b ng như 2 b ng dư i ây. xóa. 2. Khoa Công ngh Thông tin – ih c àL t Trang 192 . Sau ó t o relationship tưong 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 . s a th l ai. Thêm vào form QuanLyTheLoai m t nút nh n và m t TextBox. s a sách. Khi nh p mã th l ai vào TextBox và nh n vào nút ó thì chương trình s li t kê t t c các sách thu c cùng m t th l ai ã ch n. Thêm. xóa. T o form QuanLyTheLoai v i các ch c năng sau: • • Hi n danh sách các th l ai.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.

chúng là các l p chính c a các dòng byte mà java cung c p.in.out: Dòng xu t chu n dùng hi n th k t qu trên màn hình. Các l p con c a l p InputStream th c hi n vào. Gi i thi u Chương này gi i thi u khái ni m v dòng (Stream). Do v y. Dòng vào/ra bao g m: L p System.lang. các t p tin và ng (pipeline). 8.1. trong khi các l p con c a l p OutputStream th c hi n ra. c Các l p ‘InputStream’ và ‘OutputStream’ cung c p nhi u kh năng vào/ra khác nhau. các lu ng khác b có nhu c u c/ghi dòng ó u ph i t m d ng. trong thu t ng v k thu t dòng là m t l trình mà d li u ư c truy n trong chương trình. Mô t vào/ra chu i và ký t Dùng l p PrinterWriter 8. C hai l p này có các l p th a k th c hi n I/O thông qua các vùng b nh m. Khi m t dòng ư c c hay ghi.in: Dòng nh p chu n thư ng n t bàn phím và ư c dùng các ký t d li u. Stream Theo thu t ng chung. các câu l nh thao tác dòng ph i bao g m kh i try-catch. N u có m t l i x y ra khi c hay ghi òng. Chúng ta cũng th o lu n các l p khác nhau trong gói java. L p ‘java.io ph c v vào ra. Khoa Công ngh Thông tin – ih c àL t Trang 193 .2.System’ nh nghĩa các dòng nh p và xu t chu n. stream là m t dòng lưu chuy n. ta tham chi u nó như ang “ghi” và “ c” m t dòng tương ng. L p System.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Chương 8 DÒNG NH P/XU T (I/O Stream) N i dung chính Các khái ni m v Stream Các l p InputStream và OutputStream Mô t vào ra m ng Byte Th c hi n l c và m nh p/xu t Dùng l p RandomAccesFile. m t ngo i l ki u IOException ư c t o ra. Chúng ta cũng ã s d ng các dòng xu t xu t d li u và hi n th k t qu trên màn hình. Khi m t dòng d li u ư c g i ho c nh n. L p System. M t ng d ng v các dòng ma ta ã quen thu c ó là dòng nh p System. Dòng là nh ng ng g i và nh n thông tin trong các chương trình java.err: ây là dòng l i chu n.

Luôn luôn óng dòng ch c ch n r ng dòng x lý ư c k t thúc. Tr v giá tr boolean ch ra r ng dòng có h tr các kh năng mark và reset hay không. c và x lý các dòng u vào.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 8. Tr v s byte c ư c hay ‘-1’ n u như ã c n cu i dòng. Nó tr v s byte th c s c ư c cho n khi k t thúc dòng. Nó gây ra ngo i l IOException n u có l i x y ra. Tên phương th c read() Mô t c các byte d li u t m t dòng. Nó cũng c vào m t m ng byte. Nó nh nghĩa cách th c nh n d li u. read (byte []) read (byte []. Phương th c này b qua ‘n’ byte dòng vào. Phương th c này nh v l i dòng theo v trí ư c ánh l n cu i cùng.1. Nó tr v s byte hi n t i có trong dòng.io. int. Các phương th c ư c hi n trong b n 8. N u như không có byte d li u nào. Phương th c này s d ng di chuy n t i v trí c bi t bên trong dòng vào. các lu ng ang th c hi n ph i t m d ng cho n khi có d li u. Nó gây ra ngo i l IOException n u l i x y ra. Nó tr v True n u dòng h tr ngư c l i tr v False.3. L p InputStream cung c p m t s phương th c c và dùng các dòng d li u làm u vào. Nó gây ra ngo i l IOException n u l i x y ra. Nó không ph i là phương th c tin c y th c hi n ti n trình x lý u vào. Phương pháp này tr v s lư ng byte có th c ư c mà không pah ch . mà là kh năng truy c p. Nó gây ra ngo i l IOException n u l i x y ra. Phương th c này óng dòng. Gói java.1. Nó dùng gi i phóng m i tài nguyên dòng ã s d ng. Các phương th c này giúp ta t o. nó ph i ch .3. i m quan tr ng không n m ch d li u t âu. Chúng ta s th o lu n tìm hi u v các l p thu c gói java. chúng không m nh dùng khi ng phó v i I/O th c t .io Các lu ng h th ng r t có ích. Gói java. L p InputStream L p InputStream là m t l p tr u tư ng. ’-n’ ch nh s byte ư c b qua. Tuy nhiên.1 Các phương th c c a l p InputStream Khoa Công ngh Thông tin – ih c àL t Trang 194 . Khi m t phương th c ph i ch . ánh d u v trí hi n t i c a dòng. Nó gây ra ngo i l IOException n u l i x y ra. 8. int) available() close() mark() markSupported() reset() skip() Table 8.io ph i ư c nh p kh u vì m c ích này.

int) Mô t Phương th c này ghi m t byte Phương th c này phong to cho n khi m t byte ư c ghi. ‘available()’ và ‘reset()’. hay m t o n c a m t m ng byte.3. dòng ph i ch cho n khi tác v ghi hoàn t t.int. L p ByteArrayOutputStream L p này t o ra dòng ra trên m t m ng các byte. L p OutputStream nh nghĩa ba d ng khác nhau c a phương th c có th ghi m t byte riêng l .2. Chúng ư c dùng chuy n i dòng thành m t m ng byte hay chu i. m d li u ư c ghi ra dòng. Nó kích ho t IOException n u l i x y ra. Nó gây ra ngo i l IOException n u l i x y ra. Phương th c óng dòng. L p ByteArrayOutputStream cũng cung c p hai phương th c thi t l p. Các phương th c bao g m: Tên phương th c write(int) write(byte[]) write(byte[]. L p này cung c p vài phương th c b sung. L p này không h tr các phương th c m i. L p OutputStream L p OutputStream cũng là l p tr u tư ng. nó thi t l p b ra xu t v i kích thư c m c nh. Nó cũng cung c p các kh năng cho phép m n ra tăng trư ng nh m m c ích tăng kích thư c. M t có m t i s s nguyên dùng n nh m ng byte ra theo m t kích c ban u và th hai không có i s nào. Nó kích ho t IOException n u l i x y ra.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 8. L p này cũng cung c p them các phương th c ‘toByteArrray()’ và ‘toString()’. không ư c khai báo trong OutputStream: reset() m. Khoa Công ngh Thông tin – ih c àL t Trang 195 . Nó nh nghĩa cách ghi các k t xu t n dòng. ghi và x lý k t xu t các dòng. ‘skip()’. B ng 8. m t m ng các byte.2 Các phương th c l p OutputStream flush() close() 8.3. Vào ra m ng byte Các l p ‘ByteArrayInputStream’ và ‘ByteArrayOutputStream’ s d ng các b Không c n thi t ph i dùng chúng cùng v i nhau. Phương th c này ghi m ng các byte.3. Nó cung c p m t t p các phương th c tr giúp t o ra. Phương th c này x s ch dòng. L p ByteArrayInputStream L p này t o dòng u vào t b m. Ngư c l i nó nh nghĩa è các phương th c c a l p InputStream như ‘read() ‘. Nó ư c dùng gi i phóng m i tài nguyên g n v i dòng. ó là m ng các byte.

i<s.println("Output Stream is:" + os). public class byteexam{ public static void main(String args[]) throws IOException{ ByteArrayOutputStream os =new ByteArrayOutputStream(). int byrd = in. nh.lang. import java.available().i++) os.println("Size of output stream is:"+ os. int ib = in. String s ="Welcome to Byte Array Input Outputclasses".out. byte ibuf[] = new byte[ib]. for(int i=0. System. Khoa Công ngh Thông tin – ih c àL t Trang 196 . Tr v s byte hi n t i ã ư c ghi t i vùng writeto() Ghi n i dung c a vùng m ra dòng ra ã ch tư ng c a l p OutputStream làm i s .1 import java.*. System.out.println("Input Stream has :" + ib + "available bytes"). m.1 s d ng l p ‘ByteArrayInputStream’ và ‘ByteArrayOutputStream’ nh p và xu t: Chương trình 8.size()).ib). in = new ByteArrayInputStream(os.read(ibuf.0.charAt(i) ) .System.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Thi t l p l i vùng size() m ra nh m cho phép ghi l i t u vùng m.io.length( ). System. write (s. th c hi ns d ng m t i Chương trình 8.out. ByteArrayInputStream in.toByteArray()).

T p tin nh p xu t Java h tr các tác v nh p và xu t t p tin v i s tr giúp các l p sau ây: File FileDescriptor FileInputStream FileOutputStream Java cũng h tr truy c p nh p và xu t tr c ti p hay ng u nhiên b ng các l p ‘File’.println("Number of Bytes read are :" + byrd).out.4. L p này cung c p các phương th c thi t l p các t p tin và các thư m c. T t c các thao tác thư m c và t p tin ư c th c hi n thông qua các phương th c c a l p File.’FileDescriptior’. 8.1: S d ng l p ‘ByteArrayInputStream’ và ‘ByteArrayOutputStream’ cho nh p và xu t.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 System.out. L p File L p này ư c s d ng truy c p các i tư ng t p tin và thư m c. Các qui ư c này ư c mô t b ng các h ng s c a l p File.3. Các phương th c: Khoa Công ngh Thông tin – ih c àL t Trang 197 . System. Các t p tin t tên theo qui ư c t tên t p tin c a h i u hành. } } K t xu t c a chương trình: Hình 8. Các thi t l p ch p nh n các ư ng d n t p tin tuy t i l n tương i c a các t p tin và thư m c.println("They are: " + new String(ibuf)). và ‘RandomAccessFile’.

Nó cũng cung c p thêm các phương th c ‘finalize()’ và ‘getFD()‘. các phương th c thư m c cũng cho phép t o.io. L p FileDescriptor L p này cung c p kh năng truy c p các mô t t p tin mà h i u hành s d ng khi t p tin và thư m c ang ư c truy c p. L p FileInputStream L p này cho phép c vào t m t t p tin dư i d ng m t dòng.File. L p FileOutputStream L p này cho phép xu t ra m t t p tin theo dòng. cung c p kh năng truy c p thư m c cha và các thư m c anh em. Nó ch cung c p m t phương th c duy nh t là ‘valid()’. giúp xác nh m t i tư ng mô t t p tin hi n có h p l hay không. i tư ng File. Các phương th c này cho phép truy nh p cây thư m c.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Cho phép b n t o. i tên các file. Xác nh i tư ng là t p tin hay thư m c.io. Các i tư ng c a l p này ư c t o ra nh ư ng d n t i file. Gi ng như các phương th c truy c p.io. xoá. L p này không cung c p các phương th c cho phép xem chi ti t thông tin do h i u hành s d ng. ho c i tư ng FileDescriptor làm m t i s . Cung c p kh năng truy c p b ng ư ng d n t p tin. L p này nh nghĩa ch ng các phương th c c a l p InputStream. FileDesciptor làm tham s thi t l p.io. L p này nh nghĩa ch ng phương th c c a l p OutputStream và cung c p thêm các phương th c ‘finalize()’ và getFD(). public class fileioexam{ public static void main(String args[ ]) throws IOException { Khoa Công ngh Thông tin – ih c àL t Trang 198 . Các i tư ng c a l p này cũng t o ra s d ng ư ng d n c a t p tin. t tên l i và li t kê các thư m c. Phương th c ‘getFD()’ tr v i tư ng FileDescriptor ch a thông tin v s k t n i th c s t i file mà ‘FileInputStream’ ang s d ng. Chương trình 8.IOException.FileInputStream.2 import java. import java. import java.FileOutputStream. xoá. import java. Ki m tra quy n truy c p c và ghi. Phương th c ‘finalize()‘ ư c dùng óng dòng khi nó ư c b gom rác Java nh t.

txt").available( ). is. os.close(). File fl = new File("abc.length( ). ++i) os.txt FileOutputStream os = new FileOutputStream("abc. for(int i = 0. và l p File Khoa Công ngh Thông tin – ih c àL t Trang 199 .txt c FileInputStream is = new FileInputStream("abc. fl. FileOutputStream. String s = "Welcome to File Input Output Stream " . byte ibuf[ ] = new byte[ibyts].txt"). int byrd = is.2 hi n k t xu t c a o n mã ngu n trên: Hình 8. } } Hình 8.txt"). System. i< s.out.delete(). 0.println("They are: " + new String(ibuf)).println("Input Stream has " + ibyts + " available bytes").println("Number of Bytes read are: " + byrd). write(s.out. int ibyts = is.read(ibuf.out.charAt(i)). ibyts).close(). System. System.2 S d ng FileInputStream. // m file abc.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 //t o file abc.

Các b l c có th ghép v i nhau khi ó u ra c a b l c này tr thành u vào c a b l c kia. L p FilterInputStream ư c thi t k sao cho có kh năng k t chu i nhi u b l c.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 8. nên có th áp Khoa Công ngh Thông tin – ih c àL t Trang 200 . D li u ư c lưu tr n khi vùng m y ho c các dòng tra th c hi n x tr ng (flush). Các b l c ho t ng trên vùng m. L p FilterInputStream ây là l p tr u tư ng. Bi n này ư c dùng duy trì m t i tư ng tách bi t c a l p InputStream. L p FilterOutputStream L p này là m t d ng b tr cho l p FilterInputStream. Nó th c hi n x lý m t quá trình nào ó trên các byte ư c truy n t u vào n u ra. M t dòng có th ư c c và ưa k t qu cho m t dòng khác. Bi n ‘in’ ư c s d ng làm i u này. Khi chương trình c dòng nh p thì thay vì ra dòng vào c nó c t vùng m nh p. Nó giúp chương trình c/ghi lư ng d li u nh không nh hư ng l n n hi u năng chung c a h th ng. Nh p/xu t có s d ng b m Vùng m là kho lưu tr d li u. Vùng m ư c t gi a chương trình và dòng ra c a vùng m.3. V cơ b n. Các l p. Nó là l p cha c a t t c các l p dòng xu t l c.6.3. Nh ó chương trình có th c d li u t dòng t ng byte m t mà không nh hư ng n t c th c hi n c a h th ng.5. d li u ra ư c lưu tr trong m t vùng m ra. 8. Trong khi th c hi n vào có vùng m. Nh p xu t l c M t ‘Filter’ là m t ki u dòng ã thay i cách x lý dòng hi n có. B i l p ‘BufferedInputStream’ là m t b l c. L p này cung c p kh năng t o ra m t dòng t dòng khác. M i l p s truy c p u ra c a l p trư c ó v i s tr giúp c a bi n ‘in’. Cu i cùng li u ra trong vùng m ư c chuy n n dòng ra. L p này tương t như l p FilterInputStream ch nó duy trì i tư ng c a l p OutputStream làm m t bi n ‘out’. Chúng ta có th l y d li u t vùng m thay vì quay tr l i ngu n ban u c a d li u. khi d li u ư c m t chương trình ghi ra dòng ra. B l c n m gi a m t dòng nh p và m t dòng xu t. các b l c này dùng thích nghi các dòng theo các nhu c u c a chương trình c th . Java s d ng cơ ch nh p/xu t có l p vùng m t m th i l p cache d li u vào/ra c a m t dòng. và lưu tr trong m t vùng m nh p. m t s lư ng byte l n ư c c t i m t th i i m. các dòng nh p xu t l c c a java s giúp ta l c vào/ra theo m t s cách. Nó là cha c a t t c các l p dòng nh p l c. th c hi n i u này chúng ta dùng vài t ng l ng nhau. L p BufferedInputStream L p này t ng t o ra và duy trì vùng m h tr thao tác vào. Ti n trình l p vùng m ra cũng th c hi n tương t . D li u ghi vào l p này có th s a i theo nhu c u th c hi n tác v l c và sau ó ư c chuy n t i i tư ng OutputStream.

import java. m t cho phép ch nh kích c c a vùng m xu t.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 d ng nó cho m t s i tư ng nh t nh c a l p InputStream và cũng có th ph i h p v i các t p tin u vào khác. Các bi n này ư c khai báo là protected và do ó chương trình không th truy c p tr c ti p. L p này nh nghĩa ch ng các phương th c truy c p mà InputStream cung c p và không ưa thêm b t kì phương th c m i nào. FileInputStream Fis2. L p này nh nghĩa ch ng t t c các phương th c c a OutputStream và không ưa thêm b t kì phương th c m i nào.java").3 import java. L p BufferedOutputStream L p này cũng nh nghĩa hai phương th c thi t l p. M t cho phép ch nh kích c c a vùng m nh p trong khi ó phương th c thi t l p kia thì không. FileInputStream Fis1 .FileInputStream. public class buffexam{ public static void main(String args[ ]) throws IOException{ // defining sequence input stream SequenceInputStream Seq3.io. Nhưng c hai phương th c thi t l p u ti p nh n i tư ng c a l p InputStream làm i s .io.io. Seq3 = new SequenceInputStream(Fis1. import java.3 dư i ây mô t cách dùng các lu ng nh p/xu t có l p vùng m: Chương trình 8.SequenceInputStream.BufferedOutputStream.IOException.BufferedInputStream. L p này s d ng vài bi n th c hi n các cơ ch l p vùng m u vào. Fis1 = new FileInputStream("byteexam. Fis2).java"). m t s d ng kích c vùng m ng m nh. import java. Chương trình 8. Fis2= new FileInputStream("fileioexam. // create buffered input and output streams Khoa Công ngh Thông tin – ih c àL t Trang 201 .io. import java.io. L p này nh nghĩa hai phương th c thi t l p.

close().close(). int bytcnt = 0. oust= new BufferedOutputStream(System.out). 0.close().close(). boolean eof = false.write((char) num). while(!eof){ int num = inst. Fis1.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 BufferedInputStream inst. BufferedOutputStream oust. inst= new BufferedInputStream(Seq3). Khoa Công ngh Thông tin – ih c àL t Trang 202 . oust. ++bytcnt.skip(1000). // close all streams. Fis2. } else{ oust. if(num==-1){ eof =true. } } String bytrd=String. oust.write(bytrd.length()). inst. inst.getBytes(). bytrd.read(). bytrd += " bytes were read".valueOf(bytcnt).

Java 1. Phương th c này tr v giá tr ki u boolean. L p Reader và Writer m lu ng nh p và xu t.3. L p Reader L p này h tr các phương th c: read( ) reset( ) skip( ) mark( ) markSupported( ) close( ) c và ghi các L p này cũng h tr phương th c ‘ready()’.1 ã gi i thi u các l p này.3 S d ng các l p vùng 8. Chúng là l p cha c a t t c các l p dòng ký t unicode.7. L p Writer L p này h tr các phương th c: write( ) Khoa Công ngh Thông tin – ih c àL t Trang 203 . ây là các l p tr tư ng.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 } } K t xu t c a chương trình trên: Hình 8. xem vi c c có ti p t c ư c hay không.

io.4 dư i ây th c hi n các tác v nh p/xu t m ng ký t : Chương trình 8.io. nó ch dùng các phương th c mà l p Reader cung c p.io.IOException. i vùng m xu t thành m t i tư ng String m xu t m m L p StringReader tr giúp c ký t t m t chu i.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 flush( ) close( ) 8. Nh p/ xu t chu i và xâu ký t Các l p ‘CharArrayReader’ và ‘CharArrayWriter’ cũng tương t như các l p ByteArrayInputStream và ByteArrayOutputStream ch chúng h tr nh p/xu t t các vùng m.4 import java. L p CharArrayWriter b sung thêm các phương th c sau ây ngoài các phương th c c a l p Writer. L p này b sung hai phương th c có tên là ‘getBuffer( )’ và ‘toString()’ . Các l p CharArrayReader và CharArrayWriter h tr nh p/ xu t ký t 8 bit.8.3. Phương th c ‘getBuffer( )’ tr v i tư ng StringBuffer tương ng v i vùng m xu t. Nó không b sung phương th c nào ngoài các phương th c c a l p Reader. public class testl{ Khoa Công ngh Thông tin – ih c àL t Trang 204 . CharArrayReader b sung thêm phương pháp nào. Chương trình 8. L p StringWriter tr giúp ghi ký t ra i tư ng StringBuffer. trong khi ó phương th c toString( ) tr v m t chu i ch a b n sao c a vùng m xu t. import java.CharArrayWriter. reset( ) Thi t l p l i vùng size( ) tr v kích c hi n hành c a vùng toCharArray( ) Tr v b n sao m ng ký t c a vùng toString( ) Chuy n writeTo( ) Ghi vùng m ra m t lu ng xu t khác. import java.CharArrayReader.

i<s.size( )).append((char) a).out.println("Output Stream is: " + ost).toCharArray( )).println("They are:" + s). } } K t xu t chương trình: Hình 8.read( )) != -1) sbI. inst = new CharArrayReader(ost. System. while((a = inst.out. CharArrayReader inst.length( ).println(s. s = sbI. StringBuffer sbI = new StringBuffer(" ").4 Các tác v nh p và xu t m ng các ký t Chương trình 8.out. ++i) ost.length() + "characters were read"). System.println("Size is: " + ost. for(int i= 0. Khoa Công ngh Thông tin – ih c àL t Trang 205 .charAt(i)).write(s.toString( ). System. String s = "Welcome to Character Array Program". int a= 0.out. System.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 public static void main(String args[ ]) throws IOException { CharArrayWriter ost = new CharArrayWriter( ).5 Mô t ti n trình nh p/xu t chu i.

toString( )).io.out. import java.5 import java. s = sb1.IOException.System.io. System. public class strioexam{ public static void main(String args[ ]) throws IOException{ StringWriter ost = new StringWriter( ). System.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Chương trình 8.io.length(). i <s.charAt(i)) .StringWriter.read())!=-1) sb1.write(s. while((a = inst. import java. StringBuffer sb1 = new StringBuffer(" "). import java. ++i) ost.io. } } K t xu t chương trình: Khoa Công ngh Thông tin – ih c àL t Trang 206 .lang. inst = new StringReader(ost.StringReader.out.println("Output Stream is: " + ost). for(int i= 0. import java. * . StringReader inst.out. int a= 0. System.println("They are: " + s). String s = "Welcome to String Input Output Program".append((char) a).length( )).println("No of characters read: " +s.toString( ).

Giao di n DataInput Giao di n DataInput ư c s d ng c các byte t dòng nh phân và xây d ng l i các ki u d li u d ng nguyên thu c a Java. 8.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Hình 8. m ng ký t . Chu n UTF cho nh d ng chuy n i Unicode. Nó th c t c i thi n l p PrintStream b ng cách dùng d u tách dòng ph thu c h i u hành in các dòng thay vì ký t ‘\n’. Khoa Công ngh Thông tin – ih c àL t Trang 207 .3. Phương th c setError() ư c s d ng thi t l p l i i u ki n. UTF cho r ng trong h u h t các trư ng h p.3 Tóm lư t vài phương th c.3. L p này có các phương th c b sung. Giao di n DataInput ư c nh nghĩa m t s các phương th c. các phương th c bao g m vi c c các ki u d li u nguyên thu trong java. và tr v khác 0. chu i và i tư ng.9. DataInput cũng cho phép chúng ta chuy n i d li u t nh d ng s a i UTF-8 t i d ng chu i. tr giúp cho vi c in n d li u cơ b n. T t c các phương th c ngo i l IOException trong trư ng h p l i: Tên phương th c boolean readBoolean( ) byte readByte( ) char readChar( ) short redShort( ) long readLong( ) Mô t c m t byte nh p. L p PrinterWriter’ là m t phiên b n hư ng ký t c a l p PrintStream. Nó là ki u nh d ng t bi t mã hoá các ký t Unicode 16 bit . byte cao trong 2 byte Unicode s là 0. B ng 8. L p PrinterWriter L p ‘PrintStream’ th c hi n vi c k t xu t d li u.5 Nh p và xu t chu i 8. Phương th c ‘checkError()’ ư c s d ng ki m tra k t xu t và xoá s ch các l i. 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 năng t o ra True n u byte ó ng 0. u short u long. L p PrinterWriter h tr in n các ki u d li u nguyên thu . L p này cũng c p h tr ký t Unicode t t hơn so v i PrintStream.10.

3. bi u di n l i giá tr ki u double Ghi m t chu i UTF t i dòng. Tên phương 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 vào dòng Ghi giá tr 8 bit th p Ghi 2 byte giá tr ki u ký t vào dòng Ghi 2 byte. Giao di n DataOutput Giao di n DataOutput ư c s d ng tái t o l i các ki u d li u nguyên thu trong java vthành dãy byte. L p RandomAccessFile th c hi n c hai vi c nh p và xu t. bi u di n l i giá tr ki u short Ghi 8 byte. Do vây.Các phương th c m i thêm vào bao g m: seek( ) Thi t l p con tr t p tin t i v trí c th bên trong t p tin.11.12 L p RandomAccessFile L p RandomAccessFile cung c p kh năng th c hi n vào/ra theo m t v trí c th bên trong m t t p tin.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 float readFloat( ) int readInt( ) double readDouble( ) String readUTF( ) String readLine( ) c 4 byte và tr v giá tr ki u float c 4 byte và tr v giá tr ki u int c 8 byte và tr v giá tr ki u double c m t chu i c m t dòng văn b n B ng 8. Vì v y l p này có tên là RandomAccess. L p này cũng h tr các quy n cơ b n v c ho c ghi t p tin. d li u có th c ho c ghi v trí ng u nhiên thay vì liên t c. Nó ghi các byte này lên trên dòng nh phân.4 Các phương th c c a giao di n DataOutput 8. L p này gi i thi u vài phương th c m i khác v i phương th c ã th a k t các l p DataInput và DataOutput. Tham s ‘r’ ho c ‘rw’ ư c gán cho l p RandomAccessFile ch nh truy c p ‘ch c’ và ‘ c-ghi’. Trong l p này.4. bi n tr tương ng v i t p tin hi n hành có th n nh theo v trí b t kỳ trong t p tin. Giao di n DataOutput cũng cho phép chúng ta chuy n i m t chu i vào trong Java theo nh d ng UTF-8 và ghi nó vào dòng.3 Các phương th c c a giao di n DataInput 8. B ng 8. Khoa Công ngh Thông tin – ih c àL t Trang 208 . Phương thưc ‘seek( )’ h tr truy c p ng u nhiên. Vì th . Giao di n DataOutput nh nghĩa m t s phương th c ư c tóm t t trong b ng 8. bi u di n l i giá tr ki u long Ghi 4 byte.3. bi u di n l i giá tr ki u float ghi 4 byte Ghi 8 byte. T t c các phương th c u có kh năng gây ra ngo i l IOException trong trư ng h p l i. i u này cho phép c t p tin theo ch ch c ho c c-ghi. có th th c hi n I/O b ng các ki u d li u nguyên thu .

Chương trình dư i ây minh ho cách dùng l p RandomAccessFile.out. m t double t i m t file có tên ‘abc. m t int. System. rf = new RandomAccessFile(“abc.RandomAccessFile. length( ) Tr v chi u dài c a t p tin tính theo byte.IOException. Chương trình 8.6 import java. ký t và double t t p tin và hi n th chúng ra màn hình.println(rf. m t char. Nó ghi m t giá tr boolean. System.writeInt(67868).68). import java. Nó s d ng phương pháp seek( ) tìm v trí nh v bên trong t p tin (b t u t 1).println(rf.txt”.io.seek(1).System.println(rf. Sau ó nó c giá tr s nguyên. System.lang. rf.readDouble()).out.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 getFilePointer( ) Tr v v trí hi n hành c a con tr t p tin.writeDouble(678.io.out. rf. public class rndexam{ public static void main (String args[ ]) throws IOException{ RandomAccessFile rf. Khoa Công ngh Thông tin – ih c àL t Trang 209 .txt’. rf. //making use of seek() method to move to a specific file location rf.writeChars(“J”). rf.readInt()).seek(0).readChar()). “rw”). rf. import java.writeBoolean(true).

Nó bao g m dãy các giao di n: Pageable Printable PrinterGraphics Giao di n ‘Pageable’ nh nghĩa các phương th c ư c s d ng cho i tư ng mô t các trang s ư c in. ‘Bottom’. L p ‘PageFormat’ nh nghĩa l c a trang như ‘Top’. Nó cũng ch ra s lư ng trang s ư c in cũng như s ư c in trang hi n hành hay m t dãy các trang. } } K t xu t chương trình: Hình 8.2 cung c p.println(rf.close().’Left’ và ‘Right’.print ây là gói m i mà Java 1.6: L p RandomAccessFile Gói java. Nó cũng ch nh kích c và hư ng in như ‘Portrait’ Khoa Công ngh Thông tin – ih c àL t Trang 210 . Giao di n ‘PrinterGraphics‘ cung c p kh năng truy c p i tư ng ‘PrinterJob’.readBoolean)).awt. Ngoài ra nó cũng cung c p kh gi y và vùng v . L p ‘Book’ là m t l p con c a i tư ng duy trì m t danh sách các trang ư c in.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 System. Nó thay th kh năng in c a JDK 1. Nó cài t giao di n Pageable.out. rf. Giao di n ‘Printable’ ch nh phương th c print() ư c dùng in m t tr ng trên m t i tư ng Graphics. L p này cũng cung c p các phương th c thêm trang và qu n lý trang.1. Nó cung c p các l p sau ây: Paper Book PageFormat Printerjob L p ‘Page’ nh nghĩa các c tính v t lý c a trang gi y in.

Khoa Công ngh Thông tin – ih c àL t Trang 211 .awt. L p này cũng ch nh các tính ch t in. ‘PrinterIOException’ th a ‘PrinterException’ ch rõ l i trong I/O. và i u khi n yêu c u máy in. L p ‘PrinterJob’ là m t l p con c a i lư ng kh i t o. ‘PrinterAbortException’ là l p con c a l p PrinterException nêu rõ vi c in ã ư c hu b . Dư i ây là ngo i l và l i mà gói java.Exception nh m cung c p m t l p cơ s in các ngo i l liên quan. qu n lý.lang.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 (kh d c) ho c ‘Landscape’ (kh ngang).print kích ho t: PrinterException PrinterIOException PrinterAbortException ‘PrinterException‘ th a k java.

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Tóm t t bài h c M t dòng là m t phương pháp qua ó d li u di chuy n trong chương trình java. ByteArrayOutputStream h tr nh p/xu t 16bit. FileDescriptor. L p ByteArrayInputStream t o ra m t lu ng nh p t vùng m b nh trong khi ByteArrayOutputStream t o m t lu ng xu t trên m t mãng byte. l p này có b sung phương th c giúp ta in các ki u d li u nguyên thu . Trong khi ByteArrayInputStream. Khoa Công ngh Thông tin – ih c àL t Trang 212 . L p RandomAccessFile cung c p kh năng th c hi n I/O t i v trí c th trong m t t p tin. Java h tr tác v nh p/xu t t p tin v i s tr giúp c a các l p File.err L p InputStream là m t l p tr u tư ng nh nghĩa cách nh n d li u.out o L p System. CharArrayWriter khác v i ByteArrayInputStream. Nó nh nghĩa ghi ra các dòng ư c k t xu t như th nào. L p OutputStream cũng là l p tr u tư ng. FileInputStream và FileOutputStream. Dòng nh p/xu t bao g m các l p sau ây: o L p System. ByteArrayOutputStream h tr nh d ng nh p/xu t 8 bit. Các l p Reader và Writer là l p tr u tư ng h tr c và ghi các dòng ký t Unicode. Khi m t dòng d li u ư c g i ho c nh n.in o L p System. L p PrintStream cài t giao di n xu t. Chúng ta xem nó như ang ghi và c m t dòng tương ng. CharArrayReader.

3. 5. Phương th c ------------. ki m tra xem dòng có h tr các kh năng mark và reset hay không. 7.c các byte d li u t m t dòng. 6.và --------------------L p --------------.x s ch dòng. 2. Phương th c ------------. ti n b ---------.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Ki m tra m c 1. ----------.tr v giá tr boolean.ư c s d ng truy c p các i tư ng thư m c và t p tin. 8. Nh p/xu t m ng byte s d ng các l p -----------. Khoa Công ngh Thông tin – ih c àL t Trang 213 . --------------là m t nơi ch a d li u.là ng (pipeline) g i và nh n thông tin trong các chương trình java.là dòng l i chu n. Phương th c -----------. 4.

Vi t chương trình truy c p ng u nhiên t p tin.dat’. Vi t chương trình sao chép n i d ng t m t t p tin t i m t t p tin khác. t p tin ‘.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Bài t p 1. vì v y ngư i dùng truy c p chúng sau Khoa Công ngh Thông tin – ih c àL t Trang 214 . 2. Vi t chương trình nh n m t dòng văn b n t ngư i dùng và hi n th o n văn b n ó lên màn hình. có giao di n như sau: Các b n ghi nên ư c lưu này. 3.

Các môi trư ng runtime như ‘IllegalAccessException’. t t c các ngu n tài nguyên mà h th ng c p nên ư c thu h i l i. tránh trư ng h p này. Ví d .3. Gi i thi u Exception là m t lo i l i c bi t. i tư ng này ch a thông tin chi ti t v ngo i l . N u không.v… có th t o ra ngo i l . l p này là l p cha c a t t c các ngo i l khác. Ngôn ng Java cung c p cơ ch dùng x lý ngo i l r t hi u qu . N u b n không x lý các tr ng thái này thì chương trình có th b k t thúc t ng t. ‘EmptyStackException’ v. Các tr ng thái không bình thư ng x y ra trong khi thi hành chương trình t o ra các exception. t t c các ngu n tài nguyên mà h th ng ã c p không ư c gi i phóng. Thông tin này có th ư c nh n v và ư c x lý. i tư ng (object) tương ng v i ngo i l ó ư c t o ra. L p ‘Throwable’ ư c Java cung c p là l p trên cùng c a l p Exception (l p u tiên trong cây th a k ). Tính năng này làm cho Java tr thành m t ngôn ng l p trình m nh. xét thao tác vào ra (I/O) trong m t t p tin. Ví d .1. Khoa Công ngh Thông tin – ih c àL t Trang 215 . ‘catch’ và ‘finally’ Cách s d ng các t khoá ‘throw’ và ‘throws’ T t o ra các ngo i l LÝ NGO I L 9. m t ngo i l s x y ra và chương trình b h y mà không óng t p tin l i. L i này xu t hi n vào lúc th c thi chương trình. i u này gây lãng phí tài nguyên. Nh ng tr ng thái này không ư c bi t trư c trong khi ta ang xây d ng chương trình. vi c chia cho 0 s t o m t l i trong chương trình. chương trình s b ng t khi m t ngo i l x y ra. Chương trình ôi khi có th t t o ra ngo i l . Lúc ó t p tin d b hư h i và các ngu n tài nguyên ư c c p phát cho t p tin không ư c tr l i cho h th ng. M c ích c a vi c x lý ngo i l M t chương trình nên có cơ ch x lý ngo i l thích h p. N u vi c chuy n i ki u d li u không th c hi n úng. Ti n trình này òi h i cơ ch x lý ngo i l thích h p. Vi c x lý này làm 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. Trong trư ng h p ó.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Chương 9 X N i dung chính nh nghĩa ngo i l M c ích c a vi c x lý ngo i l Các ki u ngo i l khác nhau trong Java Mô hình x lý ngo i l Các kh i l nh ch a nhi u kh i x lý ngo i l Cách s d ng các kh i ‘try’. X lý ngo i l Khi m t ngo i l x y ra.2. 9. 9. i tư ng này sau ó ư c truy n cho phương th c là nơi mà ngo i l x y ra.

Mô hình x lý ngo i l Trong Java. } Khoa Công ngh Thông tin – ih c àL t Trang 216 . khi m t ngo i l x y ra. Ngôn ng Java cung c p 5 t khoá sau x lý các ngo i l : try catch throw throws finally Dư i ây là c u trúc c a mô hình x lý ngo i l : try{ // o n mã có kh năng gây ra ngo i l } catch(Exception e1){ // N u các l nh trong kh i ‘try’ t o ra ngo i l có lo i e1. Mô hình x lý ngo i l c a Java ư c g i là ‘catch and throw’. Ngư i l p trình ph i x lý các ngo i l khác nhau có th phát sinh trong chương trình. thì th c hi n //x lý ngo i l n u không chuy n xu ng kh i 'catch' ti p theo } finally{ // kh i l nh nay luôn ư c th c hi n cho dù ngo i l có x y ra hay không. ngo i l s b ch n và chương trình chuy n n m t kh i x lý ngo i l .4. thì th c hi n //x lý ngo i l n u không chuy n xu ng kh i 'catch' ti p theo } catch(Exception e2){ // N u các l nh trong kh i ‘try’ t o ra ngo i l có lo i e2. Trong mô hình này. mô hình x lý ngo i l giám sát vi c th c thi mã phát hi n ngo i l .Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 9. Các ngo i l ph i ư c x lý. thì th c hi n //x lý ngo i l n u không chuy n xu ng kh i 'catch' ti p theo } catch(Exception eN){ // N u các l nh trong kh i ‘try’ t o ra ngo i l có lo i eN. ho c thoát kh i chương trình khi nó x y ra.

Hình sau ch ra k t xu t c a phương th c ‘printStackTrace()’. } catch (Exeption e) { // th hi n c a ngo i l System.2. Các kh i ‘try’ và ‘catch’ Kh i ‘try-catch’ ư c s d ng thi hành mô hình ‘catch và throw’ c a vi c x lý ngo i l . ta ph i ch ra ki u ngo i l tương ng. M t hay nhi u kh i ‘catch’ có th theo sau m t kh i ‘try’. Chúng ta có th s d ng i tư ng này in các chi ti t v ngo i l . Các ngo i l có th b ch n khi thi hành t p l nh này.printStackTrace(). Kh i ‘try’ ch a m t t p l nh có th thi hành ư c. Không c n ph i th c hi n t i m i m c.println(“Error :” + e. Thông báo l i có th ư c hi n ra khi ti n hành x lý ngo i l . ‘e’ là i tư ng c a l p ‘Exception’.toString()).err. } ây. Phương th c có kh năng t o ra ngo i l có th ư c khai báo trong kh i ‘try’. Khoa Công ngh Thông tin – ih c àL t Trang 217 .1 Kh i Try và Catch x lý ư c ngo i l nào. 9. // phương th c do ngư i s d ng displayResults().4.4.1. nh nghĩa Hình 9. Các ưu i m c a mô hình ‘catch và throw’ Mô hình ‘catch và throw’ có hai ưu i m: Ngư i l p trình ch ph i x lý ngo i l khi c n thi t.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 9. e. Các phương th c ‘toString’ và ‘printStackTrace’ ư c s d ng mô t các ngo i l x y ra. Các kh i ‘catch’ này b t các ngo i l có kh năng t o ra trong trong kh i ‘try’. Hãy xem kh i ‘try’ dư i ây: try{ doFileProcessing().

b t Kh i ‘catch()’ b t gi b t c các l i x y ra trong khi thi hành phương th c ‘doFileProcessing’ hay ‘display’. M t chương trình cũng có th ch a các kh i ‘try’ l ng nhau. chúng ta có th s d ng l p ‘Exception’ ngo i l ó. Các kh i ch a nhi u Catch Nhi u kh i ‘catch’ x lý các lo i ngo i l khác nhau m t cách ư c li t kê trong o n mã sau: c l p. Chúng try{ doFileProcessing(). 9. L i s ư c truy n qua kh i ‘try catch’ cho t i khi g p ‘catch’ c a nó. try { statement 1. displayResults(). lúc ó phương th c ‘displayResults()’ s không bao gi ư c g i. N u m t l i x y ra trong khi thi hành phương th c ‘doFileProcessing()’.println(“Error:” + e. } Trong trư ng h p này. n u không tìm th y chương trình ph i d ng th c hi n và thoát.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 catch(Exception e) Khi ngo i l không bi t thu c ki u nào.5. Chương trình s chuy n n th c hi n kh i ‘catch’. như là ‘LookupException’ thay vì m t i tư ng ngo i l chung (Exception e). Ví d o n mã dư i ây: handleLookupException(e). có nhi u l p x lý l i hơn. Kh i ‘catch’ th hai s x lý ki u ngo i l khác v i kh i ‘catch’ th nh t. kh i ‘catch’ u tiên s b t gi m t ‘LockupException’. Khoa Công ngh Thông tin – ih c àL t Trang 218 . 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ó.printStackTrace()). } catch(LookupException e){ // e – LookupException object // phương th c x lý l i do ngư i s d ng // nh nghĩa } catch(Exception e){ System.err.

B t kỳ ngo i l nào b ch n trong kh i ‘try’ s b b t gi trong các kh i ‘catch’ theo sau. Chương trình 9. kh i ‘try’ bên trong ư c thi hành u tiên. } Khoa Công ngh Thông tin – ih c àL t Trang 219 .Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 statement 2. } catch(Exception e){ // c a kh i try trong } } catch(Exception e){ // c a kh i try ngoài } … Khi s d ng các ‘try’ l ng nhau. try{ statement1.println(20/demo). Chương trình 9.1 class TryClass{ public static void main(String args[]){ int demo=0.out. try{ System. statement2. Java Runtime Environment x lý các ngo i l . N u kh i ‘catch’ thích h p không ư c tìm th y thì các kh i ‘catch’ c a các kh i ‘try’ bên ngoài s ư c xem xét. N u không. } catch(ArithmeticException a){ System.1 minh h a cách s d ng các kh i ‘try’ và ‘catch’.out.println(“Cannot Divide by zero”).

ây. Kh i ‘finally’ th c hi n t t c các vi c thu d n khi m t ngo i l x y ra. ta vi t l nh trong kh i ‘catch’ tương ng. N u i u này x y ra. B i vì ngo i l ã x y ra khi th c thi chương trình mà không ư c x lý.println’ c a kh i ‘catch’ b ng l nh ‘System. ‘a’ ư c s d ng như m t i tư ng c a ArithmeticException in các chi ti t v ngo i l .out. như các l nh óng t p vi t cu i phương th c) s không bao gi ư c g i. chương trình s biên d ch mà không g p l i nào nào nhưng s b ng t khi th c thi. 9.getMessage())’ K t xu t c a chương trình như sau: Hình 9.6. Do ó m t ngo i l x y ra và ư c b t gi trong kh i catch.2 ArithmeticException Trong chương trình này. ây không là phép toán s h c h p l .println(a. Kh i này có th ư c s d ng k t h p v i kh i ‘try’. Các l nh này bao g m: Khoa Công ngh Thông tin – ih c àL t Trang 220 . Khi nh n bi t ư c lo i ngo i l nào có th x y ra. Java cung c p kh i ‘finally’ gi i quy t vi c này. N u b n thay th l nh ‘System. m t s ư c chia cho 0.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 } } K t xu t c a chương trình: Hình 9. Kh i ‘finally’ Khi m t ngo i l xu t hi n. Kh i ‘finally’ ch a các câu l nh thu h i tài nguyên v cho h th ng hay l nh in ra các câu thông báo. phương th c ang ư c th c thi có th b d ng mà không ư c hoàn thành.out. thì các o n mã phía sau (ví d như o n mã có ch c năng thu h i tài nguyên.3 Câu thông báo l i Khi các kh i ‘try’ ư c s d ng mà không có các kh i ‘catch’ nào.

không b t bu c. Hình 9.4 minh h a s th c hi n c a các kh i ‘try’. ây. Kh i ‘finally’ b o m lúc nào cũng ư c th c thi. } Phương th c ‘cleanup()’ ư c g i n u phương th c ‘doSomethingThatMightThrowAnException()’ gây ra ngo i l . b t ch p có ngo i l x y ra hay không. Chương trình 9. Kh i ‘finally’ là tuỳ ý. Kh i này ư c t sau kh i ‘catch’ cu i cùng. int no1.4 Kh i l nh ‘try’. ‘catch’ và ‘finally’ Chương trình 9.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 óng t p tin. Kh i này khai báo các ho t ng thu d n. M t khác ‘cleanup()’ cũng ư c g i ngay khi không có ngo i l nào x y ra và th c hi n ti p ph n sau kh i l nh ‘finally’. try block No Exception Exception occurs finally block catch block finally block Hình 9.2 class FinallyDemo{ String name.2 s d ng kh i ‘finally’. Chương trình s th c thi câu l nh u tiên c a kh i ‘finally’ ngay sau khi g p câu l nh ‘return’ hay l nh ‘break’ trong kh i ‘try’.no2. ‘catch’ và ‘finally’. óng ResultSet ( ư c s d ng trong chương trình cơ s d li u). FinallyDemo(String args[]){ Khoa Công ngh Thông tin – ih c àL t Trang 221 . óng l i các k t n i ư c t o trong cơ s d li u. try{ doSomethingThatMightThrowAnException(). } finally{ cleanup(). kh i ‘finally’ ư c thi hành b t ch p ‘ArithmeticException’ có x y ra hay không.

parseInt(args[1]). } } public static void main(String args[]){ new FinallyDemo(args).println(name).println(“Division Result is” + no1/no2). } finally{ name=null. các câu l nh trong kh i ‘finally’ luôn luôn thi hành. System. } } K t xu t c a chương trình: Hình 9.println(“Cannot Divide by zero”). b t ch p ngo i l Khoa Công ngh Thông tin – ih c àL t Trang 222 .out.out.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 try{ name=new String(“Aptech Limited”). no2=Integer.5 Kh i Finally Trong ví d này.out. // clean up code System. } catch(ArithmeticException i){ System.println(“Finally executed”).parseInt(args[0]).out. System. no1=Integer.

o n l nh sau ch ra cách s d ng c a l nh ‘throw’: try { if (flag<0){ throw new MyException(). ta ch c n li t kê danh sách các ngo i l mà phương th c có th t o ra trong ph n nh nghĩa phương th c. o n mã sau minh h a cách s d ng c a t khoá ‘throws’ t o nhi u ngo i l : public class Example{ // Các ngo i l cách nhau b i d u ph y public void exceptionExample() throws ExException. Trong trư ng h p này. Các ngo i l ư c nh nghĩa v i l nh ‘throw’ và ‘throws’ Các ngo i l có th ư c t o ra b ng cách s d ng t khoá ‘throw’. LookupException{ try{ // các l nh } catch(ExException exmp){ } catch(LookupException lkpex){ } } Khoa Công ngh Thông tin – ih c àL t Trang 223 . Gi s r ng phương th c ‘x()’ g i phương th c ‘y()’. Toán h ng c a throw là m t i tư ng thu c l p ư c th a k t ‘Throwable’. Trong k t xu t trên. 9. Ta nên khai báo kh i ‘try catch’ trong phương th c x() mb o r ng ngo i l không ư c truy n cho các phương th c mà g i phương th c này (phương th c g i x()). làm ư c i u này này. kh i ‘finally’ ư c thi hành m c dù không có ngo i l x y ra.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 có x y ra hay không.7. phương th c g i ‘x()’ nên khai báo r ng nó có kh năng t o ra ngo i l như ngo i l c a phương th c ư c g i ‘y()’. T khóa ‘throw’ ch ra m t ngo i l v a x y ra. // user-defined } } M t phương th c có th t o ra nhi u ngo i l . Phương th c ‘y()’ t o ra m t ngo i l nhưng không ư c x lý.

Ưu i m c a vi c th a k l p Exception là lo i ngo i l m i này có th ư c 'catch' c l p v i các lo i Throwable khác.3 minh h a ngo i l ư c nh nghĩa b i ngư i dùng ‘ArraySizeException’: Chương trình 9. } } void checkSize() throws ArraySizeException{ Khoa Công ngh Thông tin – ih c àL t Trang 224 . Hàm x lý ngo i l cho các phương th c này nên khai báo các kh i ‘catch’ có th x lý t t c các ngo i l mà các phương có th gây ra. } catch(ArraySizeException e){ System. m t l p con c a l p Exception ư c t o ra.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 } Trong ví d trên. L p ‘Exception’ th c thi giao di n ‘Throwable’ và cung c p các tính năng làm vi c v i ngo i l . try{ checkSize(). phương th c ‘exceptionExample’ có t khoá ‘throws’.3 class ArraySizeException extends NegativeArraySizeException{ ArraySizeException(){ // constructor super(“You have passed an illegal array size”). array[]. T khoá này ư c theo sau b i danh sách các ngo i l mà phương th c này có th t o ra – Trong trư ng h p này là ‘ExException’ và ‘LookupException’. Nó có ý nghĩa trong trư ng h p các l p ngo i l ư c nh nghĩa b i ngư i dùng. } } class ThrowDemo{ int size. Chương trình 9.out. ThrowDemo(int s){ size=s. làm i u này.println(e).

l p con c a l p này. thông báo v t o ra ngo i l c c a m ng ư c i tư ng c a l p Hình 9. K t xu t c a chương trình ư c ch ra hình 9. Khi m t i tư ng ư c t o t l p ngo i l ư c in ra. for (int i=0. Kích thư ki m tra trong c u trúc ‘if’.println(“The array size is ok. else System. Danh sách các ngo i l B ng sau ây li t kê m t s ngo i l : Khoa Công ngh Thông tin – ih c àL t Trang 225 . } public static void main(String arg[]){ new ThrowDemo(Integer. } } L p ư c nh nghĩa b i ngư i dùng ‘ArraySizeException’ là ‘NegativeArraySizeException’.8.6. Phương th c ‘checkSize()’ ư c g i ‘ArraySizeException’ mà ư c ch ra b i l nh ‘throws’. array = new int[3].”). i++) array[i] = i+1. i<3.out.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 if (size < 0) throw new ArraySizeException(). N u kích thư c là s âm thì ‘ArraySizeException’ ư c t o.parseInt(arg[0])).6 Ngo i l t nh nghĩa 9.

Ngo i l v AWT L p cha c a các l p ngo i l I/O Không th nh v t p tin K t thúc m t t p tin. Vi c chuy n i t chu i sang s th c không thành công. L i tràn m ng.1 Danh sách m t s ngo i l Khoa Công ngh Thông tin – ih c àL t Trang 226 . Khi m t lu ng b ng t. Không th n p l p yêu c u.lang i v s h c.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 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 phân c p ngo i l p cơ s cho nhi u ngo i l java. Phương th c yêu c u không t n t i. B ng 9. i s không h p l . Cơ ch b o m t không cho phép th c hi n. ví d như ‘chia cho 0’. p không th truy c p. Khi truy c p i tư ng null.

4.... 3.... Ki m tra s ti n b 1... n u không ng d ng s b ng t.. môt .................. T khoá ‘throws’ li t kê các ngo i l mà phương gây ra.... Vi c x lý ngo i l cho phép b n k t h p t t c ti n trình x lý l i trong m t nơi. Ngo i l phát sinh vào lúc th c thi chương trình theo trình t mã..Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Tóm t t B t c khi nào m t l i xu t hi n trong khi thi hành chương trình. Các câu l nh trong kh i ‘try’ gây ra ngo i l còn kh i ‘catch’ x lý ngo i l . L p .. i di n cho ngo i l ư c t o ra... Nhi u kh i catch có th ư c s d ng x lý các lo i ngo i l khác nhau....là l p cha c a l p Exception Mô hình x lý l i c a Java ư c g i là mô hình 'catch and throw'? úng/Sai Ưu i m c a mô hình 'catch and throw' là gì? Khi s d ng 'try' l ng nhau. úng/Sai 8. Lúc ó o n mã c a b n s rõ ràng hơn...... 2.. M i ngo i l phát sinh ra ph i ư c x lý..... nghĩa là m t ngo i l ã xu t hi n. 5... Ngo i l .. ư c t o ra khi l p không th truy c p ư c... Java s d ng các kh i ‘try’ và ‘catch’ x lý các ngo i l ..... 'try' ngoài s ư c th c hi n trư c? úng/Sai Kh i 'finally' m b o luôn luôn ư c th c hi n cho dù có ngo i l x y ra hay không? úng/Sai 7..... Kh i ‘finally’ khai báo các câu l nh tr v ngu n tài nguyên cho h th ng và in nh ng thông báo.............. T khoá ‘throw’ t o ra m t ngo i l ... Khoa Công ngh Thông tin – ih c àL t Trang 227 ...... Khi m t ngo i l x y ra... M i phương th c không có kh năng gây ra nhi u hơn m t ngo i l . 6.

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Bài t p 1. chương trình hi n th giá tr l p phương c a s nh p vào như hình dư i ây: 3. Vi t chương trình gây ra ngo i l n u như l p không th truy nh p. n u không có s nào ư c nh p vào t dòng l nh. Khoa Công ngh Thông tin – ih c àL t Trang 228 . Vi t chương trình gây ra ngo i l khi ngư i s d ng không nh p tham s nào vào t dòng l nh. Vi t chương trình gây ra ngo i l . Chương trình ph i hi n th s tham s n u có tham s ư c nh p vào t dòng l nh. u ra c a chương trình như sau: 2. Ngư c l i.

Mô hình b o m t c a Java 2. Java là m t ngôn ng l p trình u tiên g i các chương trình tương tác như văn b n. Nó ch a nhi u file trong m t file lưu tr (. li t kê và trích rút n i dung c a nó. Dùng m t jar v i applet c i thi n áng k hi u năng th c hi n c a trình duy t.2. ho c JDK 1.security 10. chúng ta s tìm hi u chi ti t v b o m t Java applet. Nó giúp ngư i dùng duy trì m c b o m t cao. Các chương trình này. Vì t t c các file ư c biên d ch và trong m t file duy nh t. S d ng ch ký i n t nh n d ng Applets T o b công c khóa b o m t Làm vi c v i ch ng ch s Tìm hi u v gói Java.2. kh i ng công c JAR. Chúng ta cũng th o lu n v mô hình b o m t JDK 1. không gi ng như chương trình CGI. cũng như cho nhà phát tri n. i u này cho phép t i v trình duy t hi u qu . dùng câu l nh sau t i d u nh c l nh: jar [options][manifest] jar-file input-file(s) Tuỳ ch n (options) C t x v f Mô t T o ra m t file jar m i Li t kê n i dung c a file jar Trích d n file có tên t file jar T o u ra chi ti t (verbose output) trên dòng l i chu n Xác nh tên file jar Khoa Công ngh Thông tin – ih c àL t Trang 229 . Gi i thi u Trong ph n này.jar). Nén file gi m 50% th i gian t i file. chúng ta s h c mô hình b o m t JDK 1.1. thay vì ch y trên máy ch Web (Web server). Nó tương t như chương trình PKZIP.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Chương 10 CÀI N i dung chính TB OM T Mô t v công c JAR T o và xem m t file JAR. nó ư c ch y trên h th ng c a ngư i dùng. 10. trình duy t ch c n thi t l p k t n i HTTP v i web server.2 r t h u ích cho ngư i dùng.exe) c a Java t o ra. B o m t Java Applet là s quan tâm chính gi a ngư i dùng và nhà phát tri n applet.2 áp ng nhu c u ngư i dùng và ngư i phát tri n ph m m m. Thi u tính b o m t trong applet có th d n t i vi c s a i ho c c các d li u nh y c m trên máy ngư i s dung applet. nh và các thông tin tĩnh thông qua World Wide Web. Công c JAR M t file JAR là m t file lưu tr ư c nén do công c (jar. Trong chương nay.

tìm file ‘exr7.class’.jar g p file lưu tr ‘pack. không nén Không t o các file ch ng th c cho các m c (entries). Câu 10.3 Ch ký i n t nh danh các applet Khoa Công ngh Thông tin – ih c àL t Trang 230 .jar” height=125 width=350></applet> Thu c tính s ch cho trình duy t n p lưu tr ‘pack. File u vào là danh sách file phân cách b i d u ph y. và thêm thu c tính ARCHIVE=’pack.jar’ jar tf pack. File jar ư c dùng như các lưu tr .jar vào trong m t applet.class” ARRCHIVE=”pack.java L nh jar T o m t lưu tr Xác đ nh lưu tr Các file ư c lưu tr Tên file Hình 10. Netscape Navigator và Internet Explorer h tr file JAR. File này ph i có ph n m r ng là ‘.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 m o M Bao hàm thông tin ch ng th c t các file ch ng th c xác nh. Ch lưu tr .jar’ vào th applet.1 Công c jar M t file ch ng th c ch a thông tin v các file lưu tr . như sau: <applet code=”exr7. File này là m t tuỳ ch n.1 l nh jar Dùng l nh sau t i d u nh c li t kê các file trong file ‘pack.jar’ l nh sau trích rút các file ư c nén trong file pack.jar M c ch n ‘x’ cho phép b n trích rút n i dung c a file.2 Li t kê các file trong file pack. B ng 10.jar’ ư c xác nh t i dòng l nh. Th m chí file không xác nh thì JAR cũng t ng t o ra. m trang HTML.jar Tuỳ ch n này đư c s d ng cho b ng n i dung lưu tr Tuỳ ch n xác nh tên file lưu tr Hình 10.jar: jar xvf pack.jar *.class *. Câu l nh sau lưu tr t t c các file class và file java bao g m trong m t thư m c hi n hành vào m t file jar g i là ‘pack’ jar cf pack.

Trong khi ký trên m t i tư ng. ư c dùng gi i mã. v i các applet cung c p t m t nhà cung c p applet tin c y. Vì th . Java 2 có th th c hi n t t c các thao tác trên. Cùng ý tư ng ư c s d ng cho ch ký di n t c ng thêm các tính năng b sung.3. Tài li u mô t ch ký ư c g i là “Ch ng th c”. Digest sau ó ư c mã hoá dùng khóa riêng. nh n d ng applet ư c ch ng nh n. applet ph i trình tài li u ch ng th c s nh n d ng c a nó. b o m t applet trên web là ph n r t quan tr ng.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Trong java. Thi t l p s tin c y. Hacker có th vi t các applet nguy hi m xuyên th ng hàng rào b o m t. t o ra ch ký i n t c a i tư ng. khoá công khai (public keys) ư c dùng mã hoá và gi i mã. Ngư i gi khoá bí m t ki m tra n i dung c a i tư ng. Mã hoá d a trên các khoá Trong hình trên. L y thông tin t file c a h th ng Xoá file c a h th ng. K t qu c a s gi i mã. applet h n ch s can thi p c a các ngôn ng . phía ký dùng thu t toán Message Digest (như MD5) tính giá trin digest c a i tư ng. các công ty ưa ra các d ch v xác nh n ch ng th c sau: VeriSign Khoa Công ngh Thông tin – ih c àL t Trang 231 . Khóa bí m t tính giá tr t file applet. Giá tr digest c a i tư ng ư c tính và so sánh v i giá tr digest ư c gi i mã. giá tr digest ư c ưa ra. Nhà ch ng th c ư c dùng th c hi n ch ng nhân. M t ch ký i n t là m t file mã hoá i cùng v i chương trình giúp nh n d ng chính xác ngu n g c c a file. ch ký ư c ư c xác nh n. và ư c ký ch ký i n t . N u giá tr digest c a i tư ng và giá tr digest ư c mã hoá kh p v i nhau. Ngày nay. Hình sau minh h a quá trình mã hoá khoá: Hình 10. Trong ch ký i n t . Nh n ư c ư c ch ng th c t m t CA (Certificate Authority). Giá tr digest ư c dùng như là 'd u vân tay' c a i tư ng. m t khóa riêng (private key) ư c s d ng mã hóa. và khoá công khai. Applet không h tr m t s thao tác sau: c và ghi file t h th ng nơi applet ang ch y. Ch ng nh n các th c th khác s d ng khóa công khai gi m o. Khoá công khai ư c s d ng gi i mã và ki m tra chúng.

N u không tìm th y. 10. t o và qu n lý khóa công khai. và làm cho nó tr nên s n sàng v i công c jarsigner. Dùng các ch ng th c xác th c ch ng th c khác. M t applet có th ưa ra s u thác hoàn toàn. ây là m t v trí chung cho các file h th ng quan tr ng trên windows 95. trư c khi dùng các applet ư c ký. Bây gi . tên là.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Thawte Certification Có th thi t l p các m c b o m t khác nhau. Khoá b o m t Java Chúng ta c n t o 3 công c . Sun có m t keystore m c nh dùng 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 này hay chưa hãy th c hi n câu l nh sau t i d u nh c l nh: keytool –list Thông báo l i sau xu t hi n n u không có gì trong keystore. Keystore Keystore là m t cơ s d li u khoá. chúng ta s s d ng các công c t o keystore. ‘jarsigner’.4. 98 và NT systems. và các ch ng th c b o m t. Keytool Keytool là công c khoá b o m t c a java. tr khi nhà phát tri n ký trên applet.keystore JDK tìm keystore chính trong thư m c C:\windows\. T t c thông tin mà keytool qu n lý ư c lưu tr trong cơ s d li u g i là keystore. Khoa Công ngh Thông tin – ih c àL t Trang 232 . Chúng ta c n t o c p khóa công public/private. như sau: keytool –list keystore c:\java\try Câu l nh này ch cho JDK tìm keystore trong file ư c g i là ‘try’ trong thư m c ‘C:\java\try’. các applet b gi i h n m t các t i a. i u này xác nh nhà phát tri n là tin c y. ho c không u thác. Tuỳ ch n keystore cũng có th ư c s d ng trong l nh keytool. Nó cũng có th th c hi n: nh n d ng o o o o Qu n lý c p khoá công public/private. v i s giúp c a t p các l p g i là permissions. s hi n th thông báo l i như trên. Nhưng nhìn chung. Xác th c d li u ngu n. và ‘keytool’. keytool error: keystore file does not exist: c:\windows\. khoá riêng. ‘jar’. ch a các ch ng th c s dùng các giá tr khoá công khai (public). Lưu tr các khoá công khai.

và nh n phím enter.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 L a ch n ‘-genkey’ có th ư c s d ng cùng v i câu l nh keytool t o c p khoá công public/private. B n cũng có th dùng m t s các tuỳ ch n khác. và không lưu trong keystore m t nh c a h th ng. s ư c vi t l i như sau: keytool –genkey –alias “I” –keystore “store” Trong l nh trên. Các bí danh keytool không phân bi t ch hoa. như sau: Enter keystore password: Nh p vào ‘password’ là m t kh u như yêu c u. Ti p theo. What is the name of your organization? (Tên c a t ch c) [Unknown]: ABC Consultants (tư v n ABC) What is the name of your city or Locality? (tên thành ph ho c c a b n) [Unknown]: California What is the name of your State or Province? (tên 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 vào các thông tin. Sau khi nh p l nh trên vào. chúng ta không s d ng tuỳ ch n keystore. keytool hi n th thông tin sau: a phương Khoa Công ngh Thông tin – ih c àL t Trang 233 . D ng ơn gi n nh t như sau: keytool –genkey –alias “I” Bí danh có th ư c dùng lưu tr . keytool nh c nh p vào các thông tin b sung như: What is your first and last name? (Tên và h ) [unknown] what is the name of your organization unit? [unknown]: software Development. c p khoá s ư c lưu tr trong keystore tên là ‘store’. keytool nh c nh p vào m t kh u cho keystore. thư ng. N u cùng câu l nh s d ng tuỳ ch n keystore. Trong l nh trên. thay th ho c xoá c p khoá.

Tuỳ ch n ‘-keypasswd’ dùng thay i m t kh u. chúng ta t o c p khoá riêng/công c ng cho file JAR. m t kh u keystore ư c s ư c dùng. chúng ta hãy ký danh nó. xoá c p khoá t cơ s li u. L nh jarsigner dùng ký danh m t file JAR. OU=Software Development. có th dùng tuỳ ch n ‘-list’ c a keytool xem khoá có trong keystore hay không. Khi t o m t khoá và b sung nó vào trong keystore. Nh p l nh sau vào d u nh c DOS: jarsigner –keystore keyStore –storepass storePassword –keypass keyPassword B ng sau cung c p danh sách c a JARFileNames và bí danh: Tuỳ ch n keyStore storePassword keyPassword JARFileName Alias Mô t Tên keystore s d ng M t kh u keystore M t kh u khoá riêng Tên c a file JAR ư c ký danh Bí danh c a b ký danh B ng 10.2 JARFileNames và bí danh ký danh file JAR ‘pack. N u tuỳ ch n ‘-keystore’ không ch rõ. dùng tuỳ ch n ‘-verify’ : Khoa Công ngh Thông tin – ih c àL t Trang 234 . keystool nh c b n nh p vào m t kh u cho khoá riêng c a b n. Bây gi . ST=United States of America.jar pk ‘pk’ nghĩa là tên bí danh. C=US>correct? [no]: Cu i cùng. O=ABC Consultants. N u m t kh u không ch rõ. cũng có th ư c ưa vào tr c ti p t m c ch n ‘-dname’. L=California.jar’. M t kh u có th tr c ti p ch rõ b ng cách s d ng tuỳ ch n ‘-keypass’. Tuỳ ch n ‘-keyalg’ ch rõ thu t toán t o c p khoá. như: Enter key password for <I> (RETURN if same as keystore password): Thông tin trên ư c s d ng k t h p s phân bi t tên v i bí danh. Nó ư c dùng truy c p khoá riêng c a c p khoá. dùng l nh sau: keytool –delete –alias aliasName ‘aliasName’ ch tên c a khoá ư c xoá. ch rõ ch ký c a file JAR ư c nh danh. M t kh u sau cùng phân bi t v i m t kh u keystore. thì keystore m c nh ư c dùng.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Is <CN=Bob Fernandes. dùng l nh sau: lưu tr và các jarsigner –keystore store –storepass password –keypass password pack. và m t kh u khoá riêng là ‘password’. v i keystore ‘store’.

Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 jarsigner –verify pack. CA (Certificate authority) c p ch ng nh n giá tr các khoá công khai. Chúng ta dùng ch ng nh n ó t o c p khoá private/public. N u ch ký không h p l . Tuy nhiên. ó ư c g i là ‘self-signed certificates’ (Ch ng nh n t ký).5. Có các m c trong file ch ký là các digest cho m i m c tương ng trong file kê khai (manifest file) 10.txt C p khoá ư c t o là ‘mykey’.DSA’ ch a ch ký h p l cho file ch ký . Ch ng nh n X.zip. Khoa Công ngh Thông tin – ih c àL t Trang 235 .jar ‘pack. Tuỳ ch n ‘-file’ ch tên file Dùng tuỳ ch n ‘-export’ xu t các ch ng nh n này như sau: lưu cerrtificate-signing. Chúng ta cũng s h c cách nh p ch ký i n t t file khác vào. Ch ký i n t là m t file. Ch ng ch s Cho n bây gi . thì ngo i l sau ư c t o ra. Keytool h tr nh ng ch ng nh n này. ho c m t thông báo ư c ký b i quy n ch ng th c.509 c a t ch c tiêu chu n qu c t (ISO) là m t d ng ch ng nh n s ph bi n. Các ch ng nh n này không ph i là ch ng nh n áng tin c y cho nh danh. chúng ta ã h c cách t o và ký m t file JAR. Cùng th c th ã t o khoá công khai ký ch ng nh n này. Keytool t ng g n khoá công khái m i v i m t ch ng nh n m i.jar’ ch tên file JAR. Jarsigner:java. Câu l nh sau giúp t o các ch ng nh n trên: keytool –keystore store –alias mykey –certreq –file mykey. chúng ta s h c cách xu t các ch ký i n t .util.ZipException:invalid entry size (expected 900 but got 876 bytes) Ngư c l i. Quá trình xác th c ki m tra theo các bư c sau: Có file ‘. m t i tư ng.SF không. Keytool nh p vào các ch ng nh n ã ư c t o và ư c ký. xu t hi n thông báo “jar verified”: jar ư c xác minh. Bây gi . Keytool bư c u tiên c n nh n ư c m t ch ng nh n. nh p câu l nh sau: nh p các ch ng nh n khác vào keystore. Keytool và tuỳ ch n ư c s d ng t o các ch ng nh n trên. chúng c n t o các yêu c u ký danh ch ng nh n. nó ư c s d ng xác th c ch ký c a các file JAR. keytool –export –keystore store –alias pk –file mykey Câu l nh trên hi n th d u nh c sau: Enter keystore password Ch ng nh n ã lưu tr trong <mykey>.

Nó cũng hi n th s serial và th i gian có giá tr . Nó hi n th tên công ty. nó h i là tin c y ch ng nh n này không. Dùng l nh ‘-list’ li t kê n i dung c a keystore như sau: keystool –list –keystore Store Câu l nh trên yêu y u password keystore. Dùng tuỳ ch n ‘-alias’ li t kê m t m c. Dùng l nh -delete xoá bí danh trong keystore.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 keytool -import –keytool keystore –alias alias –file filename Tên ư c ch như là tên file ch a ch ng nh n ư c nh p vào.security. bang và ti n t . Ch a các l p và giao di n h tr mã hoá. theo cách sau: keytool –printcert –file myfile Dùng l nh ‘-help’ nh n v danh sách t t c các tuỳ ch n mà keytool h tr : keytool -help 10.security ây là gói API b o m t chính. như sau: keytool –delete –keystore Store –alias alias Dùng l nh ‘-printcert’ in ch ng nh n ư c lưu tr trong file. Cu i cùng. ngh nghi p. a i m.security. Ch ng nh n ư c ch p thu n d a vào s tin tư ng cá nhân b n. digest và ch ký i n t . java. Các gói b o m t Java Các gói b o m t Java bao g m: java.cert Cung c p s h tr cho ch ng nh n X. Câu l nh sau ch tên bí danh là ‘alice’ nh p ch ng nh n trong file ‘mykey’ vào keystore ‘MyStore’: keytool –import –keystore MyStore –alias alice –file mykey Câu l nh trên hi n th d u nh c sau: Enter keystore password: (Nh p vào m t kh u keystore) K t qu xu t ra hi n th hai tuỳ ch n –Owner và Issuer.6.509 t các chính sách i u khi n truy c p Khoa Công ngh Thông tin – ih c àL t Trang 236 . t ch c.acl Ch a các giao di n dùng cài java.

security.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 java.security.interfaces nh nghĩa các giao di n truy nh p Digital Signature Algorithm java. Khoa Công ngh Thông tin – ih c àL t Trang 237 .spec Cung c p các l p c l p và ph thu c vào thu t toán mã hoá s d ng khoá.

6. các d li u nh y c m có th ư c s a i ho c phơi bày. th m chí nó không ư c ch ra úng/Sai Thu c tính______. 7. 3. trích rút tên file t m t lưu tr (. Tuỳ ch n _____. ho c m t i tư ng. ch cho trình duy t n p file jar. Keystore là m t cơ s d li u khoá. và tìm file class c a applet. M c ích chính c a JAR là k t n i các file mà applet s d ng trong m t file nén duy nh t.khi dùng trong th applet. File ________là file lưu tr ư c nén. Keytool là công c khoá b o m t c a java. T t c các thông tin keytool qu n lý. 8. ch ng nh n i n t là m t file. 4. 5. i u này cho phép các applet n p vào trình duy t m t cách hi u qu . M t file kê khai (manifest file) ch a thông tin v các file lưu tr .jar) JAR t ng t o file kê khai. Khoa Công ngh Thông tin – ih c àL t Trang 238 . 2. ho c m t thông báo ư c ký b i quy n ch ng nh n (certificate authority) Ki m tra ki n th c 1. khi dùng v i công c jar. Trong ch ký i n t . _______ ư c dùng cho mã hoá và _________ ư c dùng cho gi i mã. Ch ký i n t là m t mã hoá kèm v i chương trình nh n di n chính xác ngu n g c c a file.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Tóm t t N u kh năng b o m t trong applet không m b o. ư c lưu tr trong m t cơ s d li u g i là _______ keytool bư c u tiên c n thi t nh n ư c m t ch ng nh n úng/Sai Gói _______ch a giao di n dùng cài t các chính sách i u khi n truy nh p.

6. T o m t file jar ‘core-java. 10. Trích rút n i dung file jar. 3. 5.class. Li t kê n i dung c a keystore. 7. Dùng l nh keytool v i tên bí danh và keystore t o ra c p khoá public/private m i. In các ch ng nh n ư c lưu trong file. Xác minh ch ký (signature). Xu t các ch ng nh n (certificate) 9. 8.Bài Gi ng Tóm T t: Công C và Môi Trư ng L p Trình 2 Bài t p S d ng các câu l nh java th c hi n các hành ng sau: 1. Khoa Công ngh Thông tin – ih c àL t Trang 239 . T o file html nhúng applet CardLayoutDemo. 4. 2.class) và các file ngu n. file l p ư c ch a trong file jar. Ký danh file jar m i ư c t o.jar’ ch a các file l p (. Li t kê n i dung c a file jar.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->