Professional Documents
Culture Documents
1
Tài liệu tham khảo:
Lập trình Java – NXB Thống kê – VN GUIDE
Lập trình hướng đối tượng bằng Java – Đoàn
Văn Ban
96 bài toán và giải pháp gỡ rối Java -
Nguyễn Nam Thuận
Java lập trình mạng – Nguyễn Phương Lan
Hướng dẫn lập trình mạng bằng Java – Đậu
Quang Tuấn + Nguyễn Viết Linh
Giáo trình Lập trình mạng bằng Java – Trung
tâm Trí Đức
http://java.sun.com/
2
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
Hình thức thi:
Điểm lý thuyết: 50% - Thi viết
Điểm thực hành: 50% - Bài tập lớn
Bài tập lớn:
Chia theo nhóm
Mỗi nhóm 4 sinh viên
3
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
Yêu cầu kiến thức cần có:
Nắm vững kiến thức ngôn ngữ C++
Lập trình hướng đối tượng
4
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
CHƯƠNG I:
GIỚI THIỆU
NGÔN NGỮ JAVA
5
I. Lịch sử phát triển
Lược sử:
1990: Sun giới thiệu Oak.
1993: HotJava + Web Applets (các nguyên tắc
cho những ứng dụng nhỏ trong Web)
1995: Công bố chính thức Java, một công cụ
mạnh mẽ cho việc phát triển các ứng dụng trên
Internet
Từ 1995:
JDK - Java Development Kit - bao gồm: trình biên dịch,
thông dịch, giúp đỡ soạn thảo tài liệu, thư viện chuẩn
JavaMail
6
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
Java là gì?
Là một ngôn ngữ cho các ứng dụng thiết bị
và ngôn ngữ lập trình mạng
7
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
Java là gì?
“WRITE ONCE, RUN ANYWHERE!”
“VIẾT MỘT LẦN, CHẠY NHIỀU NƠI KHÁC
NHAU!”
Program Java Java
in Java Compiler Bytecode
8
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
*Ưu nhược điểm của Java:
Thời gian chạy chương trình thư viện được
cung cấp trên một nền tảng độc lập
Cú pháp tương tự C++ làm cho chương trình
được tối ứu mà không dẫn đến sự bất hợp lý
9
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
II. Tính chất của Java:
Đơn giản
Hướng đối tượng
Phân tán
Thông dịch
Mạnh mẽ
Bảo mật
Cấu trúc độc lập
Khả chuyển
10
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
1. Đơn giản:
Được xây dựng thay thế C/C++ nhưng loại
bỏ đi những sự phức tạp của ngôn ngữ C/C+
+(con trỏ, cấp phát bộ nhớ,…)
11
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
2. Hướng đối tượng:
Các ứng dụng của Java đều dựa vào đối
tượng và thực hiện thông qua các đối tượng.
Trong Java các đối tượng không cho phép đa
kế thừa mà thông qua các giao tiếp
(interface)
12
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
3. Phân tán:
Java được thiết kế hỗ trợ cho các ứng dụng
phân tán bằng các lớp mạng.
Ví dụ: cho phép viết ứng dụng được truy cập
từ xa, từ máy tính khác
13
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
4. Thông dịch:
Java là ngôn ngữ vừa biên dịch và vừa thông
dịch => các ứng dụng của Java có thể chạy
trên máy tính với các phần cứng khác nhau:
Macintosh, Intel, Sun Microsystem,…
14
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
5. Mạnh mẽ:
Java không cho phép khai báo biến một cách tuỳ
tiện => Các biến phải tường minh
Vì vậy các lỗi về cấp phát bộ nhớ, tràn bộ nhớ, lặp
bộ nhớ được giải quyết
Java vừa là trình thông dịch vừa là trình biên dịch,
trình thông dịch kiểm tra tất cả các sự truy nhập hệ
thống thực hiện trong một chương trình do đó các
chương trình Java không thể phá hỏng hệ thống
Khi chương trình Java có lỗi các chương trình tạo ra
sự loại bỏ, sự loại bỏ này có thể bị giữ lại và quản lý
bởi chương trình mà không có bất cứ một sự mạo
hiểm nào phá hỏng hệ thống
15
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
6. Bảo mật:
Java được thiết kế để tạo hệ thống không
Virus, không bị phá rối dựa vào kỹ thuật xác
minh theo mã hoá công cộng
Java có bộ thông dịch bytecode kiểm tra
chặt chẽ các mã byte không cho bất kỳ
những hành vi không được phép nào được
thực hiện
Vì các con trỏ không được hỗ trợ trong ngôn
ngữ Java nên các chương trình không thể
truy cập vào các vùng của hệ thống khi
chúng không được phép
16
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
7. Cấu trúc độc lập:
Java cho phép tạo ra các máy ảo (Virtual)
trên mỗi hệ thống => Ứng dụng Java chạy
không phụ thuộc vào bộ vi xử lý và hệ điều
hành nhờ vào trình thông dịch.
Hệ máy Java ảo rất nhỏ nên có thể cài đặt
trong máy con mà không tốn tài nguyên
17
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
8. Khả chuyển:
Các ứng dụng Java được viết chỉ cần chạy
được trên máy ảo
Các kiểu dữ liệu của Java được định nghĩa
không phụ thuộc vào bộ xử lý hay hệ điều
hành
=> Ứng dụng chỉ cần viết một lần nhưng có
thể chạy được trên nhiều thiết bị, phần cứng
khác nhau
18
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
III. Cài đặt Java:
Chuẩn bị:
Bộ cài JDK – Java Development Kit (bộ công cụ
phát triển Java)
Cấu hình máy tương ứng với bộ cài JDK
Cài đặt JDK ra máy và xác định thư mục đường
dẫn chứa kết quả cần cài đặt
19
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
Cập nhật biến đường dẫn (PATH) trong hệ
điều hành
Mở Control Panel
Chọn System
Chọn trang Advanced
Nhấp chuột vào nút Environment Variables…
Chọn biến PATH trong cửa sổ
Chọn nút EDIT
Gõ thêm đường dẫn kết quả cài đặt của JDK
Chọn OK => OK
20
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
IV. Bộ công cụ phát triển - JDK
Mọi bộ JDK thường chứa các công cụ cơ bản
sau
Trình biên dịch – javac
22
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
CHƯƠNG II:
CĂN BẢN LẬP TRÌNH JAVA
23
I. Mở đầu:
Java là ngôn ngữ lập trình hướng đối tượng,
tất cả các lớp của Java đều dựa trong đối
tượng Object.
Các lớp được tổ chức thành các gói
(Package) và các gói lại có thể chứa các gói
hay các giao diện khác.
“Các chương trình mã nguồn (*.java) được
biên dịch thành các file bytecode (mã nhị
phân) (*.class) => Trình biên dịch java
chuyển đổi các bytecode thành mã máy theo
bộ xử lý cụ thể”
24
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
II. Cấu trúc chương trình Java:
25
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Ví dụ chương trình đầu tiên (hello.java)
import java.io.*;
class first
{
public static void main(string arg[])
{
system.out.println(“Hello, The First! ”);
}
}
27
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Các thành phần cơ bản trong Java:
Định danh(identifier): thể hiện tên biến,
tên phương thức => Trình biên dịch xác định
tên này là duy nhất. Nguyên tắc khai báo
định danh:
Định danh bắt đầu bằng chữ cái, ký tự gạch dưới
hay dấu $ => các ký tự tiếp là chữ cái, chữ số, $
hay ký tự gạch dưới
Mỗi một định danh chỉ chứa một ký tự $ hoặc một
ký tự gạch dưới
Định danh không chứa dấu cách
28
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
Từ khoá(Keyword): là các định danh được
Java xác định trước và người lập trình không
được quyền sử dụng nó
Ký tự phân cách: 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, ký tự phân cách gồm: { } ; ,
Nguyên dạng: là các giá trị không đổi trong
chương trình, có thể là số, chuỗi, ký tự hay
giá trị Boolean
Các toán tử: là các phép toán thực hiện
trên DL hoặc các đối tượng
29
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
III. Căn bản Java
Chương trình Java là tập hợp các hành động
được sắp xếp theo một trật tự nhất định để
máy có thể thực hiện được => Chương trình
chứa các biến và các lệnh.
Các khái niệm cơ bản của Java:
Lớp và phương thức
Kiểu dữ liệu
Biến
Toán tử
Các cấu trúc điều khiển
30
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
a. Kiểu dữ liệu:
Các ứng dụng đều xử lý trên dữ liệu đầu vào
và xuất dữ liệu ở đầu ra. Đầu vào, đầu ra, và
kết quả tính toán đều liên quan đến dữ liệu
được làm việc.
Dữ liệu có một tính xác định và một kiểu thể
hiện riêng biệt
Các loại kiểu dữ liệu:
Nguyên thủy: byte, char, boolean, short, int, long,
float, double
Tham chiếu: mảng, lớp, giao diện (do người dùng
tự định nghĩa)
31
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
b. Chuyển đổi kiểu:
Cho phép ép một giá trị từ kiểu này sang
kiểu khác.
Trong Java có hai hướng chuyển đổi kiểu:
Chuyển kiểu hẹp (narrowing conversion): từ kiểu
lớn về kiểu nhỏ
Chuyển kiểu rộng: từ kiểu nhỏ về kiểu lớn
32
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
Ví dụ:
float a = (float) 12;
float b = 15.682f;
int c = (int)b;
Chú ý: Các hằng thực có thể biểu diễn bẳng
dạng thập phân (5.1693) hay dạng mũ
(6.2e33). Để chỉ rõ hằng float thêm f hay F,
hằng double thêm d hay D
33
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
c. Khai báo biến:
Biến được xác định bởi tên và phạm vi tác động
Khai báo biến gồm ba thành phần: kiểu biến, tên và
giá trị khởi tạo ban đầu
Cú pháp:
datatype namevar[=value],…;
Trong đó:
Datatype: kiểu dữ liệu của biến, là kiểu đã được
khai báo hay định nghĩa
Namevar: tên của biến, tên được đặt tuân thủ
nguyên tắc
Value: giá trị khởi tạo ban đầu
Lưu ý: Trong Java khi đặt tên biến có phân biệt chữ
hoa và chữ thường.
34
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
d. Khai báo hằng:
Hằng là đại lượng không thay đổi khi thực
hiện trong chương trình
Để khai báo hằng dùng từ khóa final đặt
trước kiểu dữ liệu và tên biến
Ví dụ:
35
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
IV. Khai báo mảng:
Mảng là loại dữ liệu có các phần tử cùng kiểu
được lưu trữ ở các vị trí liên kề nhau trong bộ
nhớ.
Kiểu dữ liệu của các phần tử mảng có thể là
kiểu dữ liệu cơ sở hoặc một đối tượng đã
định nghĩa.
36
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Khai báo mảng:
Cách khai Mô tả Cú pháp Ví dụ
báo
Chỉ đơn datatype identifier[ ]; char ch[];
thuần
khai báo
Khai báo Khai báo và datatype identifier[ ] = char ch[ ]=new
và tạo cấp phát bộ new datatype[size]; char[10];
mảng nhớ cho
phần tử
mảng
37
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
V. Toán tử và biểu thức
Toán tử là các ký hiệu toán học để thực hiện
các phép tính toán cơ bản
Trong Java cung cấp các loại toán tử sau:
Toán tử số học
Toán tử bit
Toán tử quan hệ
Toán tử logic
Toán tử điều kiện
Toán tử gán
38
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
a.Các toán tử cơ bản:
Toán tử số học: +, -, *, /, %, ++, --, +=,
-=, *=, /=, %=
Toán tử quan hệ: ==, !=, >, <, >=, <=
Toán tử logic: &(AND), |(OR), ^(XOR), !
(NOT)
39
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
b. Toán tử bit:
Toán tử cho phép thực hiện thao tác trên
từng bit riêng biệt trong kiểu dữ liệu nguyên
thủy
Toán tử bit dựa trên cơ sở đại số Boolean,
thực hiện trên hai bít có vị trí tương ứng của
hai toán hạng
Các toán tử cơ bản:
~ : phủ định trả về giá trị âm của một số
&: toán tử AND
|: OR
^: Loại trừ (XOR)
40
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
x>>n: dịch phải bit
Chuyển toàn bộ các bit của một số x sang phải n
vị trí, giữ nguyên dấu của số âm
Ví dụ: x = 31 00011111
x>>2 00000111
x<<n: dịch trái bit
Chuyển toàn bộ các bit của một số x sang trái n
vị trí, giữ nguyên dấu của số âm
Ví dụ: x = 31 00011111
x<<2 01111100
41
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
c. Toán tử điều kiện:
Cú pháp:
<biểu thức 1>?<biểu thức 2>:<biểu thức 3>
Trong đó:
<biểu thức 1>: là biểu thức logic, trả về giá trị
True hoặc False
<biểu thức 2>: là giá trị trả về khi <biểu thức 1>
nhận giá trị đúng
<biểu thức 3>: là giá trị trả về khi <biểu thức 1>
nhận giá trị sai
Ví dụ:
kq = (a>b) ? a : b;
42
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
VI. Cấu trúc điều khiển
Là các câu lệnh kiểm tra và điều khiển quá
trình thực hiện các câu lệnh sao cho chương
trình thực hiện và đạt yêu cầu đặt ra
Các cấu trúc điều khiển cơ bản
if
switch
for
while…do
43
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
a. Cấu trúc lựa chọn - IF
Cú pháp:
if (condition)
{ khối lệnh 1; }
else
{ khối lệnh 2; }
Trong đó:
Condition: biểu thức điều kiện, nhận giá trị True
hoặc False
Khối lệnh 1, khối lệnh 2: các dòng lệnh được
thực hiện tương ứng khi điều kiện True hoặc
False
44
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Ví dụ:
…
class CheckNumber
{
public static void main(String arg[])
{
int num = 10;
if (num%2==0)
System.out.println(num + “la so chan”);
else
System.out.println(num + “la so le”);
}
}
45
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
Có thể dùng cấu trúc if lồng nhau
import java.io.*;
import java.util.Date;
class checkdate
{
public static void main(String arg[])
{
Date today=new Date();
if (today.getDay() ==0)
system.out.println(“Hom nay la chu nhat”);
else if (today.getDay() ==1)
system.out.println(“Hom nay la thu hai”);
else if (today.getDay() ==2)
system.out.println(“Hom nay la thu ba”);
}
}
46
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
b. Cấu trúc lựa chọn - SWITCH
Cú pháp:
switch ( biểu thức )
{
case <giá trị 1>: <khối lệnh 1>; break;
case <giá trị 2>: <khối lệnh 2>; break;
…
case <giá trị n>: <khối lệnh n>; break;
default : <khối lệnh n+1>;
}
47
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
Trong đó:
Biểu thức: là biến hay biểu thức chứa giá trị
xác định
<giá trị 1>, <giá trị 2>,…,<giá trị n>: là các
hằng số có thể nhận được giá trị của biểu
thức
<khối lệnh 1>, <khối lệnh 2>,…, <khối lệnh
n>: là các hành động được thực hiện khi biểu
thức nhận giá trị tương ứng
default: từ khóa tùy chọn được sử dụng để
chỉ rõ câu lệnh được thực hiện khi các giá trị
khác không thỏa mãn
48
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
*Ví dụ:
import java.util.Date;
class checkday
{
public static void main( String arg[])
{
Date today = new Date();
int day;
day = today.getDay();
switch(day)
{
case 0: System.out.println(“ Chu nhat”); break;
case 1: System.out.println(“ Thu hai”); break;
case 2: System.out.println(“ Thu ba”); break;
case 3: System.out.println(“ Thu tu”); break;
case 4: System.out.println(“ Thu nam”); break;
case 5: System.out.println(“ Thu sau”); break;
case 6: System.out.println(“ Thu bay”); break;
default: System.out.println(“ Khong phai la ngay”);
}
}
}
49
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
c. Cấu trúc FOR
Cú pháp:
for(<khởi tạo> ; <bt kiểm tra> ; <bước nhảy>)
<Khối lệnh>;
Trong đó:
<khởi tạo>: biểu thức khởi tạo giá trị ban đầu
cho biến lặp
<bt kiểm tra>: biểu thức xác định điều kiện dừng
cuối cùng của vòng lặp, xđ cận trên
<bước nhảy>: biểu thức để thay đổi giá trị biến
lặp sau mỗi bước lặp
<khối lệnh>: là các thao tác thực hiện trong mỗi
vòng lặp
50
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Ví dụ:
import …
class Sum
{
public static void main( String arg[])
{
int S = 0;
for( int i=0 ; i<100 ; i+=2 )
S += i;
System.out.println( “Ket qua:” + S );
}
}
51
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
d. Vòng lặp WHILE
Cú pháp:
while ( bt điều kiện )
<khối lệnh>;
Trong đó:
Btđiều kiện: là biểu thức logic xác định điều kiện
đúng để thực hiện vòng lặp
Khối lệnh: là các câu lệnh được thực hiện trong
mỗi vòng lặp
Vòng lặp while được thực hiện với số bước
lặp là chưa được xác định trước
52
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Ví dụ:
import ...
class whiledo
{
public static void main(String arg[])
{
int a=10, fact=1;
while (a>=1)
{
fact = fact * a;
a--;
}
System.out.println( “Ket qua:” + fact );
}
}
53
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
e. Lệnh Break và Continue
Lệnh break dùng để thoát khỏi một cấu trúc
lặp hiện tại khi thoả mãn một điều kiện nào
đó
Lệnh Continue cho phép chương trình nhảy
về đầu vòng lặp và bỏ qua các lệnh phía sau
đó
54
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
CHƯƠNG III:
55
I. Khái niệm
Lớp là khuôn mẫu mô tả đối tượng, bao gồm
các thuộc tính và các phương thức của đối
tượng.
56
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
II. Khai báo lớp
Khi mô tả lớp phải xác định được: dữ liệu và
phương thức của lớp
Dữ liệu: là các thành phần dữ liệu tạo thành lớp,
mô tả các thuộc tính của dữ liệu
Phương thức: là các thao tác, hành động được
thực hiện trên đối tượng
57
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Cú pháp khai báo lớp:
<modifier> class <class_name>
{
//Khai báo dữ liệu của lớp
//Khai báo phương thức của lớp
}
Trong đó:
<modifier>: xác định thuộc tính của lớp, có thể nhận các
giá trị: public, final, abstract
<class_name>: tên của lớp cần định nghĩa
Khai báo dữ liệu: liệt kê các thành phần dữ liệu của lớp,
được mô tả như khai báo biến
Khai báo phương thức: liệt kê các phương thức của lớp,
được mô tả như khai báo hàm và khai báo phương thức
58
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Ví dụ:
class HCN
{
public int a;
public int b;
public int dientich( )
{ return (a*b); }
public int chuvi( )
{ return (a+b)*2; }
public static void main( String arg[])
{
…
}
}
59
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Lưu ý:
Các thành phần của một lớp được chia làm
ba nhóm cơ bản: private, protected, public
Để phân loại từng thành phần vào các nhóm
chỉ việc khai báo tên các từ khoá đó phía
trước từng thành phần
60
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
III. Định nghĩa hàm – Phương thức
Khái niệm:
Hàm trong Java là các khối lệnh thực hiện các
chức năng riêng biệt => Hàm luôn gắn liền vào các
lớp đối tượng nên hàm trong java được gọi là
phương thức
Cú pháp:
<access_specifier> <modifier> <datatype> <name_function> (parameter)
{
…..//nội dung định nghĩa phương thức
}
61
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
Trong đó:
<access_specifier>: chỉ định cách thức
truy nhập vào phương thức dùng để giới
hạn khả năng truy cập từ bên ngoài vào
phương thức được định nghĩa. Có thể nhận
các giá trị: private, protected, public
private: riêng tư - chỉ có thể được truy nhập được
nhờ các phương thức public trong cùng lớp
protected: cho phép các lớp mở rộng(kế thừa) có
thể truy nhập tới các phương thức này
public: phương thức có thể truy xuất từ mọi nơi và
mọi lúc
62
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
<modifier>: xác định thuộc tính cho các phương
thức, có các giá trị sau:
static: cho phép phương thức được gọi đến mà không cần
đối tượng, phương thức này chỉ được sử dụng từ các dữ liệu
và phương thức tĩnh khác
abstract: ngụ ý phương thức không có mã trong đó, sẽ được
bổ sung ở các lớp sau
final: phương thức được bảo vệ không cho các lớp dẫn xuất
khai báo và định nghĩa lại
native: chỉ ra rằng phần thân hàm có thể được viết bằng
một ngôn ngữ khác java (C, C++,…), phương thức này chỉ
có tên và khối lệnh rỗng
synchronized: đảm bảo dữ liệu không bị sau lạc khi dùng
cùng lúc hai phương thức truy cập một DL
63
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
<datatype>: xác định kiểu mà kết quả
phương thức trả lại( int, float,…), không có
giá trị trả về thì dùng kiểu void
<name_function>: tên của phương thức
được định nghĩa
<parameter>: xác định và chứa các đối số
của phương thức, đối số được mô tả như khai
báo biến. Các đối số phân cách nhau bằng
dấu phẩy
64
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Ví dụ:
class callmethod
{
public static int S_Hinhvuong( int x)
{
return x*x;
}
public static void main(String arg[])
{
int canh=5, s;
s = S_Hinhvuong( canh );
System.out.println( “Dien tich:” + s );
}
}
65
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
IV. Phương thức khởi tạo lớp
Là phương thức dùng để gán các giá trị ban
đầu và tạo ra đối tượng cụ thể => phương
thức sẽ được gọi đến khi chương trình tạo ra
một đối tượng mới thông qua toán tử new
Đặc điểm phương thức khởi tạo:
Phương thức khởi tạo trùng tên với tên của lớp
Phương thức không có kiểu trả về
Một lớp có thể có nhiều phương thức khởi tạo
66
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
•Ví dụ:
Xây dựng lớp HCN. AD tạo một HCN và in ra diện tích HCN
…
class HCN
{
private int a;
private int b;
HCN ( int aa, int bb)
{
a = aa; b = bb;
}
int dientich()
{ return a*b; }
static public void main()
{
HCN x = new HCN(4,5);
int dt;
dt = x.dientich();
system.out.println( “Dien tich HCN:” + dt );
}
}
67
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
*Chú ý:
Nếu một lớp không có cấu tử, Java sẽ gán
cho lớp một cấu tử mặc định khởi tạo các
dữ liệu của lớp các giá trị mặc định tương
ứng với kiểu dữ liệu
Một lớp luôn chứa một con trỏ this, con trỏ
này được sử dụng trong khi chạy và tham
khảo đến bản thân của lớp chứa chính con
trỏ đó
68
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
Ví dụ:
class HCN
{
private int a;
private int b;
HCN ( int aa, int bb)
{
this.a = aa; this.b = bb;
}
int dientich( )
{
return a*b;
}
…
}
69
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
V. Sự kế thừa
Kế thừa là cơ chế cho phép tạo ra lớp mới
dựa vào lớp đã biết => các vùng dữ liệu và
phương thức của lớp cũ sẽ trở thành thành
phần của lớp mới
70
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Cú pháp định nghĩa lớp kế thừa
<modifier> class class_new extends class_old
{
…
//Định nghĩa các thành phần lớp mới
}
Trong đó:
modifier: xác định thuộc tính của lớp được kế
thừa, có các giá trị: public, final, abstract
class_new: là tên lớp mới được định nghĩa
class_old: là tên lớp được kế thừa, là lớp đã có
71
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Chú ý:
Trong lớp dẫn xuất để sử dụng các thành
phần của lớp cơ sở sử dụng từ khóa super
Trong Java bạn không cần phải giải thích
một phương thức là có tính chất ảo (virtual)
vì đây là một ngầm định. Nếu bạn không
muốn một chức năng là ảo thì bạn cần đưa
ra một lời kết (lời gọi) là final.
72
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
V. Lớp trừu tượng
Là lớp được định nghĩa mà chưa xác định các
vùng dữ liệu và phương thức của nó => Các
thành phần dữ liệu và phương thức của lớp
cụ thể sẽ được khai báo ở lớp dẫn xuất
Để khai báo lớp trừu tượng thêm từ khóa
abstract vào trước khai báo lớp
Ví dụ:
abstract class X
{
…
}
73
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
VI. Lớp String:
Là lớp được định nghĩa sẵn của Java để cho
phép làm việc với các dữ liệu chuỗi
Các phương thức của lớp String:
charAt(i):trả về ký tự tại vị trí thứ i của chuỗi
startWith(st): kiểm tra một chuỗi xem có bắt
đầu bằng một chuỗi xác định ko, kết quả trả lại
kiểu Boolean
endWith(st): kiểm tra một chuỗi xem có kết
thúc bằng một chuỗi xác định không
copyValueOf(name, start, num): trả về chuỗi
con trích từ chuỗi cho trước
74
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
toCharArray() : nhận một chuỗi, chuyển đổi và
trả về một mảng ký tự
indexOf(st) : trả về chỉ mục của một ký tự hoặc
một chuỗi ký tự con trong một chuỗi cho trước.
toUpperCase() : đổi chữ thường trong chuỗi
thành chữ hoa
toLowerCase() : đổi chữ hoa trong chuỗi thành
chữ thường
trim(st): cắt bỏ khoảng trắng trong đối tượng
chuỗi
75
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
replace(char oldchar, char newchar) : thay
thế tất cả các ký tự oldchar trong chuỗi thành
newchar
equals(st) : so sánh nội dung hai đối tượng chuỗi
concat() : nối hai chuỗi
valueOf() : trả về một chuỗi số được đổi từ số
đưa làm đối số
length(): trả về độ dài của chuỗi
lastIndexOf(char ch (String str), int
fromIndex) : trả về vị trí (index) xuất hiện sau
cùng của một ký tự hay một chuỗi con
76
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
CHƯƠNG IV:
LẬP TRÌNH
JAVA APPLET
77
I. Khái niệm:
Applet là một dạng chương trình của Java có
thể chạy trong trình duyệt Web.
Tất cả các Applet được viết đều là lớp con
của lớp Applet => Để tạo Applet phải import
hai gói sau:
java.applet
java.awt
78
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
II. Cấu trúc một Applet
Một Applet khi cài đặt có thể trải qua bốn sự
kiện chính:
Tự khởi tạo(init)
Có thể tự khởi động(start)
Có thể tự dừng(stop)
Tự dọn dẹp trước khi thoát(destroy)
79
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Các phương thức của Applet
Phương Ý nghĩa
thức
Được gọi trong quá trình khởi tạo
Applet => tạo ra đối tượng cung
init() cấp cho Applet. Phương thức dùng
tải hình ảnh đồ họa, khởi tạo biến
và đối tượng.
Được gọi khi Applet bắt đầu thực
thi => Khi Applet khỏi tạo hoàn tất
start() thì Applet được khởi động. Phương
thức dùng để khởi tạo lại Applet
sau khi ngừng trước đó.
80
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
Phương thức Ý nghĩa
Destroy Stop
Creation Starting
Init
82
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
Ngoài các phương thức trên còn có phương
thức paint()và repaint():
paint(): là phương thức hiện thị cơ bản, thường
dùng paint() để biểu diễn các hoạt động cần thiết
trên trang web => hiển thị các đường thẳng, text,
hình ảnh trên nền trang web. Phương thức xảy ra
nhiều lần trong suốt quá trình Applet tồn tại (khỏi
tạo, di chuyển từ cửa sổ này sang cửa sổ khác,
thay đổi vị trí trên màn hình)
repaint(): phương thức được dùng khi cần cập
nhất lại nội dung của trang web
83
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Ví dụ:
import java.awt.*;
import java.applet.*;
public Myapplet extends Applet
{
int num;
public void init()
{ num=6; }
public void paint(Graphics g)
{
g.drawString(“Hello Appet. Chapter:”+num,70,80);
}
}
84
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
III. Khác nhau giữa Application và Applet
Để thực thi các Application thì dùng trình
thông dịch java, Applet có thể chạy được
trên trình duyệt(có hỗ trợ Java) hay sử dụng
công cụ AppletViewer
Quá trình thực thi Application bắt đầu từ
phương thức main() còn applet thì không
thực hiện như vậy(không có hàm main)
Các Application dùng System.out.print để
hiển thị kết quả ra màn hình, Applet sử dụng
drawString() để xuất ra màn hình
Chú ý: một chương trình Java có thể vừa là
Application và vừa là Applet
85
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
IV. Lớp Graphics – Giao diện đồ họa:
Một thành phần đồ họa(GUI- Graphic Unit
Interface) là một đối tượng hình ảnh mà
người dùng tương tác với nó qua chuột hoặc
bàn phím(đường thẳng, nút bấm, textbox,…)
Để tạo các GUI sử dụng gói các lớp có sẵn
trong gói java.awt
86
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
1. Vẽ chuỗi, ký tự:
drawString(String str, int x, int y) =>
Vẽ chuỗi str lên màn hình tại tọa độ
(x,y)
drawChars(char array[], int of, int length, int x, int y)
Array: là mảng các ký tự được viết ra
Of: vị trí bắt đầu, nơi ký tự bắt đầu được
vẽ ra
Length: số các ký tự được vẽ ra màn
hình
x và y: là tọa độ trên màn hình được vẽ
ra
87
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
2. Vẽ đường thẳng và hình Oval
drawLine(int x1, int y1, int x2, int y2) =>
Vẽ đường thẳng lên màn hình
x1, y1: tọa độ điểm đầu đoạn thẳng
x2, y2: tọa độ điểm cuối đoạn thẳng
drawOval(int x, int y, int width, int height)
=> vẽ hình Oval lên màn hình
x, y: tâm của hình Oval
Width: độ dài cạnh chiều rộng(ngang)
Height: độ dài cạnh chiều cao(dọc)
88
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
setColor(Color c) => Đặt màu để bắt đầu
thực hiện vẽ hay tô màu
C: màu được đặt để tô hoặc vẽ (Color.red,
Color.blue, Color.green,…)
fillOval(int x, int y, int width, int height) =>
Tô màu hình ô val, màu được xác định bởi
hàm setColor
x, y: tâm của hình Oval
Width: độ dài cạnh chiều rộng(ngang)
Height: độ dài cạnh chiều cao(dọc)
89
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
3. Vẽ hình chữ nhật và HCN bo góc
drawRect( int x, int y, int width, int height)
=> Vẽ hình chữ nhật lên màn hình
x,y: tọa độ đỉnh góc trên bên trái của HCN
Width: độ dài chiều rộng HCN
Height: độ dài chiều cao HCN
Ví dụ:
Font f1=new Font(“SansSerif”, Font.ITALIC,16);
g.setFont(f1);
91
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
V. Các đối tượng đồ họa:
Chú ý:
Để hiển thị các đối tượng đồ họa trong AppletPhải
khai báo ở sự kiện init()
Gói thư viện sử dụng: java.awt.*
92
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
1. Nhãn - Label:
Được dùng để tạo nhãn để hiển thị một chuỗi văn
bản
Khai báo:
Label label_name;
Khỏi tạo:
Container.add(label_name);
Các phương thức:
getText()
setText(String text)
getAlignment()
setAlignment(int alignment)
93
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
2. Ô văn bản – TextField:
Dùng để tạo ô nhập một chuỗi văn bản
Khai báo:
TextField Textfield_name;
Khởi tạo:
add(Textfield_name);
Phương thức:
String getText()
void setText(String st)
94
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
3. Vùng văn bản – TextArea:
Dùng để tạo ra một vùng có thể hiện thị và xử lý
nhiều dòng văn bản
Khai báo:
TextArea Textarea_name;
Cấu tử: TextArea(), TextArea(int rows,int cols),…
Khởi tạo:
add(Textarea_name);
Phương thức:
Button Button_name;
Khởi tạo:
add(Button_name);
Phương thức:
String getLabel()
setLabel(String Label)
setEnable( boolean b)
setVisible( boolean b)
96
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
5. Hộp chọn lựa – CheckBox:
Dùng để tạo ra một nút lựa chọn để thực hiện lựa chọn một
tính chất, một Checkbox luôn có dòng văn bản để chỉ định ý
nghĩa
Khai báo:
Checkbox Checkbox_name;
Khởi tạo:
add(Checkbox_name);
Phương thức:
String getLabel()
setLabel(String Label)
boolean getState()
void setState(boolean b)
97
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
6. Nhóm lựa chọn – CheckBoxGroup:
Dùng để tạo ra một nhóm các nút lựa chọn có
liên quan đến nhau và đặt trong một nhóm
Khai báo:
CheckboxGroup Checkboxgroup_name;
Ví dụ :
CheckboxGroup cbg;
Checkbox ck1,ck2,ck3;
ck1.setCheckboxGroup(cbg);
ck2.setCheckboxGroup(cbg)
ck3.setCheckboxGroup(cbg);
98
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
7. Danh sách chọn lựa – List:
Cho phép tạo ra tập các mục để lựa chọn. Có hai
loại LIST là: single selection và multi selection
Khai báo:
99
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
8. Hộp chọn lựa – Choice:
Cung cấp một danh sách các mục từ đó người
dùng có thể lựa chọn một mục
Khai báo:
Choice choice_name=new Choice();
VD: Choice ch = new Choice();
Các phương thức:
addItem(String item)
add(String item,int index)
String getItem(int index)
int getItemCount()
int getSelectIndex()
String getSelectedItem()
insert(String item, int index)
remove(int index), remove(String item)
100
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
9. Thanh cuộn – ScrollBar:
Tạo một thanh trượt để cuộn nội dung văn bản
Khai báo:
Scrollbar scrollbar_name;
VD: Scrollbar sbar;
sbar=new ScrollBar(Scrollbar.VERTICAL);
Các phương thức:
setMaximum(int value)
int getMaximum()
setMinimum(int value)
int getMinimum()
setValue(int value)
int getValue()
101
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
VI.Quản lý bố cục
Để sắp xếp các thành phần giao diện trong
Applet dùng trình quản lý bố cục => Các
thành phần được đặt trong một Container
và được sắp xếp tùy trình quản lý bố cục
được sử dụng.
Các loại bố cục:
Bố cục lưu chuyển – FlowLayout
Bố cục viền – BorderLayout
Bố cục thẻ - CardLayout
Bố cục khung kẻ ô - GridLayout
Bố cục túi lưới – GridBag
Để thay đổi bố cục thông qua setLayout()
102
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
VII. Lập trình xử lý sự kiện
Là cho phép viết các đoạn chương trình để
xử lý các thao tác khi thực hiện bấm chuột
và bàn phím để thực hiện một thao tác tương
ứng nào đó.
Sự kiện được chia làm hai loại:
Sự kiện xử lý với chuột
Sự kiện xử lý với bàn phím
103
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Cơ chế xử lý sự kiện:
Khi người dùng thực hiện một thao tác với
chuột và bàn phím thì tất cả các hành động
đó phát sinh một sự kiện tương ứng.
Các sự kiện được phân chia thành các lớp sự
kiện khác nhau(MouseEvent, KeyEvent,…).
Để nắm bắt được sự kiện thì chương trình
cần cài đặt một bộ lắng nghe sự kiện (Event
Handler) cho một đối tượng và nắm bắt sự
kiện xảy ra trên đó => Sau đó gọi đến bộ
quản lý sự kiện (Event Listeners) tương ứng
và bộ quản lý này cung cấp các phương thức
để điều khiển sự kiện
104
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Các lớp sự kiện cơ bản
ActionEvent: khi một nút được nhấn, một mục
danh sách được nhấp đúp hoặc lệnh được chọn
AdjustmentEvent: khi thanh cuộn được dùng
ComponentEvent: khi một thành phần được
chỉnh kích cỡ, dời, che, hiện
FocusEvent: khi một thành phần mất hoặc lấy lại
forcus bàn phím
WindowEvent: khi cửa sổ được kích hoạt, đóng,
mở hoặc thoát
TextEvent: khi giá trị của một trường hay một
vùng văn bản bị thay đổi
MouseAvent: khi chuột được gọi, nhắp, kéo, nhả
KeyAvent: khi có các thao tác với bàn phím
105
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Các tình huống xử lý với chuột:
Lớp biến cố MouseListener:
public void mouseEntered(MouseEvent event)
public void mouseExited(MouseEvent event)
public void mousePressed(MouseEvent event)
public void mouseReleased(MouseEvent event)
Lớp biến cố MouseMotionListener:
public void mouseDragged(MouseEvent event)
public void mouseMoved(MouseEvent event)
106
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Các tình huống xử lý với bàn phím:
public void keyPressed(keyEvent event)
public void keyReleased(keyEvent event)
public void keyTyped(keyEvent event)
107
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Ví dụ:
Tạo một Applet trong đó có:
Hai ô văn bản cho phép nhập độ dài hai cạnh của
HCN
Một ô cho phép hiển thị chu vi và diện tích HCN
tương ứng
Yêu cầu: nhập chiều dài và rộng HCN. Tính diện
tích và chu vi tương ứng
108
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
public class Hcn extends Applet implements ActionListener
{
TextField a,b;
TextArea kq;
Label nhan1,nhan2,nhan3;
public void init()
{
resize(250,200);
a = new TextField(“0”);
b = new TextField(“0”);
kq=new TextArea(5,30);
nhan1=new Label(“Chieu dai:");
nhan2=new Label(“Chieu rong:");
nhan3=new Label(“Ket qua:");
add(nhan1); add(a);
add(nhan2); add(b);
add(nhan3); add(kq);
a.addActionListener(this);
b.addActionListener(this);
}
109
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
public void paint (Graphics g)
{
String s1,s2;
int aa,bb;
double cv, dt;
s1 = a.getText(); aa = Integer.parseInt(s1);
s2 = b.getText(); bb = Integer.parseInt(s2);
cv = (aa+bb)*2;
dt = aa*bb;
s1 = String.valueOf(cv);
kq.setText("Chu vi la:"+s1);
s2 = String.valueOf(dt);
kq.append("Dien tich la:"+s2);
}
public void actionPerformed(ActionEvent event)
{
repaint();
}
} 110
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
VIII.Giới hạn của Applet:
Giới hạn về bảo mật:
Một applet không được nạp các thư viện hay các
phương thức sử dụng mã nguồn
Không được đọc và ghi lên các tập tin của máy
đang chạy chúng
Không được thực hiện các kết nối mạng trừ kết
nối với máy đang chạy chúng
Không được khởi động bất kỳ chương trình nào
trên máy đang chạy
Không được đọc bất kỳ tính chất nào của hệ thống
Cửa sổ mở ra của Applet sẽ khác với các cửa sổ do
các ứng dụng mở
111
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
Khả năng của Applet:
Applet có thể tạo âm thanh, hình ảnh,…
Applet có thể tạo kết nối đến máy đang chạy nó
Khi chạy một trình duyệt web, Applet dễ dàng
dùng các siêu văn bản để hiển thị
Applet có thể gọi đến các phương thức toàn cục
của các applet khác trên cùng trang web
Không nhất thiết là các applet sẽ ngừng lại khi ta
thoát khỏi các trang web chứa nó
112
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
CHƯƠNG VII:
SWING
113
I. Giới thiệu
Swing là một bộ các lớp cung cấp các thành
phần mạnh và linh hoạt hơn AWT.
Các thành phần trong Swing:
Nút nhấn, hộp kiểm tra, nhãn,..
Bảng thẻ, bảng cuộn, cây và bảng
Các thành phần quen thuộc (nút nhấn, hộp
kiểm tra, nhãn,…) trong swing có nhiều khả
năng hơn và dễ sử dụng hơn
114
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
II. Các lớp thành phần của swing
Lớp Diễn giải
JLabel Lớp quản lý nhãn của Swing
JRadioButton Lớp quản lý nút Radio
ImageIcon Lớp quản lý biểu tượng
JApplet Lớp làm việc Applet
Jbutton Lớp quản lý button
JCheckbox Lớp quản lý hộp kiểm tra
JCombobox Lớp quản lý hộp danh sách
JScrollPane Lớp tóm lược cửa sổ cuộn
JTree Lớp tóm lược điều khiển cây cơ sở
JTextField Lớp quản lý văn bản
JTabbedPane Lớp quản lý điều khiển bảng cơ sở
115
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
CHƯƠNG VII:
LẬP TRÌNH MẠNG
116
I. Giới thiệu
Các máy tính chạy trên Internet giao tiếp
với nhau sử dụng giao thức TCP và UDP
Lập trình mạng là Viết chương trình Java để
giao tiếp thông qua mạng
Để thực hiện giao tiếp mạng trong Java cung
cấp lớp trong gói java.net => Lớp này cung
cấp các giao tiếp mạng độc lập
Các máy tính chạy trên Internet giao tiếp
với nhau phải sử dụng giao thức xác định.
Các giao thức để gửi dữ liệu qua mạng:
TCP - Transmission Control Protocol
UDP - User Datagram Protocol
117
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
II. TCP
Giao thức TCP cho phép gửi từng gói dữ liệu đi,
nơi nhận phải có trách nhiệm thông báo và kiểm
tra xem dữ liệu đã đến đủ hay chưa, có lỗi hay
không có lỗi.
Trước khi chuyển dữ liệu bao giờ cũng có sự kết
nối giữa máy gửi và máy nhận => Do đó đảm
bảo dữ liệu được truyền chính xác và luôn duy
trì kết nối.
TCP cung cấp một kênh điểm – điểm cho ứng
dụng giao tiếp tin cậy => TCP đảm bảo dữ liệu
đó gửi từ một người ở đầu kết nối đến được đầu
cuối kết nối theo đúng thứ tự được gửi, nếu
không gửi được thì lỗi sẽ thông báo
118
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
Truyền dữ liệu theo TCP thường áp dụng cho
các dịch vụ như truyền tập tin, dịch vụ
truyền hình, các dịch vụ trên Internet đòi hỏi
độ chính xác cao,…
119
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
III. UDP
Giao thức UDP cung cấp cho giao tiếp không
cần đảm bảo giữa hai ứng dụng trên mạng,
không có sự kết nối trước giữa nơi gửi và nơi
nhận, dữ liệu gửi đi mặc định rằng máy tính
ở đầu nhận luôn ở trạng thái sẵn sàng để
tiếp nhận từ đầu gửi.
Nếu dữ liệu gửi đến bị lỗi trong quá trình
truyền hay không nhận được đầy đủ thì giao
thức UDP không có thông tin phản hồi báo lại
UDP thường được dùng trong các ứng dụng
không đòi hỏi sự chính xác cao như: dịch vụ
thông báo giờ, tỷ giá hay các dịch vụ nhắn
tin,…
120
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
IV. Khái niệm cổng
Máy tính có một kết nối vật lý vào mạng =>
Tất cả các dữ liệu đến máy tính cụ thể nào
đó đều thông qua kết nối đó.
Dữ liệu có thể gửi đến cho nhiều ứng dụng
khác nhau chạy trên máy tính => Làm thế
nào để biết ứng dụng nào để gửi dữ liệu đi
=> Thông qua sử dụng cổng
Cổng là một số nguyên dương có thể nhận
giá trị từ 1 đến 16283
121
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
Máy chủ sẽ quy định cổng được sử dụng cho
mỗi loại dịch vụ, thông tin giữa máy khách
(client) và máy chủ(server) phải sử dụng
cổng tương ứng nhau thì mới trao đổi dữ liệu
được với nhau.
Khi tự xây dựng một ứng dụng làm dịch vụ
trên máy chủ phải chọn một số cổng có giá
trị khác với giá trị cổng mà các dịch vụ nổi
tiếng đã sử dụng
FTP 21 Telnet 23
HTTP 80 Finger 79
SMTP 25
122
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
V. Giao tiếp mô hình khách – chủ
Các dịch vụ hỗ trợ trên Internet như e-mail, nhóm
tin, chuyển tập tin, đăng nhập từ xa,… đều được tổ
chức và kiến trúc theo mô hình khách/chủ (mô hình
Client/Server).
Cơ chế thực hiện: Các chương trình ở máy
khách(client)(như trình duyệt hay chương trình gửi
nhận email …) sẽ tạo ra kết nối với một máy chủ ở
xa(server) sau đó gửi yêu cầu đến máy chủ =>
Sau đó các chương trình trên máy chủ(như Web
Server hay Mail Server …) sẽ xử lý các yêu cầu này
và gửi kết quả ngược trả về cho máy khách
Thông thường một dịch vụ máy chủ phục vụ cho
nhiều máy khách
123
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
VI. Lập trình thông qua Socket
Trước khi yêu cầu một dịch vụ trên máy chủ
thực hiện điều gì đó thì máy khách (client)
phải có khả năng kết nối được với máy chủ,
quá trình kết nối này được máy thực hiện
thông qua cơ chế gọi là Socket( cơ chế ổ
cắm) Kết nối giữa máy khách và chủ
tương tự như việc cắm phích điện vào ổ
cắm ( trong đó: máy khách được coi như
phích cắm điện và máy chủ được coi như ổ
cắm điện, một ổ cắm có thể được cắm vào
đó nhiều phích điện khác nhau tương đương
với một máy chủ có thể kết nối nhiều máy
khách)
124
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
Việc kết nối theo cơ chế Socket cần biết hai
thông tin chủ yếu:
Địa chỉ của máy cần kết nối
Số hiệu cổng của chương trình dịch vụ
Java cung cấp lớp Socket ( “phích cắm điện”
cho máy khách) và ServerSocket( “ổ cắm
điện” đặt trên máy chủ) để hỗ trợ cho lập
trình Client/Server. Hai lớp này được đặt
trong gói thư viện Java.net
Lưu ý: Lớp Socket có thể dùng chung cho cả
máy khách và máy chủ nhưng thông thường
vẫn dùng lớp ServerSocket để thực hiện
quản lý kết nối riêng ở máy chủ lớn
125
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
VII. Lớp InetAddress
Là lớp được dành riêng cho việc quản lý địa
chỉ theo tên và theo số của một địa chỉ
Internet.
Lớp InetAddress cung cấp các phương thức
thông dụng nhất để chuyển đổi và truy xuất
địa chỉ IP
126
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Các phương thức cơ bản
public InetAddress getLocalHost(): trả về đối
tượng InetAddress là địa chỉ của máy cục bộ (Local
Host)
public InetAddress getByName(String host):
phương thức nhận địa chỉ của một máy bằng kiểu
chuỗi String và trả về đối tượng kiểu InetAddress
thay mặt cho địa chỉ máy
public InetAddress[] getAllByName( String host):
phương thức nhận địa chỉ của một máy bằng kiểu
chuỗi và trả về tất cả các đối tượng InetAddress
thay mặt cho địa chỉ máy
127
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
public byte[] getAddress(): trả về địa chỉ IP của
đối tượng InetAddress dưới dạng một dãy các byte,
vị trí byte cao nhất nằm ở byte 0
public String getHostAddress(): trả về địa chỉ IP
của đối tượng InetAddress dưới dạng một chuỗi
được định dạng phân làm 4 nhóm %d.%d.%d.%d
(Ví dụ: “172.16.11.12”)
128
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
*Ví dụ: Viết CT lấy thông tin máy chủ
import java.net.*;
public class AddrLookupApp {
public static void main(String args[]) {
try {
if(args.length != 1) {
System.out.println("Usage: java AddrLookupApp <HostName>");
}
/* Lấy về đối tượng InetAddress chứa thông tin địa chỉ máy chủ */
InetAddress host=InetAddress.getByName(args[0]);
String hostName = host.getHostName();
/* Xuất các thông tin ra màn hình */
System.out.println(“Host name:” + hostName);
System.out.println(“IP address:” + host.getHostAddress());
}
catch(UnknownHostException e)
{ System.out.println(“Ko co dia chi"); }
}
}
129
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
VIII. Lớp Socket
Lớp Socket dùng tạo kết nối từ phía máy
khách tới máy chủ
130
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
*. Các phương thức lớp Socket:
public Socket( String host, int port): tạo ra
một Socket kết nối máy có tên theo địa chỉ
host và số cổng port
public Socket( InetAddress add, int port): tạo
ra một Socket kết nối từ địa chỉ là add và số
cổng port
public Socket(String host,int port, boolean stream):
tạo ra một Socket kết nối theo địa chỉ host và
số cổng port, tham số stream để quy định kết
nối theo TCP( stream=true) hay
UDP( stream=false)
131
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
InputStream getInputStream(): lấy về luồng
nhập để máy khách có thể đọc dữ liệu trả về từ
phía máy chủ
OutputStream getOutputStream(): lấy về
luồng xuất để máy khách có thể ghi dữ liệu gửi
đến máy chủ
InetAddress getInetAddress(): lấy địa chỉ kết
nối socket của máy chủ
int getPort(): lấy về số cổng dùng kết nối của
máy chủ
synchoronized void close(): cắt đứt kết nối với
máy chủ
132
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
IX. Lớp ServerSocket:
Lớp ServerSocket dùng tạo kết nối từ phía
máy chủ với các máy khách.
Đối tượng ServerSocket được tạo ra trên
máy chủ và lắng nghe những kết nối từ phía
máy khách gửi đến theo một số cổng định
trước
133
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
*. Các phương thức cơ bản:
public ServerSocket( int port): port là số
hiệu cổng mà đối tượng ServerSocket phải
lắng nghe để nhận biết những kết nối từ phía
máy khách gửi đến
Socket accept(): phương thức dừng lại chờ
đợi cho đến khi nhận được thông tin kết nối
sẽ trả về đối tượng Socket của máy khách
nơi có yêu cầu nối vào máy chủ
public void close(): phương thức để máy chủ
cắt đứt mọi kết nối với các máy khách
134
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
X. Lớp DatagramSocket
Lớp này được dùng để chuyển đi một gói dữ
liệu( biểu diễn bằng đối tượng
DatagramPackage) theo giao thức UDP
Dữ liệu được gửi đi không bảo đảm được
nhận đầy đủ và có thể bị lỗi trên đường
truyền( cơ chế dùng lớp DatagramSocket
không an toàn bằng lớp Socket)
135
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
*. Các phương thức lớp DatagramSocket
public DatagramSocket(): phương thức
khởi dựng để tạo kết nối UDP
public DatagramSocket( int port): phương
thức khởi dựng để tạo kết nối UDP với số
hiệu cổng port
public void synchronized
send( DatagramPackage p): phương thức
gửi gói dữ liệu p đi
public void synchronized
receive( DatagramPackage p): phương thức
nhận gói dữ liệu p về
public void synchronized close(): phương
thức đóng kết nối
136
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
XI. Lớp DatagramPackage
Lớp này được dùng cho một gói dữ liệu gửi đi
trên mạng theo kết nối DatagramPackage.
Mỗi gói có thể chứa các thông tin sau:
Dữ liệu
Chiều dài gói
Các địa chỉ IP
Số cổng gói dữ liệu được gửi đi
137
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
*. Các phương thức lớp DatagramPackage
public DatagramPackage( byte buf[], int
len): phương thức khởi dựng để tạo ra gói dữ
liệu chứa trong bộ đệm buf[] và chiều dài
gói dữ liệu được tạo ra là len
public InetAddress getAddress(): trả về địa
chỉ chứa trong gói dữ liệu
public byte[] getData(): trả về dữ liệu thật
sự chứa trong gói được gửi
public int getLength(): trả về kích thước
hay chiều dài gói dữ liệu
public int getPort(): trả về số hiệu cổng
chứa trong gói
138
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
X. Cách chạy ứng dụng Client/Server:
Viết ứng dụng Client và thực hiện biên dịch
Viết ứng dụng Server và thực hiện biên dịch
Mở hai cửa sổ dòng lệnh DOS để chạy cho
hai ứng dụng:
Chạy ứng dụng Server bằng lệnh sau:
java Server
Chạy ứng dụng Client bằng lệnh sau:
java Client 127.0.0.1
139
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
XI. Xây dựng chương trình máy khách:
Các chương trình ở máy khách thường thực
hiện các nhiệm vụ:
Kết nối với máy chủ
Nhận dữ liệu hay yêu cầu do người dùng nhập từ
bên ngoài
Gửi dữ liệu hay yêu cầu đến máy chủ để xử lý
Nhận kết quả trả lại từ máy chủ và trình bày kết
quả nhận được từ máy chủ cho người dùng xem
140
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
XII. Xây dựng chương trình máy chủ:
Các chương trình ở máy chủ thường thực
hiện các nhiệm vụ:
Lắng nghe các kết nối từ máy khách gửi đến
Tiếp nhận những yêu cầu từ phía máy khách
Xử lý các yêu cầu của phía máy khách
Gửi kết quả lại cho máy khách
141
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
XI. Ví dụ áp dụng sử dụng giao thức TCP
Viết ứng dụng Client và Server.
Yêu cầu:
Client gửi một chuỗi đến Server
Server nhận chuỗi và đảo ngược chuỗi đó
Server gửi lại Client chuỗi đã đảo ngược
142
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* ECHOCLIENT.JAVA
import java.net.*;
import java.io.*;
public class EchoClient
{
public static void main(String args[])
{
if (args.length !=1)
{
System.out.println("Usage: java EchoClient<serverAddr>");
return;
}
ClientConnect client = new ClientConnect(args[0],3456);
client.requestServer();
client.shutdown();
}
}
143
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
class ClientConnect
{
Socket connection;
DataOutputStream out;
BufferedReader in;
public ClientConnect(String destination,int port)
{
try
{
connection = new Socket(destination,port);
in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
out= new DataOutputStream(connection.getOutputStream());
System.out.println("Ket noi toi Server tai cong 3456.");
}
catch (Exception e)
{
System.out.println(e);
}
}
144
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
public void requestServer()
{
BufferedReader keyboardInput = new BufferedReader(new InputStreamReader(System.in));
boolean finished=false;
do
{
try
{
System.out.print("Gui(Send),Nhan(Receive) hoac Thoat(Quit) (S/R/Q):");
System.out.flush();
String line = keyboardInput.readLine();
if(line.length()>0)
{
line=line.toUpperCase();
switch (line.charAt(0))
{
case 'S':
String sendLine = keyboardInput.readLine();
out.writeBytes(sendLine);
out.write(13);
out.write(10);
out.flush();
break;
145
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
case 'R':
int inByte;
System.out.print(">>>>");
while ((inByte = in.read()) != '\n')
System.out.write(inByte);
System.out.println();
break;
case 'Q':
finished=true;
break;
default:
break;
} //Đóng của Switch
} //Đóng của If
} //Đóng của Try
catch (Exception e)
{
System.out.println(e);
}
} while(!finished);
}
146
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
public void shutdown()
{
try
{
connection.close();
}
catch (IOException ex)
{
System.out.println("Loi nhap xuat khi thuc hien dong cong");
}
}
} //Đóng của lớp ClientConnect
147
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* ECHOSERVER.JAVA
import java.net.*;
import java.io.*;
public class EchoServer
{
public static void main(String args[])
{
try
{
ServerSocket server = new ServerSocket(3456);
int localPort = server.getLocalPort();
System.out.println("Echo Server dang lang nghe tai cong "+localPort+".");
Socket client = server.accept();
String destName = client.getInetAddress().getHostName();
int destPort = client.getPort();
System.out.println(“Ket noi toi "+destName+" tai cong "+destPort+".");
BufferedReader inStream=new BufferedReader(new InputStreamReader(client.getInputStream()));
DataOutputStream outStream = new DataOutputStream(client.getOutputStream());
boolean finished = false;
148
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
do
{
String inLine = inStream.readLine();
System.out.println("Nhan duoc: "+inLine);
if(inLine.equalsIgnoreCase("quit")) finished=true;
String outLine=new EchoString(inLine.trim()).getString();
for(int i=0;i<outLine.length();++i)
outStream.write((byte)outLine.charAt(i));
outStream.write(13);
outStream.write(10);
outStream.flush();
System.out.println("Da gui: "+outLine);
} while(!finished);
inStream.close();
outStream.close();
client.close();
server.close();
} //Đóng của Try
catch (IOException e)
{
System.out.println(e);
}
} //Đóng của hàm main
} //Đóng của EchoServer
149
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
class EchoString
{
String s;
public EchoString(String in)
{
int len = in.length();
char outChars[] = new char[len];
for(int i=0;i<len;++i)
outChars[len-1-i]=in.charAt(i);
s = String.valueOf(outChars);
}
public String getString()
{
return s;
}
}
150
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
XII. Ví dụ áp dụng sử dụng giao thức UDP
Viết ứng dụng Client và Server.
Yêu cầu:
Kết nối và trao đổi thông tin giữa máy chủ
và máy khách bằng giao thức UDP
Chương trình ExchangeRateServer phía
máy chủ cung cấp tỷ giá chứng khoán của
ba thị trường Tokyo, NewYork, HongKong
Chương trình ExchangeRateTable phía máy
khách sẽ cập nhật liên tục những thông tin
sau mỗi giây
151
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
ANY QUESTION?
152
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
Yêu cầu tóm tắt kiến thức C++:
Gồm:
Các kiểu dữ liệu cơ bản
Cách khai báo biến, hằng, cấu trúc…
Các cấu trúc điều khiển: if, for, switch, while,…
Xây dựng hàm
Xây dựng lớp, kế thừa, cấu tử,…
153
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
CHƯƠNG IV:
GÓI VÀ GIAO DIỆN
154
Định nghĩa một giao diện
Sử dụng giao diện
Đị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 đặc trưng của gói java.lang
Những đặc trưng của gói java.util
155
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
I. Gói
Là đơn vị tổ chức liên kết các thành phần:
lớp, giao diện, gói con lại với nhau
Gói là một lớp được đóng gói để cho có thể
sử dụng đến khi cần => Gói được coi như
thư viện tham khảo của chương trình
Mỗi gói được tổ chức như một thư mục trong
máy và trong gói bao gồm nhiều lớp, nhiều
giao diện khác nhau
156
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
II. Tạo gói
Đặc điểm tạo gói:
Đoạn mã bắt đầu với phát biểu “package” =>
xác định rằng lớp được định nghĩa trong tập tin là
phần của gói xác định
Mã nguồn của gói phải nằm trong cùng thư mục
và thư mục đó là tên gói đang được định nghĩa
Quy ước tên gói được bắt đầu bằng chữ thường
Các thành phần xuất hiện sau khai báo gói gồm:
các câu lệnh nhập, các câu lệnh định nghĩa lớp
Mỗi lớp trong gói khi tạo xong cần được biên dịch
157
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Các bước tạo gói:
Bước 1: khai báo gói bằng cách dùng cú pháp sau:
package <tên gói>;
Bước 2: sử dụng lệnh import để nhập các gói chuẩn
cần sử dụng.
Bước 3: khai báo và định nghĩa các lớp sẽ nằm trong
gói, tất cả các thành phần của gói đều phải khai báo
là public để có thể được truy cập từ bên ngoài khi
cần sử dụng đến.
Bước 4: Gói được lưu với phân mở rộng .java và
biên dịch các lớp được định nghĩa trong gói bằng
lệnh javac nhưng với tham số -d để cho phép tạo
thư mục trùng với tên gói và đặt tập tin .class vào
thư mục xác định theo cú pháp:
javac -d <tên-thư-mục> tên-tệp.java
158
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Ví dụ:
package mypackage;
public class calculate
{
public double Multi( double x, double y )
{ return (x*y); }
public double Add( double x, double y)
{ return (x+y); }
public double Devide( double x, double y)
{ return (x/y); }
}
159
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Lưu ý:
Mã nguồn của các chương trình sử dụng gói
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
Khi muốn sử dụng gói được định nghĩa dùng
từ khóa import ngay đầu chương trình
160
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Gói và điều khiển truy xuất:
Gói chứa các lớp và các gói con. Java cung cấp
nhiều mức độ truy cập thông qua các lớp, các gói
và các chỉ định truy cập.
Bảng tóm tắt quyền truy cập:
java.io Bao gồm các lớp để trợ giúp cho tất cả các
thao tác nhập và xuất
java.applet Bao gồm các lớp để thực thi applet
163
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
Khai báo giao diện được khai báo gần giống
như khai báo lớp, gồm dữ liệu và phương
thức nhưng:
Các vùng dữ liệu luôn luôn là hằng (final)
Các phương thức là trừu tượng dù không được
khai báo với từ khóa abstract
164
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Cú pháp khai báo giao diện:
[public] interface NameOfInterface [extends InterfaceOld]
{
//Khai báo và định nghĩa các thành phần của giao tiếp
}
Trong đó:
interface: là từ khóa để khai báo
NameOfInterface: tên của giao diện được định nghĩa
InterfaceOld: tên của giao diện đã có được kế thừa
khi cần
Chú ý: Giao diện được lưu trữ với phần mở rộng
là .java và tiến hành biên dịch thông thường
như một chương trình Java
165
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
*Các bước tạo giao diện
Viết đoạn mã chương trình tạo giao diện và
lưu lại với tên *.java
Biên dịch giao diện (javac)
Thực thi giao diện: tạo ra một lớp để thực thi
giao diện theo cú pháp
class <class-name> implements <interface-name>
{…}
Lưu ý:
Tất cả các phương thức trong giao diện có kiểu
public
Các phương thức sẽ được định nghĩa tại lớp thực thi
giao diện
166
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Ví dụ:
// Khai báo một giao diện
public interface Product
{
static final String MAKER = “My Corp”;
static final String PHONE = “08-8425678”;
public int getPrice(int id);
}
//======================================
// Khai báo một lớp mới có cài đặt giao tiếp đã được khai báo
public class Shoe implements Product
{
//Cài đặt lại phương thức của giao tiếp trong lớp
public int getPrice(int id)
{ if (id == 1) return(5);
else return(10)
}
public String getMaker()
{ return(MAKER);
}
}
167
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
IV. Phân luồng và đa luồng:
Thread là một đơn vị hành động của hệ điều
hành, một chương trình có thể chia thành
nhiều thread.
Các thread trong mỗi chương trình sẽ được
thực hiện tuần tự và gần như đồng thời,
chúng được giao tiếp với nhau qua các
interface hay được đồng bộ hóa
(synchronized).
168
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Cách tạo Thread:
Tạo lớp dẫn xuất từ lớp Thread của Java:
Thực hiện khai báo: import java.lang.Thread
Xây dựng lớp:
170
I. Giới thiệu
Ngoại lệ (Exception) là một đối tượng đặc
biệt được tạo ra khi chương trình gặp lỗi
Quá trình xử lý Exception được thực hiện
gồm hai giai đoạn:
Việc trả về ngoại lệ được gọi là throwing
Việc nắm bắt đối tượng trả về của chương trình
được gọi là catching
171
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
II. Mô hình xử lý ngoại lệ:
Mô hình xử lý ngoại lệ của Java được gọi là
mô hình “catch and throw”
Các bước thực hiện của mô hình:
Khingoại lệ xảy ra => Ngoại lệ sẽ bị chặn
Sau đó ngoại lệ sẽ được chuyển đến khối xử lý
tương ứng
Chú ý: Ngoại lệ khi xảy ra phải được xử lý
hoặc thoát khỏi chương trình
172
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Cấu trúc ngoại lệ
try
{
//Đoạn mã có khả năng gây ra ngoại lệ
}
catch ( Exception_01 e1)
{
//Nếu lệnh trong khối try tạo ra ngoại lệ có loại e1 thì thực hiện xử
lý ngoại lệ, nếu không chuyển xuống khối catch tiếp theo
}
…
catch ( Exception_02 e2)
{
//Nếu lệnh trong khối try tạo ra ngoại lệ có loại e2 thì thực hiện xử
lý ngoại lệ, nếu không chuyển xuống khối catch tiếp theo
}
finally
{
//Khối lệnh được thực hiện cho dù ngoại lệ có xảy ra hay không
}
173
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Trong đó:
Exception_01, Exception_02,…: là tên
các ngoại lệ có khả năng xảy ra
e1, e2,…: là tên biến của các ngoại lệ
174
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java
* Các loại ngoại lệ cơ bản
Tham khảo SGK – 57
Các loại ngoại lệ:
ArithmeticException
IOException
ArrayStoreException
NullPointerException
OutOfMemoryException
…
175
TT Tin học và Ngoại Ngữ Trí Đức - Chuyên đề Java