Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Giáo trình Java
Nội dung xem thử
Mô tả chi tiết
sở GIẢO DỤC VÀ ĐÀO TẠO HẢ NỘI
NGUYỄN QUANG LY
GIÁ O TRÌN H
JAVA
(Dùng trong các trường THON)
BẠI HỌC TRAI NGUYÊN
TRUNG TÂM HỌC LÈ!
NHÀ XUẤT BẢN HÀ NÔI - 2007
L ờ i giới thiệu
ước ta đang bước vào thời kỳ công nghiệp hóa, hiện
Ì V đại hóa nhằm đưa Việt Nam trở thành nước công
nghiệp văn minh, hiện đại.
Trong sự nghiệp cách mạng lo lớn đó, công lác dào tạo
nhân lực luôn giữ vai trò quan trọng. Báo cáo Chính trị của
Ban Chấp hành Trung ương Đáng Cộng sản Việt Nam tại
Đại hội Đảng toàn quốc lẩn thứ IX đã chì rõ: "Phát triển
giáo dục và đào tạo là một trong những động lực quan trọng
thúc đẩy sự nghiệp công nghiệp hóa, hiện đại hóa, là điều
kiện để phát triển nguồn lực con người - yếu tô cơ bản để
phát triển xã hội, tăng trưởng kinh tế nhanh và bền vững".
Quán triệt chủ trương, Nghị quyết của Đảng và Nhà nước
và nhận thức đúng đắn về tầm quan trọng của chương trình,
giáo trình đối với việc nâng cao chát lượng đào tạo, theo để
nghị của Sỏ Giáo dục và Đào lạo Hà Nội, ngày 231912003,
ủy ban nhân dán thành phố Hà Nội đã ra Quyết định số
5620/QĐ-UB cho phép sỏ Giáo dục và Đào tạo thực hiện dề
án biên soạn chương trình, giáo trình trong các trường Trung
học chuyên nghiệp (THON) Hà Nội. Quyết định này thể hiện
sự quan tám sâu sắc cùa Thảnh ủy, UBND thành phố trong
việc nâng cao chất lượng đào tạo và phát triển nguồn nhân
lực Thủ đổ.
Trên cơ sỏ chương trình khung của Bộ Giáo dục và Đào
tạo ban hành và những kinh nghiệm rút ra từ thực tế đào lạo,
Sở Giáo dục và Đào tạo dã chi đạo các trường THON tổ chức
biên soạn chương trình, giáo trình một cách khoa học, hệ
3
thống và cặp nhật những kiến thức thực tiễn phù hợp với đới
tượng học sinh THCN Hà Nội.
Bộ giáo trình này lù tài liệu giáng dạy và học tập trong
các trường THON ở Hà Nội. đồng thời là tủi liệu tham khao
hữu ích cho các trường cổ đào tạo các ngành kỹ thuật - nghiệp
vụ và đông đảo bạn đọc quan lâm đến vấn đề hướng nghiệp.
dạy nghê.
Việc tổ chức biên soạn bộ chương trình, giáo trình này
là một trong nhiều hoạt động thiết thực của ngành giáo dục
và đào tạo Thủ dô để kỷ niệm "50 năm giải phóng Thủ đó ".
"50 nám thành lập ngành" và hướng tới kỷ niệm "1000 năm
Thăng Long - Hà Nội".
SỞGiáo dục và Đào lạo Hà Nội chân thành cảm ơn Thành
ủy, UBND, các sờ, ban, ngành của Thành phô, Vụ Giáo dục
chuyên nghiệp Bộ Giáo dục và Đào tạo, các nhà khoa học, các
chuyên gia đầu ngành, các giảng viên, các nhà quản lý, các
nhà doanh nghiệp đã tạo điều kiện giúp đỡ, đóng góp ý kiến,
tham gia Hội đồng phản biện, Hội đồng thẩm đinh và Hội
đồng nghiệm thu các chương trình, giáo trình.
Đây là lần đàu tiên sỏ Giáo dục và Đào lạo Hà Nội tố
chức biển soạn chương trình, giáo trình. Dù dã hết sức cố
gắng nhưng chắc chắn không tránh khôithiếu sót, bái cặp.
Chúng tôi mong nhận được những ý kiến đóng góp của bạn
đọc để từng bước hoàn thiện bộ giáo trình trong các lán tái
bản sau.
GIÁM ĐỐC SỞ GIÁO DỤC VÀ ĐÀO TAO
4
L ời nói đ ầ u
Trong thời đại công nghệ thông tin bùng nổ như ngày nay, việc lập được
các chương trình chạy trên máy tính nhằm thực hiện các công việc nào đó là
điều vô cùng cân thiết. Tuy nhiên, xung quanh chúng ta có quá nhiều thứ ngôn
ngữ lập trình: Pascal, c, C++, Basic, Delphi, Coboỉ,... Vậy đâu là ngôn ngữ
tập trinh phù hợp với bạn? Càu trả lời trước tiên phụ thuộc vào chính bạn.
Nếu bạn là người mong muốn trở thành một lập trình viên chuyên nghiệp;
nếu bạn là người mong muốn xây diừig các chương trình hướng đối tượng; nếu
bạn phải thường xuyên xây diợig và vận hành các ứng dụng chạy trên mạng
hay ỉnternet; nếu bạn lả người thường xuyên giải quyết các bài toán quản lý;...
thì Java là ngôn ngữ lập trình hữu ích giúp bạn đạt kết quả cao.
Nhiều người cho rằng, Java là mội bước cách tán vĩ đại của thế giới tin
học. Nếu hạn dã từng thử thách sức mình với một ngôn ngữ lập trinh khác như
c, C++, Pascơl... thì vái Java bạn sẽ thấy một cách suy nghĩ hoàn loàn khác,
một con đường mới mẻ để đi đến mục đích của bạn.
Tuy nhiên, nếu bạn chưa từng bao giờ biết đến lập trình, chưa có một khái
niệm nào về ngôn ngữ lập trình thì cuốn sách này vẫn là để dành cho bạn,
nhưng để đi đến đích, bạn phải làm việc nhiều và rất nhiều.
Cũng cẩn hát ý thêm, mặc dù Java là mội ngôn ngữ lập trình mạng vô cùng
mạnh mẽ nhưng đây là một cuốn sách thiên về lập trình hướng đối tượng trong
Java. Vì vậy, phần lập trình mạng sẽ không được đề cập đến ở đây. Các bạn
độc giả quan tâm đến lĩnh vực đó cá thể tìm đọc trong mội số lài liệu khác.
TÁC GIẢ
5
Chươn g Ì
TỔN G QUA N VỀ JAVA
ì. LỊCH sử PHÁT TRIỂN JA VA
1. Khải điểm
Cuối năm 1990, James Gosling được công ty Sun Microsystems giao
nhiệm vụ xây dựng một phần mềm lập trình cho các mặt hàng điện dân dụng.
Lúc đẩu Gosling và nhóm cộng sự định lựa chọn C++ nhưng nhanh chóng nhận
thấy rằng C++ không thích hợp vì quá cồng kềnh và đòi hỏi rất nhiều tài
nguyên (bộ nhớ, đĩa...). Gosling đã quyết định xây dựng hẳn một ngôn ngữ lập
trình mới và đặt tên là Oak (Oak: cây sồi, vì trưốc cửa phòng làm việc của ông
nhìn ra một cây sổi).
Đầu tiên, Oak được sử dụng trong "Dự án Xanh" (Green ProjecI) trong đó
Java được sử dụng để kiểm soát các thiết bị điện dân dụng trong dự án. Sau đó,
Oak được sử dụng trong dự án Phim-theo-yêu cầu (Video - ôn - deman
Project). Qua các dự án đó, Java được phát triển nhanh chóng, đến lúc này Oak
được đổi tên vì có sự trùng lạp và Java ra đời.
2. Sự phát triển
Java dược sử dụng chủ yếu trong bộ công cụ phát triển Java Ụava
Development Kít - JDK) như là một thư viện chuẩn, trong đó chứa trình biên
dịch, thông dịch, trợ giúp, soạn tài liệu,...
Khởi đầu với JDK 1.0 vào năm 1995, JDK 1.1 được công bố vào năm 1996
với nhiều cải tiến như: táng thêm các hàm giao diện (AWT), xây dựng hệ thống
thư viện dùng lại iavabeans, JFC,... Bộ Java 1.6 là lõi cho việc viết các IED
ựntergrated Environment Deveìopment) nổi tiếng nhuJbuiIder 2.0, Visual J++
6.0,... Trong giáo trình này chúng ta yêu cầu các bản JDK từ Ì .2 trờ về sau.
7
JDK 1.2 ra đời năm 1998 và được coi như mọt DUƠC ngoặt trong quá trình
phát triển của Java. JDK 1.2 chứa rất nhiều những thay đổi trong cấu trúc so với
JDK 1.1. Khả năng bảo mật cao hơn và linh động hơn, nâng cao tính khả chuyền
và tốc độ thực hiện, một chương trình được viết bằng JDK 1.2 chạy nhanh hem
30% đến 40% so với một chương trình viết bằng JDK 1.1. Đặc biệt, JDK còn phát
triển thêm JDK đồ hoa 2D và 3D nàng cao đáng kể khả nâng đồ hoa của Java.
Sau Java 1.2, cho đến ngày nay, Java đã phát triển đến phiên bán Ì .4 và với
tốc độ như vậy có lẽ là sau vài tháng nữa chúng ta lại được nghe đến những
thông tin mới về Java.
li. CÁC ĐẶC ĐIỂM CỦA JAVA
Có nhiều đặc điểm nổi bật của Java so với các ngôn ngữ khác. Dưới đây là
một số đặc điểm chủ yếu nhất.
1. Đơn giàn (Simple)
Đặc điểm đầu tiên và cũng là mục đích của Java là tính đơn giản. Mục đích
của những người sáng lập ra Java là đế thay thế cho c và C++. Mặc dù công
việc này chẳng hề đơn giản chút nào nhưng ta cũng cán thấv rằng Java đã hạn
chế được rất nhiều tính phức tạp ở trong c và C++. Hai ví dụ có thể chứng
minh cho tính đơn giàn cùa Java so với c và C++ đó là Java đã bỏ đi khái niệm
con trỏ ở trong c và bỏ đi tính đa thừa kế ờ trong C++.
Một điều nữa có thể minh chứng cho tính đơn giản của Java là kích thước
của bộ biên dịch cơ bản và lớp hỗ trợ là rất nhỏ. Bàn JDK 1.2 chí chiếm dung
lượng 4 Mb so với vài trăm Mb của Visual C++ và Visual Basic.
2. Hướng đối tượng
Java là một ngôn ngữ lập trình thuần tuy hướng đối tượng. Có nghĩa là
trong Java không có bất cứ một biến hay một thù tục nào được viết à ngoài lớp.
Mọi ứng dụng viết trên Java đều phải dược xây dựng lừ các đối tượng và thông
qua các đối tượng. Nếu như trong C/C++ ta có thề tạo ra các hàm toàn cục
(globaỉỊimction), thì ở Java chúng ta chỉ có thế tạo ra các hàm tương tự thông
qua một đối tượng nào đó.
3. Phân tán
Java được thiết kế để hỗ trợ các ứng dụng phán tán. ứng dụng phân tán là
những ứng dụng làm việc trên môi trường mạng. Trong Java để xây dựng các
8
ứng dụng như thế ta sử dụng lớp mạng (java.net). Ví dụ với lớp URL của Java -
một ứng dụng Java có thể dẻ đằng truy xuất đến một máy chú ở xa. Nó có thể
mở hoặc truy xuất đến các đối tượng ở xa cũng đơn gián như là truy xuất ngay
trên máy tính của mình.
4. Ngôn ngữ lai
Java là một ngôn ngữ lai vì Java là một ngôn ngữ vừa biên dịch và vừa thông dịch.
Ta biết rằng hầu hết chương trình máy tính luôn được viết dưới một ngôn
ngữ lập trình nào đó, lũy nhiên, máy tính của ta lại không thể thực hiện trực
tiếp các chương trình đó vì thực chất máy tính chí là sự kết hợp các mạch điện
tử và nó chi hiểu được ngồn ngũ máy (machine language). Ngôn ngữ máy là
ngôn ngữ chỉ được tạo thành từ các số 0 và Ì; 0 ứng với mức điện áp thấp và Ì
ứng với mức điện áp cao.
Vậy, để một chương trình máy tính viết bằng một ngôn ngữ lập trình nào
đó được thực hiện thì trước tiên nó phải được chuyển thành ngôn ngữ máy. Quá
trình chuyển một chương trình thành ngôn ngữ máy đó người la gọi đó là quá
trình dịch chương trình.
Trong dịch chương trình thì có hai cách dịch là biên dịch và thông dịch.
Biên dịch tức là chuyển toàn bộ chương trình sang ngôn ngữ máy rồi sau đó
mới thực hiện chương trình. Ta có thể hình dung cụ thể qua sơ đồ dưới đây:
#include<stdio.h> 00010101010
void main()
Ị
' —• 10101010101
1
int a; printf("a=");
scanf("%d",&a);
a=a+l;
getchO;
1
— • 010101010101
Thực hiện
Thúc hiện
Thúc hiên
Hình LI. Sơ đổ biên dịch và thực hiện chương trình
9
Thông dịch tức là thực hiện dịch từng dòng lệnh của chương trình sau đó sẽ
thực hiện ngay dòng lệnh đó rồi lại quay về dịch và thực hiện dòng lệnh tiếp theo.
Ta có thể hình dung cụ thể về quá trình thông dịch thông qua hình dưới đây:
£ #include<stdio.h>
void main()
I
im a;
printf("a=");
scanf("%d",&a);
a=a+l;
getchO;
00010101010
10101010101
010101010101
Thực hiện
Thực hiên
Thực hiện
Hình Ì .2. Sơ dỏ thòng dịch và thực hiện chương trình (^Stop^)
Vậy một chương trình Java vừa được biên dịch vừa được thông địch như
thế nào? Ta hình dung qua sơ đồ dưới đáy:
Mã
chương lj
trình
Hình Lĩ. Các bước dịch một chương trình Java
Như vậy, đế thực hiện một chương trình Java ta cần trải qua hai bước:
Bước 1: Biên dịch chương trinh Java thành một dạng mã trung gian, được
gọi là mã bytecode.
Bước 2: Thông dịch và thực hiện mã trung gian đó.
5. Kiến trúc trung tính
Kiến trúc trung tính của Java nói đến khả năng chạy chương trình Java trẽn
nhiều hệ điều hành và nhiều bộ vi xử lý khác nhau.
Java với khả năng thông dịch mã bytecode (được biên dịch từ mã nguồn
Java) cho phép tạo ra các máy Java ảo (JVM - Java Virtual Machine) trẽn mỗi
hệ thống. Các chương trình Java sẽ chạy trên nền trung tính của các máy ào
Java đó dễ dàng mà không phụ thuộc vào hệ điểu hành và bộ vi xử lý.
10
HI. CÀI ĐẶT, DỊCH VÀ CHẠY CHƯƠNG TRÌNH JAVA
1. Cài đặt Java
Đế có thể soạn thảo các chương trình Java và tiến hành thực hiện, chúng ta
phải cài đặt hai công cụ:
1.1. Cài đạt chương trình biên dịch và thòng dịch JDK
Chuẩn bị:
- Máy có CPU tối thiểu là Intel Pentium 166 Mhz hoặc tương đương
- Hệ điều hành Window 95,98,NT,2000,XP
- Bộ nhớ RAM tối thiểu 32 Mb
- Dung lượng đĩa tối thiểu còn 65 Mb
Các bước cài đặt:
- Chép vào đĩa cứng thư mục jdkl .2
- Chạy chương trình cài đặt bằng cách chạy file jdkl_2_0-win.exe khi đó
Java sẽ cài jdk Ì .2 lên thư mục C:\jdk Ì .2
1.2. Cài đặt chương trình soạn thảo
Thực chất ta có thể soạn thảo chương trình Java bằng một công cụ soạn
tháo bất kỳ (Notepad, Wordpad, Word,...). Sau đó, khi đã soạn chương trình
xong ta tiến hành dịch chương trình. Tuy nhiên, có một công cụ soạn thảo hiệu
quá, đồng thời vừa soạn thảo ta lại có thê vừa biên dịch được đó là Textpad.
Trong giáo trình này ta sẽ sử dụng TextPad làm công cụ soạn thào và dịch chạy
chương trình.
Trong giáo trình này tôi sử dụng TextPad phiên bản 4.6.2. Các bạn có thể
sử dụng phiên bàn bất kỳ của Te.xtPad từ 4.0 Irở lên. Để cài đặt TextPad ta chỉ
việc chạy file cài đặt: I.xpeng4.62.exe. Khi đó TextPad sẽ được cài đặt vào thư
mục C:\Programs Fi!e\TexlPad
2. Soạn thảo và chạy chướng trình Java đầu tiên
2.1. Soạn thảo chương trình
Khởi động TextPacl bằng cách vào đường dẫn Start->Pivgrams->TextPad.
Sau đó soạn thào chương trình có nội dung sau trong TexlPacl:
Ví dụ Li. Chương trình Java đầu tiên
li
Public class First //Khai báo lóp chính
(
public static void main(String[] args) // Hàm main
í
System.out.println("First Java Program"); // In dòng văn bản
I
)
2.2. Chạy chương trình
Sau khi soạn chương trình xong, ta ghi lại chương trình với tên là
First.class. Một điểm quan trọng mà bạn luôn cần chú ý là bạn phải ghi
chương trình trùng với lên của lớp trong đó có chứa hàm mainị), như ờ đây
chẳng hạn là Firsí. Đuôi file của tên chương trình luôn phái là class.
Khi đã ghi chương trình vào rồi ta tiến hành dịch chương trình bằng cách
chí vào menu Tooi->Complie Java hoặc nhấn tổ hợp phím Ctrl+1. Lúc này,
nếu chương trình đúng nó sẽ được dịch thành file trung gian ờ dạng mã
Bvtecode có đuôi java. Nếu chương trình có lỗi thì nó sẽ hiện dòng thông báo
lỗi và ta sẽ phải sửa lại chương trình.
Nếu chương trình được dịch đúng, ta có thê chạy chương trình bằng cách
chọn menu: Tool->Run Java Appìicalion hoặc nhấn tổ hợp phím Ctrl+2. ở
chương trình này khi chạy chương trình dòng chữ FirstJava Program sẽ được in ra.
2.3. Phân tích chưưng trình
Trên đây là một chương trình Java rất đơn giản.
Dòng đầu tiên: Pnbìic ciass First đế khai báo một lớp gọi là lớp chính. Đáy
là lớp mà có chứa hàm mainị) cùa chương trình. Lớp này là bắt buộc phái có
đối với mọi chương trình Java kiểu ứng dụng.
pnblic: Phạm vi của lớp là toàn cục
class: Từ khoa đế khai báo lớp
Firsl: Tên lớp
Dòng thứ hai: public staíic void main(Slringl/ args) dùng đế khai báo hàm
mainị) cùa chương trình. Mọi chương trình ứng dụng Java đều phải có hùm
mainị) và nó là đầu vào của chương trình.
public: Phạm vi của hàm mainị) là toàn cục
12
static: Vì hàm mainị) là hàm duy nhất trong chương trình
void: Hàm main() không có kiểu, không trả về giá trị
StringlỊ args: args dùng để lưu trữ tham số dòng lệnh đầu vào cho hàm
mainị) nếu như ta chạy chương trình từ dòng lệnh.
Dòng thứ ba: System.out.println ("First Java Program"); dùng đế in ra
dòng thông báo First Java Program.
System: Gói System. Chúng ta sẽ tìm hiểu về gói sau
out: Lớp để xuất dữ liệu ra
println: Hàm in dòng thông báo
Bải tập
Bài 1. Viết chương trình in ra dòng chữ:
"Cộng hoa xã hội chủ nghĩa Việt Nam"
ở chính giữa màn hình sau đó nếu ấn phim bất kỳ thì in tiếp dòng chữ
"Độc lập - Tự do - Hạnh phúc"
cũng ở chính giữa màn hình.
Bài 2. Viết chương trình in ra tam giác sau:
1
1 2 1
1 2321
123432 1
123454321
Bài 3. Viết chương trình in ra hình trái tim bằng sao như hình vẽ sau:
* *
* * *
* * *
* *
* *
* *
* *
* *
Ì Ì
*
Bài 4. Viết chương trình chèn thêm dòng chữ "I love you" vào trái tim trong bài 3.
13
Chươn g 2
NGÔ N NGỮ JAVA
ì. Từ KHOA, TÊN RIÊNG, DÒNG GHI CHÚ
1. Từ khoa (Keyvvord)
Cũng như các ngôn ngữ lập trình khác, Java sử dụng một tập hợp các từ có
chức nâng xác định trước. Đương nhiên ta không thể sử dụng các từ này để làm
các chức năng khác. Những từ này gọi là từ khoa.
Bảng dưới đây là tập hợp các từ khoa và chức năng của nó:
Từ khoa Ý nghĩa
abstract Dùng để khai báo một phương thức trừu tượng. Một phương thức trừu
tượng sẽ không có phần mã lệnh. Nó chi là khung cho các lớp thừa kế từ nó
boolean Kiểu dữ liệu logic
break Từ khoa dùng để thoát khỏi vòng lặp
byte Kiểu dữ liệu nguyên có giá trị là số 8 bít
case Từ khoa trong cấu trúc rẽ nhánh switch.. .case
catch Từ khoa dùng để nhận về các giá trị lỗi
char Kiểu dữ liệu ký tự
class Khai báo lớp
const Khai báo hằng
continue Dùng để nhảy về lẩn lặp tiếp theo trong vòng lặp
default Giá trị mặc định trong câu trúc lựa chọn switch
do Nằm trong câu lệnh lặp do... while
else Nằm trong câu lệnh lạp if... else
14
Từ khoa Ý nghĩa
extends Dẫn xuất lớp
final Phương thức cuối là phương thức sẽ không cho các lớp thừa kế dinh
nghĩa lại phương thức này
float Kiểu dữ liệu thực 4 byte
for Lệnh lặp for
if Lệnh lặp if
implements Cài đặt giao tiếp
import Mờ các thư viện (tương tụ #include trong C)
im Kiểu dữ liệu nguyên 4 byte
interface Giao tiếp
long Kiểu dữ liệu nguyên 8 byte
nevv Dùng để tạo một đối tượng mới
package Gói
private Từ khoa khai báo đối tượng tiếp sau là cục bộ
protected Từ khoa khai báo một phương thức chỉ dược sù dụng trong lớp dẫn xuất
trực tiếp từ nó
public Từ khoa khai báo đối tượng tiếp sau là toán cục
return Trờ về lệnh gọi
short Kiểu dữ liệu nguyên 2 byte
static Đối tượng khai báo tiếp (heo là tĩnh, tức là nó là dối tượng duy nhất
father Chỉ đến đối tượng char
switch Câu lệnh lựa chọn switch
synchronized Đổng bộ giữa các tiến trình
this Đối tượng đang xét
throvv Trả về lỏi
throws Cho biết phương thức hay biến sẽ trả về khi có lỏi
transient Giá trị biến được khai báo kiểu này sẽ không được lưu trữ trước khi có
một đối tượng chứa nó được tạo ra
try Thừ làm để nhận lỗi
void Báo cho biết phương thức khai báo tiếp theo sẽ không trả về giá trị
vvhile Lệnh lặp While
15