Title: B
1- BÀI GI?NG L?P TRÌNH JAVA
- GV HU?NH CÔNG PHÁP
- KHOA CNTT-ÐHBK
2Chuong 1
- Gi?i thi?u ngôn ng? l?p trình Java
3Gi?i thi?u
- S? phát tri?n c?a Java
- Hu?ng t?i ngu?i dùng
- Gi?ng v?i C / C
4Các d?c trung c?a Java
- Ðon gi?n
- Hu?ng d?i tu?ng
- Ð?c l?p ph?n c?ng
- M?nh
- B?o m?t
- Phân tán
- Ða lu?ng
- Ð?ng
5Các chuong trình d?ch truy?n th?ng
6Chuong trình d?ch Java
7Các lo?i chuong trình Java
- Applets
- ?ng d?ng d?c l?p (console Application)
- ?ng d?ng giao di?n (GUI Application)
- Servlet
- ?ng d?ng co s? d? li?u
8Máy ?o Java
- Là m?t ph?n m?m d?a trên co s? máy tính ?o
- Là t?p h?p các l?nh logic d? xác d?nh ho?t d?ng
c?a máy tính - Ðu?c xem nhu là m?t h? di?u hành thu nh?
- Nó thi?t l?p l?p tr?u tu?ng cho
- Ph?n c?ng bên du?i
- H? di?u hành
- Mã dã biên d?ch
9Quá trình d?ch chuong trình Java
- Trình biên d?ch chuy?n mã ngu?n thành t?p các
l?nh không ph? thu?c vào ph?n c?ng c? th? - Trình thông d?ch trên m?i máy chuy?n t?p l?nh này
thành chuong trình th?c thi - Máy ?o t?o ra m?t môi tru?ng d? th?c thi các l?nh
b?ng cách - N?p các file .class
- Qu?n lý b? nh?
- D?n rác
10Trình d?ch JavaJava Development Kit
- Java 1.0 - S? d?ng l?n d?u vào nam 1995
- Java 1.1 Ðua ra nam 1997
- Java 2 Phiên b?n m?i nh?t
11B? công c? JDK
- Trình biên d?ch, 'javac'
- javac options sourcecodename.java
- Trình thông d?ch, 'java'
- java options classname
- Trình d?ch ngu?c, 'javap'
- javap options classname
- Công c? sinh tài li?u, 'javadoc'
- javadoc options sourcecodename.java
12- Chuong trình tìm l?i - Debug, 'jdb
- jdb options sourcecodename.java
- OR
- jdb -host -password options sourcecodename.java
- Chuong trình xem Applet , 'appletviewer
- appletviewer options sourcecodename.java / url
13Các gói chu?n c?a Java
- java.lang
- java.applet
- java.awt
- java.io
- java.util
- java.net
- java.awt.event
- java.rmi
- java.security
- java.sql
14Các d?c trung m?I c?a Java2
- Swing
- Kéo và th?
- Java 2D API
- Âm thanh
- RMI
15Chuong 2
- Các ph?n t? co b?n ngôn ng? Java
16C?u trúc m?t chuong trình Java
- Xác l?p thông tin môi tru?ng
- Khai báo l?p d?i tu?ng (Class)
- Các thành ph?n (Tokens)
- Ð?nh danh
- T? khóa / t? d? phòng
- Ký t? phân cách
- Nguyên d?ng (Literals)
- Toán t?
17Ví d? m?t chuong trình Java m?u
// This is a simple program called
Ex1.java class Ex1 public static void
main(String args)
System.out.println(My first program in Java)
18Biên d?ch chuong trình java
- ..\jdk\bingtjavac Ex1.java
- ..\jdk\bingtjava Ex1
- K?t qu?
- My first program in Java
19Truy?n d?i s? trong dòng l?nh
class Pass public static void main(String
parameters) System.out.println("This
is what the main method received")
System.out.println(parameters0) System.out.p
rintln(parameters1) System.out.println(paramet
ers2)
20Truy?n d?i s? trong dòng l?nh (Ti?p theo)
21Các ph?n t? co b?n c?angôn ng? Java
- L?p và phuong th?c (Classes Methods)
- Ki?u d? li?u
- Bi?n s?
- Toán t?
- C?u trúc di?u khi?n
22L?p trong Java
- Cú pháp khai báo l?p (Class)
class Classname var_datatype
variablename met_datatype
methodname(parameter_list)
23L?p m?u
24Các l?p l?ng nhau (Nested Classes)
- Vi?c d?nh nghia m?t l?p bên trong m?t l?p khác
du?c g?i là x?p l?ng (Nesting) - Các ki?u x?p l?ng
- Tinh (Static)
- Ð?ng (Non-static)
25Ki?u d? li?u
- Ki?u d? li?u co s? (Primitive Data Types)
- Ki?u d? li?u tham chi?u (Reference data types)
26Ki?u d? li?u co s?
- byte
- char
- boolean
- short
- int
- long
- float
- double
27Ki?u d? li?u tham chi?u
- M?ng (Array)
- L?p (Class)
- Interface
28Ép ki?u (Type Casting)
- Ki?u d? li?u này du?c chuy?n d?i sang m?t ki?u d?
li?u khác - Ví d?
- float c 34.89675f
- int b (int)c 10
29Bi?n s?
- Khai báo bi?n s? g?m 3 thành ph?n
- Ki?u d? li?u c?a bi?n s?
- Tên bi?n
- Giá tr? ban d?u c?a bi?n (không b?t bu?c)
- Cú pháp
- datatype identifier value, identifiervalue.
..
30Nh?ng t? khóa c?a Java
31Khai báo m?ng
- Ba cách d? khai báo m?ng
- datatype identifier
- datatype identifier new datatypesize
- datatype identifier value1,value2,.valueN
32Phuong th?c (Methods in Classes)
- Phuong th?c du?c d?nh nghia nhu là m?t hành d?ng
ho?c m?t tác v? th?t s? c?a d?i tu?ng - Cú pháp
- access_specifier modifier datatype
method_name(parameter_list) -
- //body of method
-
33Ví d? v? s? d?ng phuong th?c
class Temp static int x 10
// variable public static void show(
) // method System.out.println(x)
public static void main(String args )
Temp t new Temp( ) //
object 1 t.show( )
// method call Temp t1 new
Temp( ) // object 2 t1.x 20
t1.show( )
34Access specifiers
35Method Modifiers
- static
- abstract
- final
- native
- synchronized
- volatile
36Nh?ng phuong th?c du?c n?p ch?ng (Methods
Overloading)
- Nh?ng phuong th?c du?c n?p ch?ng
- Cùng ? trong m?t l?p
- Có cùng tên
- Khác nhau v? danh sách tham s?
- Nh?ng phuong th?c du?c n?p ch?ng là m?t hình th?c
da hình (polymorphism) trong quá trình biên d?ch
(compile time)
37Ghi dè phuong th?c (Methods Overriding)
- Nh?ng phuong th?c du?c ghi dè
- Có m?t trong l?p cha (superclass) cung nhu l?p k?
th?a (subclass) - Ðu?c d?nh nghia l?i trong l?p k? th?a (subclass)
- Nh?ng phuong th?c du?c ghi dè là m?t hình th?c da
hình (polymorphism) trong quá trình th?c thi
(Runtime)
38Phuong th?c kh?i t?o(Class Constructors)
- Là m?t phuong th?c d?c bi?t dùng d? kh?i t?o giá
tr? cho các bi?n thành viên c?a l?p d?i tu?ng - Có cùng tên v?i tên l?p và không có giá tr? tr?
v? - Ðu?c g?i khi d?i tu?ng du?c t?o ra
- Có 2 lo?i
- Tu?ng minh (Explicit constructors)
- Ng?m d?nh (Implicit constructors)
39Phuong th?c kh?i t?o c?a l?p d?n xu?t (Derived
class constructors)
- Có cùng tên v?i l?p d?n xu?t (subclass)
- M?nh d? g?i constructor c?a l?p cha (superclass)
ph?i là m?nh d? d?u tiên trong constructor c?a
l?p d?n xu?t (subclass)
40Các toán t?
- Các lo?i toán t?
- Toán t? s? h?c (Arithmetic operators)
- Toán t? d?ng Bit (Bitwise operators)
- Toán t? so sánh (Relational operators)
- Toán t? logic (Logical operators)
- Toán t? di?u ki?n (Conditional operator)
- Toán t? gán (Assignment operator)
41Toán t? s? h?cArithmetic Operators
- Addition (Phép c?ng)
- - Subtraction (Phép tr?)
- Multiplication (Phép nhân)
- / Division (Phép chia)
- Modulus (L?y s? du)
- Increment (Tang d?n)
- -- Decrement (Gi?m d?n)
42- Phép c?ng và gán
- - Phép tr? và gán
- Phép nhân và gán
- / Phép chia và gán
- Phép l?y s? du và gán
43Toán t? Bit (Bitwise Operators)
- Ph? d?nh (NOT)
- Và (AND)
- Ho?c (OR)
- Exclusive OR
- gtgt D?ch sang ph?i (Shift right)
- ltlt D?ch sang trái (Shift left)
44Toán t? so sánh(Relational Operators)
- So sánh b?ng
- ! So sánh khác
- lt Nh? hon
- gt L?n hon
- lt Nh? hon ho?c b?ng
- gt L?n hon ho?c b?ng
45Toán t? Logic(Logical Operators )
- Logical AND
- Logical OR
- ! Logical unary NOT
46Toán t? di?u ki?n(Conditional Operator)
- Cú pháp
- Bi?u th?c 1 ? Bi?u th?c 2 Bi?u th?c 3
- Bi?u th?c 1
- Ði?u ki?n ki?u Boolean tr? v? giá tr? True ho?c
False - Bi?u th?c 2
- Tr? v? giá tr? n?u k?t qu? c?a m?nh d? 1 là True
- Bi?u th?c 3
- Tr? v? giá tr? n?u k?t qu? c?a m?nh d? 1 là False
47Toán t? gán(Assignment Operator)
- Assignment (Phép gán)
- Giá tr? có th? du?c gán cho nhi?u bi?n s?
- Ví d?
- a b c d 90
48Th? t? uu tiên c?a các toán t?
Th? t? Toán t?
1. trong ngo?c tính tru?c
2. Các toán t? don nhu ,-,,--
3. Các toán t? s? h?c và các toán t? d?ch nhu ,/,,-,ltlt,gtgt
4. Các toán t? quan h? nhu gt,lt,gt,lt, ,!
5. Các toán t? logic và Bit nhu ,II,,I,
5. Các toán t? gán nhu ,,/,,-
- Th? t? c?a các toán t? có th? du?c thay d?i b?ng
cách s? d?ng các d?u ngo?c don trong m?nh d?
49Các kí t? d?nh d?ng xu?t d? li?u (Escape
Sequences)
Escape Sequence Mô t?
\n Xu?ng dòng m?i
\r Chuy?n con tr? d?n d?u dòng hi?n hành
\t Chuy?n con tr? d?n v? trí d?ng Tab k? ti?p (ký t? Tab)
\\ In d?u \
\ In d?u nháy don ()
\ In d?u nháy kép ()
50Các l?nh di?u khi?n
- Ði?u khi?n r? nhánh
- M?nh d? if-else
- M?nh d? switch-case
- Vòng l?p (Loops)
- Vòng l?p while
- Vòng l?p do-while
- Vòng l?p for
51L?nh if-else
- Cú pháp
- if (condition)
-
- action1 statements
-
- else
-
- action2 statements
52L?nh switch-case
- Cú pháp
- switch (expression)
-
- case 'value1' action1 statement(s)
- break
- case 'value2' action2 statement(s)
- break
-
-
- case 'valueN' actionN statement(s)
- break
- default default_action statement(s)
-
53L?nh l?p while
- Cú pháp
- while(condition)
-
- action statements
-
-
-
54L?nh l?p do-while
- Cú pháp
- do
-
- action statements
-
-
- while(condition)
55Vòng l?p for
- Cú pháp
- for(initialization statements condition
increment statements) -
- action statements
-
-
-
56Chuong 3
- Gói Interface
- (Packages Interfaces)
57Gi?i thi?u
- Nh?ng thành ph?n co b?n c?a 1 chuong trình Java
- Gói (Packages)
- Giao di?n (Interfaces)
- Nh?ng ph?n c?a m?t chuong trình Java
- L?nh khai báo gói(package )
- L?nh ch? d?nh gói du?c dùng (L?nh import)
- Khai báo l?p public (m?t file java ch? ch?a 1 l?p
public class) - Các l?p khác (classes private to the package)
- T?p tin ngu?n Java có th? ch?a t?t c? ho?c m?t
vài trong s? các ph?n trên.
58Interfaces
- Chuong trình Java ch? có th? k? th?a t? 1 l?p duy
nh?t trong cùng m?t th?i di?m, nhung có th? d?n
xu?t cùng lúc nhi?u Interfaces - Không du?c phép có nh?ng phuong th?c c? th?
(concrete methods) - interface c?n ph?i du?c hi?n th?c (implements).
59Các bu?c t?o interface
- Ð?nh nghia Interface
- Biên d?ch Interface
- Hi?n th?c Interface
- Tính ch?t c?a interface
- T?t c? phuong th?c trong interface ph?i là
public. - Các phuong th?c ph?i du?c d?nh nghia trong l?p
d?n xu?t giao di?n dó.
60S? d?ng Interface
- Không th? d?n xu?t t? l?p khác, nhung có th? d?n
xu?t t? nh?ng interface khác - N?u m?t l?p d?n xu?t t? m?t interface mà
interface dó d?n xu?t t? các interface khác thì
l?p dó ph?i d?nh nghia t?t c? các phuong th?c có
trong các interface dó - Khi d?nh nghia m?t interface m?i thì m?t ki?u d?
li?u tham chi?u cung du?c t?o ra.
61Gói (Packages)
- Tuong t? nhuthu m?c luu tr? nh?ng l?p, interface
và các gói con khác. Ðó là nh?ng thành viên c?a
gói
62- Nh?ng uu di?m khi dùng gói (Package)
- Cho phép t? ch?c các l?p vào nh?ng don v? nh? hon
- Giúp tránh du?c tình tr?ng trùng l?p khi d?t tên.
- Cho phép b?o v? các l?p d?i tu?ng
- Tên gói (Package) có th? du?c dùng d? nh?n d?ng
ch?c nang c?a các l?p.
63- Nh?ng luu ý khi t?o gói
- Mã ngu?n ph?i b?t d?u b?ng l?nh package
- Mã ngu?n ph?i n?m trong cùng thu m?c mang tên c?a
gói - Tên gói nên b?t d?u b?ng ký t? thu?ng (lower
case) d? phân bi?t gi?a l?p d?i tu?ng và gói - Nh?ng l?nh khác ph?i vi?t phía du?i dòng khai báo
gói là m?nh d? import, k? d?n là các m?nh d? d?nh
nghia l?p d?i tu?ng - Nh?ng l?p d?i tu?ng trong gói c?n ph?i du?c biên
d?ch - Ð? chuong trình Java có th? s? d?ng nh?ng gói
này, ta ph?i import gói vào trong mã ngu?n
64- Import gói (Importing packages)
- Xác d?nh t?p tin c?n du?c import trong gói
- Ho?c có th? import toàn b? gói
65Các bu?c t?o ra gói (Package)
- Khai báo gói
- Import nh?ng gói chu?n c?n thi?t
- Khai báo và d?nh nghia các l?p d?i tu?ng có trong
gói - Luu các d?nh nghia trên thành t?p tin .java, và
biên d?ch nh?ng l?p d?i tu?ng dã du?c d?nh nghia
trong gói.
66S? d?ng nh?ng gói do ngu?i dùng d?nh nghia
(user-defined packages)
- Mã ngu?n c?a nh?ng chuong trình này ph?i ? cùng
thu m?c c?a gói do ngu?i dùng d?nh nghia. - Ð? nh?ng chuong trình Java khác s? d?ng nh?ng gói
này, import gói vào trong mã ngu?n - Import nh?ng l?p d?i tu?ng c?n dùng
- Import toàn b? gói
- T?o tham chi?u d?n nh?ng thành viên c?a gói
67Xác l?p CLASSPATH
- Là danh sách các thu m?c, giúp cho vi?c tìm ki?m
các t?p tin l?p d?i tu?ng tuong ?ng - Nên xác l?p CLASSPATH trong lúc th?c thi
(runtime), vì nhu v?y nó s? xác l?p du?ng d?n cho
quá trình th?c thi hi?n hành
68Gói và di?u khi?n truy xu?t (Packages Access
Control)
69Gói java.lang
- M?c d?nh thì b?t c? chuong trình Java nào cung
import gói java.lang - Nh?ng l?p Wrapper (bao b?c) cho các ki?u d? li?u
nguyên th?y
70L?p String
- Phuong th?c kh?i t?o (Constructor)
- String str1 new String()
- String str2 new String(Hello World)
- char ch A,B,C,D,E
- String str3 new String(ch)
- String str4 new String(ch,0,2)
71String Pool
- String Pool d?i di?n cho t?t c? các ký t? du?c
t?o ra trong chuong trình - Khái ni?m String Pool
72Nh?ng phuong th?c c?a l?p String
- charAt( )
- startsWith()
- endsWith( )
- copyValueOf( )
- toCharArray( )
- indexOf( )
- toUpperCase( )
- toLowerCase( )
- trim( )
- equals( )
73L?p StringBuffer
- Cung c?p nh?ng phuong th?c khác nhau d? thao tác
trên d?i tu?ng string (chu?i ký t?) - Nh?ng d?i tu?ng c?a l?p này khá linh ho?t
- Cung c?p nh?ng phuong th?c kh?i t?o (constructor)
dã du?c n?p ch?ng (overloaded) - Nh?ng phuong th?c c?a l?p StringBuffer
- append( )
- insert( )
- charAt( )
- setCharAt( )
- setLength( )
- getChars( )
- reverse( )
74L?p java.lang.Math
- abs()
- ceil()
- floor()
- max()
- min()
- round()
- random()
- sqrt()
- sin()
- cos()
- tan()
75L?p Runtime
- Ðóng gói (Encapsulates) môi tru?ng th?c thi
- Dùng d? qu?n lý b? nh?, và thi hành nh?ng ti?n
trình c?ng thêm - Phuong th?c
- exit(int)
- freeMemory( )
- getRuntime( )
- gc( )
- totalMemory( )
- exec(String)
76L?p System
- Cung c?p nh?ng h? t?ng chu?n nhu nh?p (Input),
xu?t (Output) và các lu?ng l?i(Error Streams) - Cung c?p kh? nang truy xu?t d?n nh?ng thu?c tính
c?a h? th?ng th?c thi Java, và nh?ng thu?c tính
môi tru?ng nhu phiên b?n, du?ng d?n, nhà cung
c?p - Phuong th?c
- exit(int)
- gc()
- getProperties()
- setProperties()
- currentTimeMillis()
- arraCopy(Object, int, Object, int, int)
77L?p Class
- Th? hi?n (Instance) c?a l?p này che gi?u tình
tr?ng th?c thi c?a d?i tu?ng trong m?t ?ng d?ng
Java - Ð?i tu?ng ho?c th? hi?n c?a l?p này có th? t?o ra
b?ng 1 trong 3 cách sau - S? d?ng phuong th?c getClass( ) c?a d?i tu?ng
- S? d?ng phuong th?c tinh forName( ) c?a l?p d?
t?o ra m?t th? hi?n c?a l?p dó trong lúc d?t tên
cho l?p - S? d?ng d?i tu?ng ClassLoader d? n?p m?t l?p m?i
78L?p Object
- Là l?p cha (superclass) c?a t?t c? các l?p
- Phuong th?c
- equals(Object)
- finalize()
- notify()
- notifyAll()
- toString()
- wait()
79Gói java.util
- Cung c?p ph?n l?n nh?ng l?p Java h?u d?ng và
thu?ng xuyên c?n d?n trong h?u h?t các ?ng d?ng - Gi?i thi?u nh?ng l?p tr?u tu?ng sau
- Hashtable
- Random
- Vector
- StringTokenizer
80L?p Hashtable
- M? r?ng l?p tr?u tu?ng Dictionary
- Dùng d? n?i k?t nh?ng khóa vào nh?ng giá tr? c?
th? - Phuong th?c kh?i t?o Hashtable
- Hashtable(int)
- Hashtable(int, float)
- Hashtable( )
81Nh?ng phuong th?c c?a l?p Hashtable
- clear()
- done()
- contains(Object)
- containsKey(Object)
- elements()
- get(Object key)
- isEmpty()
- keys()
- put(Object, Object)
- rehash()
- remove(Object key)
- size()
- toString()
82L?p Random
- T?o ra nh?ng s? ng?u nhiên theo thu?t toán pseudo
- Nh?ng phuong th?c nh?n giá tr? ng?u nhiên
- nextDouble( )
- nextFloat( )
- nextGaussian( )
- nextInt( )
- nextLong( )
- Phuong th?c kh?i t?o (Constructors)
- random()
- random(long)
83Nh?ng phuong th?c c?a l?p Random
- nextDouble()
- nextFloat()
- nextGaussian()
- nextInt()
- nextLong()
- setSeed(long)
84L?p Vector
- Cung c?p kh? nang co gi?n cho m?ng khi thêm ph?n
t? vào m?ng - Luu tr? nh?ng thành ph?n c?a ki?u Object
- M?t Vector riêng r? có th? luu tr? nh?ng ph?n t?
khác nhau, dó là nh?ng instance c?a nh?ng l?p
khác nhau - Phuong th?c kh?i t?o (Constructors)
- Vector(int)
- Vector(int, int)
- Vector()
85Nh?ng phuong th?c c?a l?p Vector
- addElement(Object)
- capacity( )
- clone( )
- contains(Object)
- copyInto(Object )
- elementAt(int)
- elements( )
- ensureCapacity(int)
- firstElement( )
- indexOf(Object)
- indexOf(Object, int)
- insertElementAt(Object, int)
- isEmpty( )
- lastElement( )
- lastIndexOf(Object)
- lastIndexOf(Object, int)
- removeAllElements( )
- removeElement(Object)
- removeElementAt(int)
- setElementAt(Object, int)
- setSize(int)
- size( )
- toString( )
- trimToSize( )
86L?p StringTokenizer
- Có th? du?c dùng d? tách m?t chu?i thành nh?ng
thành ph?n c?u thành c?a nó (constituent tokens) - Ký t? phân cách có th? du?c ch? d?nh khi m?t d?i
tu?ng StringTokenizer du?c kh?i t?o - Phuong th?c kh?i t?o (Constructors)
- StringTokenizer(String)
- StringTokenizer(String, String)
- StringTokenizer(String, String, Boolean)
- L?p StringTokenizer s? d?ng giao di?n li?t kê
(enumeration interface)
87Nh?ng phuong th?c c?a l?p StringTokenizer
- countTokens( )
- hasMoreElements( )
- hasMoreTokens( )
- nextElement( )
- nextToken( )
- nextToken(String)
88Chuong 4
89Gi?i thi?u v? bi?t l?
- Là m?t ki?u l?i d?c bi?t
- Nó x?y ra trong th?i gian th?c thi do?n l?nh
- Thông thu?ng các di?u ki?n th?c thi chuong trình
gây ra bi?t l? - N?u các di?u ki?n này không du?c quan tâm, thì
vi?c th?c thi có th? k?t thúc d?t ng?t
90M?c dích c?a vi?c x? lý bi?t l?
- Gi?m thi?u vi?c k?t thúc b?t thu?ng c?a h? th?ng
và c?a chuong trình. - Ví d?, thao tác xu?t/nh?p trong m?t t?p tin, n?u
vi?c chuy?n d?i ki?u d? li?u không th?c hi?n
dúng, m?t bi?t l? s? x?y ra và chuong trình b?
h?y mà không dóng t?p tin. Lúc dó t?p tin s? b?
hu h?i và các ngu?n tài nguyên du?c c?p phát cho
t?p tin không du?c thu h?i l?i cho h? th?ng.
91X? lý bi?t l?
- Khi m?t bi?t l? x?y ra, d?i tu?ng tuong ?ng v?i
bi?t l? dó s? du?c t?o ra. - Ð?i tu?ng này sau dó du?c truy?n t?i phuong th?c
noi mà bi?t l? x?y ra. - Ð?i tu?ng này ch?c các thông tin chi ti?t v? bi?t
l?. Thông tin này có th? nh?n du?c và x? lý. - L?p throwable mà Java cung c?p là l?p trên nh?t
c?a l?p bi?t l?.
92Mô hình x? lý bi?t l?
- Mô hình du?c bi?t d?n là mô hình catch and
throw - Khi m?t l?i x?y ra, bi?t l? s? du?c ch?n và du?c
vào m?t kh?i. - T? khóa d? x? lý bi?t l?
- try
- catch
- throw
- throws
- finally
93C?u trúc c?a mô hình x? lý bi?t l?
- Cú pháp
- try .
- catch(Exception e1) .
- catch(Exception e2) .
- catch(Exception eN) .
- finally .
94Mô hình Catch and Throw nâng cao
- Ngu?i l?p trình ch? quan tâm t?i các l?i khi c?n
thi?t. - M?t thông báo l?i có th? du?c cung c?p trong
exception-handler.
95Kh?i try và catch
- Ðu?c s? d?ng d? th?c hi?n trong mô hình catch
and throw c?a x? lý bi?t l?. - Kh?i l?nh try g?m t?p h?p các l?nh th?c thi
- M?t phuong th?c mà có th? b?t bi?t l?, cung bao
g?m kh?i l?nh try. - M?t ho?c nhi?u kh?i l?nh catch có th? ti?p theo
sau m?t kh?i l?nh try - Kh?i l?nh catch này b?t bi?t l? trong kh?i l?nh
try.
96Kh?i l?nh try và catch Blocks (tt)
- Ð? b?t b?t k? lo?i bi?t l? nào, ta ph?i ch? ra
ki?u bi?t l? là Exception - catch(Exception e)
- Khi bi?t l? b? b?t không bi?t thu?c ki?u nào,
chúng ta có th? s? d?ng l?p Exception d? b?t
bi?t l? dó. - L?i s? du?c truy?n thông qua kh?i l?nh try
catch cho t?i khi chúng b?t g?p m?t catch tham
chi?u t?i nó, ho?c chuong trình s? b? k?t thúc
97Kh?i l?nh ch?a nhi?u Catch
- Các kh?i ch?a nhi?u catch() x? lý các ki?u bi?t
l? khác nhau m?t cách d?c l?p. - Ví d?
- try
- doFileProcessing() displayResults()
- catch(LookupException e)
- handleLookupException(e)
- catch(Exception e)
- System.err.println(Errore.printStackTrace(
))
98Kh?i l?nh ch?a nhi?u Catch (tt)
- Khi s? d?ng các try l?ng nhau, kh?i try bên
trong du?c thi hành d?u tiên - B?t k? bi?t l? nào b? ch?n trong kh?i l?nh try
s? b? b?t gi? trong kh?i l?nh catch ti?p ngay
sau. - N?u kh?i l?nh catch thích h?p không du?c tìm
th?y, thì các kh?i catch c?a kh?i try bên
ngoài s? du?c xem xét - Ngu?c l?i, Java Runtime Environment s? x? lý bi?t
l?.
99Kh?i finally
- Th?c hi?n t?t c? các vi?c thu d?n khi bi?t l? x?y
ra - Có th? s? d?ng k?t h?p v?i kh?i try
- 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 - Ðóng t?p tin
- Ðóng l?i b? k?t qu? (du?c s? d?ng trong chuong
trình co s? d? li?u) - Ðóng l?i các k?t n?i du?c t?o trong co s? d? li?u.
100Kh?i finally (tt)
- Ví d?
- try
-
- doSomethingThatMightThrowAnException( )
-
- finally
-
- cleanup( )
101Kh?i finally (tt)
- Là tùy ch?n không b?t bu?c
- Ðu?c d?t sau kh?i catch
- Kh?i finally b?o d?m lúc nào cung du?c th?c
hi?n b?t ch?p bi?t l? có x?y ra hay không.
102Các bi?t l? du?c d?nh nghia v?i l?nh throw và
throws
- Các bi?t l? thì du?c ch?n v?i s? tr? giúp c?a t?
khóa throw - T? khóa throw ch? ra m?t bi?t l? v?a x?y ra.
- Toán h?ng c?a throw là m?t d?i tu?ng c?a m?t l?p,
mà l?p này du?c d?n xu?t t? l?p Throwable - Ví d? c?a l?nh throw
- try
- if (flag lt 0)
-
- throw new MyException( ) //
user-defined -
103Các bi?t l? du?c d?nh nghia v?i l?nh throw và
throws(tt)
- M?t phuong th?c don có th? ch?n nhi?u hon m?t
bi?t l? - Ví d? t? khóa throw x? lý nhi?u bi?t l?
- public class Example
- public void exceptionExample( ) throws
ExException, LookupException - try
- // statements
- catch(ExException exmp)
- .
- catch(LookupException lkpex)
- .
104Các bi?t l? du?c d?nh nghia v?i l?nh throw và
throws(tt)
- L?p Exception th?c thi giao di?n Throwable và
cung c?p các tính nang h?u d?ng d? phân ph?i cho
các bi?t l?. - M?t l?p con c?a l?p Exception là m?t bi?t l? m?i
có th? b?t gi? d?c l?p các lo?i Throwable khác.
105Danh sách các bi?t l?
- RuntimeException
- ArithmeticException
- IllegalAccessException
- IllegalArgumentException
- ArrayIndexOutOfBoundsException
- NullPointerException
- SecurityException
- ClassNotFoundException
106Danh sách các bi?t l? (tt)
- NumberFormatException
- AWTException
- IOException
- FileNotFoundException
- EOFException
- NoSuchMethodException
- InterruptedException
107Chuong V
- L?P TRÌNH GIAO DI?N V?I AWT
108GI?I THI?U V? AWT
- AWT vi?t t?t c?a Abstract Windowing Toolkit
- AWT là t?p h?p các l?p Java cho phép chúng ta t?o
m?t GUI - Cung c?p các m?c khác nhau d? t?o ho?t d?ng và
hi?u ?ng GUI nhu - Containers
- Components
- Layout managers
- Graphics và drawing capabilities
- Fonts
- Events
109- AWT bao g?m các l?p, interfaces và các gói khác
110Components
- T?t c? các thành ph?n c?u t?o nên chuong trình
GUI du?c g?i là component. - Ví d?
- Containers,
- textfields, labels, checkboxes, textareas
- scrollbars, scrollpanes, dialog
111Containers
- Là thành ph?n mà có th? ch?a các thành ph?n khác.
có th? v? và tô màu. - Có các frames, panes,latches, hooks
- Java.awt ch?a m?t l?p có tên là Container. L?p
này d?n xu?t tr?c ti?p và không tr?c ti?p theo 2
cách là - Frames
- Panels
112Frames
- Là các c?a s?
- Là l?p con c?a Windows
- Ðu?c hi?n th? trong m?t c?a s? và có du?ng vi?n
113Panels
- Là các vùng ch?a trong m?t c?a s?.
- Hi?n th? trong m?t c?a s? mà trình duy?t ho?c
appletviewer cung c?p và không có du?ng vi?n. - Ðu?c s? d?ng d? nhóm m?t s? các thành ph?n
- M?t panel không có s?n vì th? chúng ta c?n ph?i
thêm nó vào frame. - Hàm d?ng
- Panel()
114Dialog
- Là m?t l?p con c?a l?p Window
- Ð?i tu?ng dialog du?c c?u trúc nhu sau
Frame myframe new Frame(My frame) String
title Title boolean modal true Dialog
dlg new Dialog( myframe, title, modal)
115Các Components khác
- Ví d?
- textfields, labels, checkboxes, textareas
- scrollbars, scrollpanes, dialog
116Label
- Ðu?c dùng d? hi?n th? chu?i (String)
- Các hàm d?ng
- Label( )
- Label(String labeltext)
- Label(String labeltext, int alignment)
- Các phuong th?c
- setFont(Font f)
- setText(String s)
- getText( )
117TextField
- Là di?u khi?n text cho phép hi?n th? text ho?c
cho user nh?p d? li?u vào. - Các hàm d?ng
- TextField( )
- TextField(int columns)
- TextField(String s)
- TextField(String s, int columns)
- Các phuong th?c
- setEchoChar(char)
- setTest(String s)
- getText( )
- setEditable(boolean)
- isEditable( )
118TextArea
- Ðu?c dùng khi text có n?i dung t? hai dòng tr?
lên - Là di?u khi?n text có th? so?n th?o du?c v?i
nhi?u dòng - Các bu?c d? t?o TextArea
- T?o m?t ph?n t? (element)
- Ch? ra s? dòng hay s? c?t (tùy ch?n)
- Ch? ra v? trí c?a di?u khi?n trên màn hình
119TextArea (tt)
- Các hàm d?ng
- TextArea( )
- TextArea(int rows, int cols )
- TextArea(String text)
- TextArea(String text, int rows, int cols)
120Các phuong th?c c?a TextArea
- setText(String)
- getText( )
- setEditable(boolean)
- isEditable( )
- insertText(String, int)
- replaceText(String, int, int)
121Button
- Các nút Push hay Command là cách d? nh?t d? l?y
các su ki?n c?a user - Các bu?c d? t?o button
- T?o m?t ph?n t? button, nên t?o cho nó m?t
caption d? ch? ra m?c dích c?a nó - Ch? ra v? trí d?t button trên màn hình
- HI?n th? ra trên màn hình
- Các hàm d?ng
- Button( )
- Button(String text)
122Checkboxes and RadioButtons
- Checkboxes du?c dùng khi cho phép user nhi?u c?n
ch?n l?a - Radiobuttons du?c dùng d? user ch? ra m?t l?a
ch?n duy nh?t - Các bu?c d? t?o checkbox ho?c radiobutton
- T?o m?t ph?n t? (element)
- Kh?i t?o giá tr? ban d?u (có giá tr? selected hay
unselected) - Ch? ra v? trí trên màn hình
- Hi?n th? ra màn hình
- Các hàm d?ng d? t?o checkbox
- Checkbox( )
- Checkbox(String text)
- Ð? t?o radiobutton, ta ph?i t?o d?i tu?ng
CheckBoxGroup tru?c khi t?o button
123Choice Lists
- L? p Choice cho phép ta t?o danh sách có nhi?u
ch?n l?a - Khi list du?c t?o l?n d?u tiên, nó du?c kh?i t?o
là empty - Các bu?c d? t?o danh sách ch?n l?a
- T?o m?t ph?n t?
- Thêm các m?c (có ki?u Strings) vào danh sách dó,
t?ng m?c m?t - Ch? ra v? trí trên màn hình
- Hi?n th? ra màn hình
- Ví d?
- Choice colorsnew Choice( )
- colors.addItem(Red)
- colors.addItem(Green)
124Trình qu?n lý b? trí Layout Manager
- Các lo?i layout khác nhau
- Flow Layout
- Border Layout
- Card Layout
- Grid Layout
- GridBag Layout
- Trình qu?n lý layout du?c thi?t l?p b?ng cách g?i
phuong th?c setLayout( )
125FlowLayout
- Là trình qu?n lý layout m?c d?nh cho các applet
và các panel - V?i FlowLayout các thành ph?n s? du?c x?p x?p t?
góc trái trên d?n góc ph?i du?i c?a màn hình - Các constructor
- FlowLayout mylayout new FlowLayout()
- FlowLayout exLayout new flowLayout(FlowLayout.RI
GHT)
126BorderLayout
- Là trình qu?n lý layout m?c d?nh cho Window,
Frame và Dialog - Trình qu?n lý này có th? x?p x?p d?n 5 thành ph?n
trong container - Các thành ph?n có th? du?c d?t vào 5 hu?ng NORTH,
EAST, SOUTH, WEST và CENTER c?a container - Ví d? Ð? thêm m?t thành ph?n vào vùng North c?a
container - Button b1 new Button(North Button)
- setLayout(new BorderLayout( ))
- add(b1, BorderLayout.NORTH)
127CardLayout
- Có th? luu tr? m?t danh sách các ki?u layout khác
nhau - M?i layout du?c xem nhu m?t th? (card)
- Th? thu?ng là d?i tu?ng Panel
- M?t thành ph?n d?c l?p nhu button s? di?u khi?n
các th? du?c d?t ? phía trên nh?t - Các bu?c d? t?o CardLayout
- B? trí layout c?a panel chính là CardLayout
- L?n lu?t thêm các panel khác vào panel chính
128GridLayout
- H? tr? vi?c chia container thành m?t lu?i
- Các thành ph?n du?c b? trí trong các dòng và c?t
- M?t ô lu?i nên ch?a ít nh?t m?t thành ph?n
- Ki?u layout này du?c s? d?ng khi t?t c? các thành
ph?n có cùng kích thu?c - Hàm constructor
- GridLayout gl new GridLayout(no. of rows, no.
of columns)
129GridBagLayout
- B? trí các thành ph?n m?t cách chính xác
- Các thành ph?n không c?n có cùng kích thu?c
- Các thành ph?n du?c x?p x?p trong m?t lu?i ch?a
các dòng và các c?t - Th? t? d?t các thành ph?n không tuân theo hu?ng
t? trái-sang-ph?i và trên-xu?ng-du?i - Hàm constructor
- GridBagLayout gb new GridBagLayout( )
130GridBagLayout
- Ð? s? d?ng layout này, b?n c?n ph?i bi?t thông
tin v? kích c? và cách b? trí c?a các thành ph?n - L?p GridBagLayoutConstraints luu tr? t?t c? các
thông tin mà l?p GridLayout yêu c?u V? trí và
kích thu?c m?i thành ph?n
131X? lý các s? ki?n
- Các s? ki?n (Events) du?c x? lý b?ng các công c?
sau - Abstract Windowing Toolkit
- Trình duy?t.
- Các trình x? lý s? ki?n do các l?p trình viên t?o
riêng. - Các ?ng d?ng c?n dang ký trình x? lý s? ki?n v?i
d?i d?i tu?ng - Các trình x? lý này du?c g?i khi có m?t s? ki?n
tuong ?ng x?y ra
132X? lý các s? ki?n (tt)
- Event Listener s? l?ng nghe m?t s? ki?n c? th? mà
m?t d?i tu?ng t?o ra - M?i event listener cung c?p các phuong th?c d? x?
lý các s? ki?n này - L?p có cài d?t listener c?n d?nh nghia nh?ng
phuong th?c này
133X? lý các s? ki?n(tt)
- Các bu?c c?n tuân th? d? s? d?ng mô hình Event
Listener - Cài d?t Listener tuong ?ng
- Nh?n di?n du?c t?t c? các thành ph?n t?o ra s?
ki?n - Nh?n di?n du?c t?t c? các s? ki?n du?c x? lý
- Cài d?t các phuong th?c c?a listener, và vi?t các
do?n mã d? x? lý s? ki?n trong các phuong th?c dó - Interface d?nh nghia các phuong th?c khác nhau d?
x? lý m?i s? ki?n
134Các s? ki?n và Listener tuong ?ng
- ActionEvent
- AdjustmentEvent
- ComponentEvent
- FocusEvent
- ItemEvent
- WindowEvent
- TextEvent
- MouseEvent
- KeyEvent
- ActionListener
- AdjustmentListener
- ComponentListener
- FocusListener
- ItemListener
- WindowListener
- TextListener
- MouseListener
- MouseMotionListener
- KeyListener
135Menus
- Các lo?i menu
- Pull-down
- Pop-up menu
- Ch? có th? d?t các thanh menubar vào trong các
Frame mà thôi - Các thành ph?n c?a menu
- Menubar
- MenuItems
136Chuong VI
137Applets
- Là m?t chuong trình Java mà ch?y v?i s? h? tr?
c?a trình duy?t web - T?t c? các applets là l?p con c?a l?p Applet
- Ð? t?o m?t applet, b?n c?n import hai gói sau
- java.applet
- java.awt
138C?u trúc applet
- Ð?nh nghia m?t applet t? b?n s? ki?n x?y ra trong
quá trình th?c thi - Ð?i v?i m?i s? ki?n du?c d?nh nghia b?i m?t
phuong th?c tuong ?ng. - Các phuong th?c
- init( )
- start( )
- stop( )
- destroy( )
139- Các phuong th?c khác
- paint( )
- repaint( )
- showStatus( )
- getAppletInfo( )
- Các phuong th?c init(), start(), stop(),
destroy(), and paint() du?c th?a k? t? applet. - M?i phuong th?c này m?c d?nh là r?ng. Vì th? các
phuong th?c này ph?i du?c n?p ch?ng.
140Biên d?ch và th?c thi applet
- M?t applet thì du?c biên d?ch theo cú pháp sau
- javac Applet1.java
- Ð? th?c thi m?t applet, t?o m?t t?p tin HTML có
s? d?ng th? applet - Th? applet có hai thu?c tính
- Width
- Height
- Ð? truy?n tham s? t?i applet, s? d?ng th?
param, và ti?p theo là th? value - Applet có th? du?c th?c thi b?ng applet viewer
141Ði?m khác bi?t gi?a applet và m?t ?ng d?ng
- Các ?ng d?ng khi th?c thi ph?i s? d?ng trình biên
d?ch Java, trong khi các applets th?c thi du?c
trên b?t k? trình duy?t nào mà h? tr? Java, ho?c
s? d?ng AppletViewer trong JDK. - M?t ?ng d?ng b?t d?u v?i phuong th?c main().
Còn d?i v?i applet thì không s? d?ng phuong th?c
này - M?t ?ng d?ng s? d?ng System.out.println() d?
hi?n th?, trong khi môt applet thì s? d?ng phuong
th?c drawstring() d? hi?n th?.
142Nh?ng h?n ch? v? b?o m?t trong applet
- Không th? d?c ho?c vi?t các t?p tin trên h? th?ng
t?p tin c?a ngu?i s? d?ng - Không th? giao ti?p v?i m?t site trên internet.
Mà ch? giao ti?p v?i m?t d?ch v? trên trang web
có applet. - Không th? ch?y b?t k? chuong trình nào trên h?
th?ng c?a ngu?i d?c - Không th? load b?t k? chuong trình nào du?c luu
trên h? th?ng c?a ngu?i s? d?ng
143Chu trình s?ng c?a applet
144Truy?n tham s? t?i m?t applet
- Ð? truy?n tham s?, s? d?ng PARAM trong th? HTML
- Ví d?
ltapplet code "Mybutton1" width 100 height
100gt ltPARAM NAME Mybutton value Display
Dialoggt lt/appletgt
145L?p d? h?a
- Ðu?c cung c?p b?i gói AWT
- Cung c?p m?t t?p h?p các phuong th?c d? v? nhu
sau - Oval
- Rectangle
- Square
- Circle
- Lines
- Text in different fonts
146Graphical Background
- Các phuong th?c d? v? n?n
- getGraphics( )
- repaint( )
- update(Graphics g)
- paint(Graphics g)
147Hi?n th? chu?i, ký t? và bytes
- Phuong th?c d? v? ho?c hi?n th? m?t chu?i trên
frame - Cú pháp
- drawString(String str, int xCoor, int yCoor)
- Phuong th?c d? v? ho?c hi?n th? các ký t? trên
frame - Cú pháp
- drawChars(char array , int offset, int length,
int xCoor, int yCoor) - Phuong th?c d? v? ho?c hi?n th? bytes trên frame
- Cú pháp
- drawBytes(byte array , int offset, int length,
int xCoor, int yCoor)
148V? các hình th?
- Phuong th?c du?c s? d?ng d? v? du?ng th?ng nhu
sau - Cú pháp
- drawLine(int x1, int y1, int x2, int y2)
- Các phuong th?c du?c s? d?ng d? v? du?ng tròn nhu
sau - Cú pháp
- drawOval(int xCoor, int yCoor, int width, int
height) - setColor(Color c)
- fillOval(int xCoor, int yCoor, int width, int
height)
149- Phuong th?c s? d?ng d? v? hình vuông
- Cú pháp
- drawRect(int xCoor, int yCoor, int width, int
height) - fillRect(int xCoor, int yCoor, int width, int
height) - Các phuong th?c du?c s? d?ng d? v? hình vuông có
góc tròn - Cú pháp
- drawRoundRect(int xCoor, int yCoor, int width,
int height, int arcWidth, int arcHeight) - fillRoundRect (int xCoor, int yCoor, int width,
int height, int arcWidth, int arcHeight)
1503D Rectangles Arcs
- Các phuong th?c du?c s? d?ng d? v? hình 3D Cú
pháp - draw3DRect(int xCoord, int yCoord, int width, int
height, boolean raised) - drawArc(int xCoord, int yCoord, int width, int
height, int arcwidth, int archeight) - fillArc(int xCoord, int yCoord, int width, int
height, int arcwidth, int archeight)
151Drawing PolyLines
- Các phuong th?c du?c s? d?ng d? v? nhi?u du?c
th?ng - Cú pháp
- drawPolyline(int xArray , int yArray , int
totalPoints) - g.setFont(new Font("Times Roman", Font.BOLD,15))
152V? và tô các hình da giác
- Các phuong th?c d? v? và tô các hình da giác
- Cú pháp
- drawPolygon(int x , int y , int numPoints)
- fillPolygon(int x , int y , int numPoints)
153Màu
- Java s? d?ng màu RGB
- B?ng các giá tr? màu
Element Range
Red 0-255
Green 0-255
Blue 0-255
- Cú pháp c?a hàm d?ng d? t?o m?t màu
- color(int red, int green, int blue)
154- B?ng trình bày các giá tr? màu RGB thông thu?ng
Color Red Green Blue
White 255 255 255
Light Gray 192 192 192
Gray 128 128 128
Dark Gray 64 64 64
Black 0 0 0
Pink 255 175 175
Orange 255 200 0
Yellow 255 255 0
Magenta 255 0 255
155Font
- Gói java.awt package cung c?p b?i l?p Font
- Các phuong th?c c?a l?p Font
- getAllFont( )
- getLocalGraphicsEnvironment( )
- getFont( )
- getFontList( )
156- Hàm d?ng Font nh?n 3 tham s?
- Tên font trong chu?i d?nh d?ng tên này có trong
phuong th?c getFontList( ). - Ki?u c?a font. Ví d? nhu Font.BOLD, Font.PLAIN,
Font.ITALIC - Kích thu?c c?a font.
- Ví d?
Font f1 new Font("SansSerif", Font.ITALIC,
16) g.setFont(f1)
157L?p FontMetrics
- Ðo lu?ng các ký t? khác nhau hi?n th? trong các
font khác nhau. - Vi?c do lu?ng bao g?m height, baseline,
ascent, descent và leading c?a font. - Nó không c? th? vì nó là m?t l?p tr?u tu?ng
158L?p FontMetrics (ti?p theo)
- Phuong th?c
- getFontMetrics(f1)
- getHeight( )
- getAscent( )
- getDescent( )
- getLeading( )
- getName( )
159Ki?u v?
- Các d?i tu?ng d? v? du?c s? d?ng.
- Method used to make old and new contents visible
on the screen - setXORMode(Color c)
- Method used to revert to the overwrite mode
- setPaintMode( )
160Chuong VII
161Tuy?n
- L?p trình da tuy?n là m?t d?c trung c?a Java
- Tuy?n là don v? nh? nh?t c?a do?n mã có th? thi
hành du?c mà th?c hi?n m?t công vi?c riêng bi?t
162Ða tuy?n
- Là kh? nang làm vi?c v?i nhi?u tuy?n
- Ða tuy?n chuyên s? d?ng cho vi?c th?c thi nhi?u
công vi?c d?ngth?i - Ða tuy?n gi?m th?i gian r?i c?a h? th?ng d?n m?c
th?p nh?t.
163T?o và qu?n lý tuy?n (1)
- Khi chuong trình Java th?c thi hàm main() t?c là
tuy?n main du?c th?c thi. Tuy?n này du?c t?o ra
m?t cách t? d?ng. t?i dây - - Các tuy?n con s? du?c t?o ra t? dó
- - Nó là tuy?n cu?i cùng k?t thúc vi?c th?c hi?n.
Trong ch?c lát tuy?n chính ng?ng th?c thi, chuong
trình b? ch?m d?t - Tuy?n có th? du?c t?o ra b?ng 2 cách
- D?n xu?t t? l?p Thread
- D?n xu?t t? Runnable.
164Vòng d?i c?a m?t tuy?n
165Tr?ng thái c?a tuy?n và các phuong th?c c?a l?p
tuy?n
- tr?ng thái
- born
- ready to run
- running
- sleeping
- waiting
- ready
- blocked
- dead
- Phuong th?c
- start( )
- sleep( )
- wait( )
- notify( )
- run( )
- stop( )
166Các phuong th?c Khác
- enumerate(Thread t)
- getName( )
- isAlive( )
- getPriority( )
- setName(String name)
- join( )
- isDaemon( )
- setDaemon(Boolean on)
- resume( )
- sleep( )
- start( )
167Phân chia th?i gian gi?a các tuy?n
- CPU ch? th?c thi ch? m?t tuy?n t?i m?t th?i di?m
nh?t d?nh. - Các tuy?n có d? uu tiên b?ng nhau thì du?c phân
chia th?i gian s? d?ng b? vi x? lý.
168tuy?n Daemon(ng?m)
- Hai ki?u tuy?n trong m?t chuong trình Java
- Các tuy?n ngu?i s? d?ng
- tuy?n ng?m
- tuy?n ng?m d?n rác
169Ða tuy?n v?i Applets
- Các chuong trình Java d?a trên Applet thu?ng s?
d?ng nhi?u hon m?t tuy?n - Trong da tuy?n v?i Applets, L?p
java.applet.Applet là l?p con du?c t?o ra m?t
Applet ngu?i s? d?ng dã d?nh nghia - nó không th? th?c hi?n du?c tr?c ti?p l?p con c?a
l?p tuy?n trong các applet - Con du?ng d? l?p con s? d?ng l?p tuy?n
- S? d?ng m?t d?i tu?ng c?a tuy?n ngu?i s? d?ng
d?nh nghia, mà, l?n lu?t, d?n xu?t l?p tuy?n - Th?c thi ch?y giao ti?p (interface)
170S? d?ng b? tuy?n
- Thâm nh?p các tài nguyên/d? li?u b?i nhi?u tuy?n
- S? d?ng b? (Synchronization)
- S? quan sát (Monitor)
- Mutex
171Mã d?ng b?
- Ð? thâm nh?p s? quan sát c?a m?t d?i tu?ng, l?p
trình viên s? d?ng t? khóa synchronized d? g?i
m?t phuong th?c hi?u ch?nh (modified method) - Khi m?t tuy?n dang du?c th?c thi trong ph?m vi
m?t phuong th?c d?ng b? (synchronized), b?t k?
tuy?n khác ho?c phuong th?c d?ng b? khác mà c?
g?ng g?i nó trong th?i gian dó s? ph?i d?i
172Khuy?t di?m c?a các phuong th?c d?ng b?
- Các tr?ng thái ch?c ch?n không l?i ích cho da
tuy?n - Trình biên d?ch Java t? Sun không ch?a nhi?u
phuong th?c d?ng b? - Các phuong th?c d?ng b? ch?m hon t? ba d?n b?n
l?n so v?i các phuong th?c tuong ?ng không d?ng
b?.
173K? thu?t wait-notify (d?i thông báo) (1)
- tuy?n chia các tác v? thành các don v? riêng bi?t
và logic (h?p lý) - Ð? tránh tru?ng h?p ki?m soát vòng, Java bao g?m
m?t thi?t k? t?t trong ti?n trình k? thu?t truy?n
thông s? d?ng các phuong th?c wait() (d?i),
notify() (thông báo) và notifyAll() (thông
báo h?t) - wait( )
- notify( )
- notifyAll( )
174K? thu?t wait-notify (d?i thông báo) (1)
- Các ch?c nang c?a các phuong th?c wait(),
notify(), và notifyAll() là - wait( )
- notify( )
- notifyAll( )
- tuy?n uu tiên cao nh?t ch?y d?u tiên
- Cú pháp c?a các phuong th?c
- final void wait( ) throws IOException
- final void notify( )
- final void notifyAll( )
175M?t s? di?m c?n nh? trong khi s? d?ng phuong th?c
wait()
- tuy?n dang g?i dua vào CPU
- tuy?n dang g?i dua vào khóa
- tuy?n dang g?i di vào vùng d?i c?a monitor
176Các di?m chính c?n nh? v? phuong th?c notify()
- M?t tuy?n dua ra ngoài vùng d?i c?a monitor, và
vào tr?ng thái s?n sàng - tuy?n mà dã du?c thông báo ph?i thu tr? l?i khóa
c?a monitor tru?c khi nó có th? b?t d?u - Phuong th?c notify() là không chính xác
- Trong m?t s? tru?ng h?p này, các phuong th?c c?a
monitor dua ra 2 s? d? phòng - Tr?ng thái c?a monitor s? du?c ki?m tra trong m?t
vòng l?p while t?t hon là câu l?nh if - Sau khi thay d?i tr?ng thái c?a monitor, phuong
th?c notifyAll() s? du?c s? d?ng, t?t hon phuong
th?c notify().
177S? b? t?t (Deadlocks)
- M?t deadlock (s? b? t?t) x?y ra khi hai tuy?n
có m?t ph? thu?c vòng quanh trên m?t c?p d?i
tu?ng d?ng b? - Nó khó d? g? l?i m?t b? t?t b?i nh?ng nguyên nhân
sau - Nó hi?m khi x?y ra, khi hai tuy?n chia nh? th?i
gian trong cùng m?t con du?ng - Nó có th? bao hàm nhi?u hon hai tuy?n và hai d?i
tu?ng d?ng b? - N?u m?t chuong trình da tuy?n khóa kín thu?ng
xuyên, ngay l?p t?c ki?m tra l?i di?u ki?n b? t?t
178Thu d?n rác (Garbage collection)
- C?i t?o ho?c làm tr?ng b? nh? dã d?nh v? cho các
d?i tu?ng mà các d?i tu?ng này không s? d?ng
trong th?i gian dài - S? d?n rác th?c thi nhu là m?t tuy?n riêng bi?t
có quy?n uu tiên th?p - S? d?ng câu l?nh sau d? t?t di s? d?n rác trong
?ng d?ng - java noasyncgc
179Phuong th?c finalize() (hoàn thành)
- Java cung c?p m?t con du?ng d? làm s?ch m?t ti?n
trình tru?c khi di?u khi?n tr? l?i h? di?u hành - Phuong th?c finalize(), n?u hi?n di?n, s? du?c
th?c thi trên m?i d?i tu?ng, tru?c khi s? d?n rác
- Câu l?nh c?a phuong th?c finalize() nhu sau
- protected void finalize( ) throws Throwable
- Tham chi?u không ph?i là s? d?n rác ch? các d?i
tu?ng m?i du?c d?n rác
180Chuong VIII
181Các lu?ng
- Các lu?ng là nh?ng du?ng ?ng d?n d? g?i và nh?n
thông tin trong các chuong trình java. - Khi m?t lu?ng d?c ho?c ghi , các lu?ng khác b?
khoá. - N?u l?i x?y ra trong khi d?c ho?c ghi lu?ng, m?t
ngo?i l? s? kích ho?t. - L?p java.lang.System d?nh nghia lu?ng nh?p và
xu?t chu?n.
182Các l?p lu?ng I/O
- L?p System.out.
- L?p System.in.
- L?p System.err.
183L?p InputStream
- Là l?p tr?u tu?ng
- Ð?nh nghia cách nh?n d? liêu
- Cung c?p s? phuong th?c dùng d? d?c và các lu?ng
d? li?u làm d?u vào. - Các phuong th?c
- read( )
- available( )
- close ( )
- mark ( )
- markSupported( )
- reset( )
- skip( )
184L?p OutputStream
- Là l?p tr?u tu?ng.
- Ð?nh nghia cách ghi d? li?u vào lu?ng.
- Cung c?p t?p các phuong th?c tr? giúp. trong vi?c
t?o, ghi và x? lý các lu?ng xu?t. - Các phuong th?c
- write(int)
- write(byte )
- write(byte , int, int)
- flush( )
- close( )
185Nh?p m?ng các Byte
- S? d?ng các d?m b? nh?
- L?p ByteArrayInputStream
- T?o ra m?t lu?ng nh?p t? d?m b? nh? không gì c?
v? m?ng các byte. - Không h? tr? các phuong th?c m?i
- Các phuong th?c n?p ch?ng c?a l?p InputStream,
gi?ng nhu read(), skip(), available() và
reset().
186Byte Array Output
- s? d?ng các vùng d?m b? nh?
- L?p ByteArrayOutputStream
- T?o ra m?t lu?ng k?t xu?t trên m?ng byte
- Cung c?p các kh? nang b? sung cho m?ng k?t xu?t
tang tru?ng nh?m ch?a ch? cho d? li?u m?i ghi
vào. - Cung cung c?p các phuong th?c d? chuy?n d?i lu?ng
t?i m?ng byte, hay d?i tu?ng String.
187- Phuong th?c c?a l?p ByteArrayOutputStream
- reset( )
- size( )
- writeTo( )
188Các l?p nh?p/xu?t t?p tin
- Các l?p này tr? giúp trong Java d? h? tr? các
thao tác nh?p và xu?t - File
- FileDescriptor
- FileInputStream
- FileOutputStream
- Các l?p File, FileDescriptor, và RandomAccessFile
du?c s? d?ng h? tr? tr?c ti?p ho?c truy c?p
nh?p/xu?t ng?u nhiên.
189L?p t?p tin
- Ðu?c s? d?ng truy c?p các d?i tu?ng t?p tin và
thw m?c - Nh?ng t?p tin có tên du?c d?t tên theo qui u?c
c?a h? di?u hành ch? - L?p này cung c?p phuong th?c kh?i t?o d? t?o ra
các thu m?c và t?p tin - T?t c? các thao tác thu m?c và t?p tin d?u du?c
s? d?ng các phuong th?c truy c?p và các phuong
th?c thu m?c mà các l?p t?p tin cung c?p
190L?p FileDescriptor
- Cung c?p vi?c truy c?p t?i các t?p tin mô t?
- Không cung c?p b?t k? tính rõ nét nào t?i thông
tin mà h? di?u hành duy trì. - Cung c?p ch? m?t phuong th?c g?i là valid( )
191L?p FileInputStream
- Cho phép d?u vào d?c t? m?t t?p tin trong m?t
m?u c?a m?t dòng - Các d?i tu?ng du?c t?o ra s? d?ng chu?i tên t?p
tin, t?p tin, d?i tu?ng FileDescriptor nhu m?t
tham s?. - Các phuong th?c n?p ch?ng c?a l?p InputStream. nó
cung c?p phuong th?c finalize( ) và getFD( )
192L?p FileOutputStream
- Cho phép k?t xu?t d? ghi ra m?t lu?ng t?p tin
- Các d?i tu?ng cung t?o ra s? d?ng m?t chu?i tên
t?p tin, t?p tin, hay d?i tu?ng FileDescriptor
nhu m?t tham s?. - L?p này n?p ch?ng các phuong th?c c?a l?p
OutputStream và cung c?p phuong th?c
finalize( ) và getFD( )
193Nh?p xu?t l?c
- L?c
- Là ki?u lu?ng s?a d?i cách di?u qu?n m?t lu?ng
hi?n có. - v? co b?n du?c s? d?ng d? thích ?ng các lu?ng
theo các nhu c?u c?a chuong trình c? th?. - B