B - PowerPoint PPT Presentation

1 / 238
About This Presentation
Title:

B

Description:

B I GI NG L P TR NH JAVA GV : HU NH C NG PH P KHOA : CNTT- HBK Ch ng 1 Gi i thi u ng n ng l p tr nh Java Gi i thi u S ph t tri n ... – PowerPoint PPT presentation

Number of Views:227
Avg rating:3.0/5.0
Slides: 239
Provided by: phap
Category:
Tags: font | size | unicode

less

Transcript and Presenter's Notes

Title: B


1
  • BÀI GI?NG L?P TRÌNH JAVA
  • GV HU?NH CÔNG PHÁP
  • KHOA CNTT-ÐHBK

2
Chuong 1
  • Gi?i thi?u ngôn ng? l?p trình Java

3
Gi?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

4
Cá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

5
Các chuong trình d?ch truy?n th?ng
6
Chuong trình d?ch Java
7
Cá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

8
Má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

9
Quá 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

10
Trì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

11
B? 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

13
Cá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

14
Các d?c trung m?I c?a Java2
  • Swing
  • Kéo và th?
  • Java 2D API
  • Âm thanh
  • RMI

15
Chuong 2
  • Các ph?n t? co b?n ngôn ng? Java

16
C?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?

17
Ví 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)

18
Biên d?ch chuong trình java
  • ..\jdk\bingtjavac Ex1.java
  • ..\jdk\bingtjava Ex1
  • K?t qu?
  • My first program in Java

19
Truy?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)
20
Truy?n d?i s? trong dòng l?nh (Ti?p theo)
21
Cá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

22
L?p trong Java
  • Cú pháp khai báo l?p (Class)

class Classname var_datatype
variablename   met_datatype
methodname(parameter_list)
23
L?p m?u
24
Cá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)

25
Ki?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)

26
Ki?u d? li?u co s?
  • byte
  • char
  • boolean
  • short
  • int
  • long
  • float
  • double

27
Ki?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

29
Bi?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.
    ..

30
Nh?ng t? khóa c?a Java
31
Khai báo m?ng
  • Ba cách d? khai báo m?ng
  • datatype identifier
  • datatype identifier new datatypesize
  • datatype identifier value1,value2,.valueN

32
Phuong 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

33
Ví 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( )


34
Access specifiers
  • public
  • private
  • protected

35
Method Modifiers
  • static
  • abstract
  • final
  • native
  • synchronized
  • volatile

36
Nh?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)

37
Ghi 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)

38
Phuong 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)

39
Phuong 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)

40
Cá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)

41
Toá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

43
Toá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)

44
Toá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

45
Toán t? Logic(Logical Operators )
  • Logical AND
  • Logical OR
  • ! Logical unary NOT

46
Toá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

47
Toá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

48
Th? 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?

49
Cá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 ()
50
Cá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

51
L?nh if-else
  • Cú pháp
  • if (condition)
  • action1 statements
  • else
  • action2 statements

52
L?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)

53
L?nh l?p while
  • Cú pháp
  • while(condition)
  • action statements

54
L?nh l?p do-while
  • Cú pháp
  • do
  • action statements
  • while(condition)

55
Vòng l?p for
  • Cú pháp
  • for(initialization statements condition
    increment statements)
  • action statements

56
Chuong 3
  • Gói Interface
  • (Packages Interfaces)

57
Gi?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.

58
Interfaces
  • 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).

59
Cá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ó.

60
S? 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.

61
Gó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

65
Cá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.

66
S? 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

67
Xá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

68
Gói và di?u khi?n truy xu?t (Packages Access
Control)
69
Gó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

70
L?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)

71
String 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

72
Nh?ng phuong th?c c?a l?p String
  • charAt( )
  • startsWith()
  • endsWith( )
  • copyValueOf( )
  • toCharArray( )
  • indexOf( )
  • toUpperCase( )
  • toLowerCase( )
  • trim( )
  • equals( )

73
L?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( )

74
L?p java.lang.Math
  • abs()
  • ceil()
  • floor()
  • max()
  • min()
  • round()
  • random()
  • sqrt()
  • sin()
  • cos()
  • tan()

75
L?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)

76
L?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)

77
L?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

78
L?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()

79
Gó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

80
L?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( )

81
Nh?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()

82
L?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)

83
Nh?ng phuong th?c c?a l?p Random
  • nextDouble()
  • nextFloat()
  • nextGaussian()
  • nextInt()
  • nextLong()
  • setSeed(long)

84
L?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()

85
Nh?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( )

86
L?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)

87
Nh?ng phuong th?c c?a l?p StringTokenizer
  • countTokens( )
  • hasMoreElements( )
  • hasMoreTokens( )
  • nextElement( )
  • nextToken( )
  • nextToken(String)

88
Chuong 4
  • X? lý bi?t l?

89
Gi?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

90
M?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.

91
X? 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?.

92
Mô 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

93
C?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 .

94
Mô 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.

95
Kh?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.

96
Kh?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

97
Kh?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(
    ))

98
Kh?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?.

99
Kh?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.

100
Kh?i finally (tt)
  • Ví d?
  • try
  • doSomethingThatMightThrowAnException( )
  • finally
  • cleanup( )

101
Kh?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.

102
Cá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

103
Cá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)
  • .

104
Cá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.

105
Danh sách các bi?t l?
  • RuntimeException
  • ArithmeticException
  • IllegalAccessException
  • IllegalArgumentException
  • ArrayIndexOutOfBoundsException
  • NullPointerException
  • SecurityException
  • ClassNotFoundException

106
Danh sách các bi?t l? (tt)
  • NumberFormatException
  • AWTException
  • IOException
  • FileNotFoundException
  • EOFException
  • NoSuchMethodException
  • InterruptedException

107
Chuong V
  • L?P TRÌNH GIAO DI?N V?I AWT

108
GI?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

110
Components
  • 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

111
Containers
  • 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

112
Frames
  • 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

113
Panels
  • 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()

114
Dialog
  • 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)
115
Các Components khác
  • Ví d?
  • textfields, labels, checkboxes, textareas
  • scrollbars, scrollpanes, dialog

116
Label
  • Ð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( )

117
TextField
  • 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( )

118
TextArea
  • Ð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

119
TextArea (tt)
  • Các hàm d?ng
  • TextArea( )
  • TextArea(int rows, int cols )
  • TextArea(String text)
  • TextArea(String text, int rows, int cols)

120
Các phuong th?c c?a TextArea
  • setText(String)
  • getText( )
  • setEditable(boolean)
  • isEditable( )
  • insertText(String, int)
  • replaceText(String, int, int)

121
Button
  • 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)

122
Checkboxes 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

123
Choice 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)

124
Trì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( )

125
FlowLayout
  • 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)

126
BorderLayout
  • 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)

127
CardLayout
  • 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

128
GridLayout
  • 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)

129
GridBagLayout
  • 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( )

130
GridBagLayout
  • Ð? 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

131
X? 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

132
X? 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

133
X? 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

134
Cá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

135
Menus
  • 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

136
Chuong VI
  • Applets

137
Applets
  • 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

138
C?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.

140
Biê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?.

142
Nh?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

143
Chu trình s?ng c?a applet
144
Truy?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
145
L?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

146
Graphical Background
  • Các phuong th?c d? v? n?n
  • getGraphics( )
  • repaint( )
  • update(Graphics g)
  • paint(Graphics g)

147
Hi?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)

148
V? 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)

150
3D 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)

151
Drawing 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))

152
V? 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)

153
Mà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
155
Font
  • 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)
157
L?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

158
L?p FontMetrics (ti?p theo)
  • Phuong th?c
  • getFontMetrics(f1)
  • getHeight( )
  • getAscent( )
  • getDescent( )
  • getLeading( )
  • getName( )

159
Ki?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( )

160
Chuong VII
  • L?p trình da tuy?n

161
Tuy?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.

163
T?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.

164
Vòng d?i c?a m?t tuy?n
165
Tr?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( )

166
Các phuong th?c Khác
  • enumerate(Thread t)
  • getName( )
  • isAlive( )
  • getPriority( )
  • setName(String name)
  • join( )
  • isDaemon( )
  • setDaemon(Boolean on)
  • resume( )
  • sleep( )
  • start( )

167
Phâ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ý.

168
tuy?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)

170
S? 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

171
Mã 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

172
Khuy?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?.

173
K? 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( )

174
K? 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( )

175
M?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

176
Cá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().

177
S? 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

178
Thu 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

179
Phuong 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

180
Chuong VIII
  • Các lu?ng I/O

181
Cá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.

182
Các l?p lu?ng I/O
  • L?p System.out.
  • L?p System.in.
  • L?p System.err.

183
L?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( )

184
L?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( )

185
Nh?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().

186
Byte 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( )

188
Cá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.

189
L?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

190
L?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( )

191
L?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( )

192
L?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( )

193
Nh?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
Write a Comment
User Comments (0)
About PowerShow.com