(NB) Nội dung giáo trình tập trung vào những kiến thức căn bản nhất của lập trình java giúp người đọc bước đầu tiếp cập dễ dàng với công nghệ mới này, và đây cũng chính là một bước đệm để chúng ta trở thành “java shooter”. Một số vấn đề nâng trong ngôn ngữ lập trình java như: javabean, thiết kết giao diện dùng thư viện JFC, lập trình mạng, lập trình cơ sở dữ liệu bằng java, lập trình ứng dụng web dùng J2EE,... sẽ được nói đến trong các chuyên đề nâng cao. Mời các bạn cùng tham khảo nội dung phần 1 giáo trình!
Trang 1BỘ LAO ĐỘNG -THƯƠNG BINH VÀ XÃ HỘI TRƯỜNG CAO ĐẲNG NGHỀ KỸ THUẬT CÔNG NGHỆ
-š› &
š› -GIÁO TRÌNH LẬP TRÌNH JAVA CƠ BẢN NGHỀ: CÔNG NGHỆ THÔNG TIN TRÌNH ĐỘ: CAO ĐẲNG
Ban hành kèm theo Quyết định số: 245/QĐ-CĐNKTCN ngày 23 tháng 10 năm 2020
của Hiệu trưởng Trường Cao đẳng nghề Kỹ thuật Công nghệ
Trang 3LỜI GIỚI THIỆU
Ngôn ngữ lập trình java ra đời và được các nhà nghiên cứucủa Công ty Sun Microsystem giới thiệu vào năm 1995 Sau khi ra đời không lâu, ngôn ngữ lập trình này đã được sử dụng rộng rãi và phổ biến đối với các lập trình viên chuyên nghiệp cũngnhư các nhà phát triển phần mềm Gần đây ngôn ngữ lập trình, công nghệ java
đã được đưa vào giảng dạy ở các cơ sở đào tạolập trình viên chuyên nghiệp Một số trường đại học ở Việt Nam dạy môn lập trình java như một chuyên đề tự chọn cho các sinh viên công nghệ thông tin giai đoạn chuyên ngành.
Sau một thời gian tìm hiểu, làm việc và được tham gia giảng dạy chuyên đề lập trình java cho lớp cử nhân tin học từ xa qua mạng Nhóm tác giả chúng tôi quyết định biên soạn cuốn giáo trình này nhằm phục vụ công tác giảng dạy cũng như học tập của sinh viên chuyên ngành công nghệ thông tin.
Nội dung giáo trình tập trung vào những kiến thức căn bản nhất của lập trình java giúp người đọc bước đầu tiếp cập dễ dàng với công nghệ mới này, và đây cũng chính là một bước đệm để chúng ta trở thành “java shooter” Một số vấn đề nâng trong ngôn ngữ lập trình java như: javabean, thiết kết giao diện dùng thư viện JFC(Java Foundation Class), lập trình mạng, lập trình cơ sở dữ liệu bằng java, lập trình ứng dụng web dùng J2EE (Java 2 Enterprise Edition), sẽ được nói đến trong các chuyên đề nâng cao.
Để có thể đọc hiểu giáo trình này người đọc cần nắm vững các kiến thức về: nhập môn lập trình, lập trình hướng đối tượng Đây là lần xuất bảnđầu tiên chắc chắn không thể tránh khỏi những sai sót Nhóm tác giả rất mong nhận được những ý kiến đóng góp của quý thầy cô, các đồng nghiệp và bạn đọc để có.thể hoàn thiện hơn giáo trình này phục vụ cho việc học tập của sinh viên.
Xin chân thành cảm ơn!
Hà Nội, ngày 23 tháng 04 năm 2021
Tham gia biên soạn
1 Chủ biên Nguyễn Thị Thủy.
2 Tập thể Giảng viên Khoa CNTT
Trang 4MỤC LỤC
Bài 1: TỔNG QUAN VỀ JAVA VÀ CÁC CÔNG NGHỆ TRONG JAVA 9
1.Lịch sử ra đời của Java 9
2 Một số tính của Java 9
3.Môi trường lập trình Java 9
4.Công nghệ Java 10
5 Các cấu trúc lập trình căn bản trong Java 11
5.1 Một chương trình Java cơ bản 11
5.2 Các kiểu dữ liệu cơ bản 12
5.3 Các toán tử 14
5.4 Các cấu trúc điều khiển 14
5.5 Nhập dữ liệu từ bàn phím 16
5.6 Công cụ soạn thảo 18
5.7 Chỉ dẫn thực hành 19
BÀI TẬP 19
Bài 2: LỚP HƯỚNG ĐỐI TƯỢNG TRONG JAVA 20
1 Lớp 20
1.1 Lập trình hướng đối tượng-OOP 20
1.2 Lớp Time 20
1.3 Lớp TimeTest 22
1.4 Chạy TimeTest 22
2 Hướng đối tượng trong JAVA 23
2.1 Phạm vi truy cập 23
2.2 Từ khoá this 23
2.3 Nạp chồng hàm khởi tạo 23
Trang 52.4 Một số từ khoá 24
2.5 Kế thừa (Inheritance) 25
2.6 Cây kế thừa 25
2.7 Ví dụ về kế thừa trong Java 25
2.8 Từ khoá super 26
2.9 Đa hình (Polymorphism) 26
2.10.Lớp trừu tượng (abstract) 27
2.11 Lớp trừu tượng 27
2.12 Giao tiếp (interface) 28
2.13 Gói (package) 29
BÀI TẬP 30
Bài 3: Applet 32
1 Khái niệm Java Applet 32
2 Cấu trúc của một Applet 32
2.1 Sự khác nhau giũa Application và Applet 34
2.2 Những giới hạn bảo mật trên applet 36
3 Chu trình sống của một Applet 37
4 Truyền tham số cho Applet 38
5 Lớp Graphics 39
5.1 Vẽ các chuỗi, các ký tự và các byte 40
5.2 Vẽ đường thẳng (Line) và Oval 42
5.3 Vẽ hình chữ nhật (Rectangle) và hình chữ nhật bo góc (Rounded Rectangle) 43 5.4 Vẽ hình chữ nhật 3D và vẽ hình cung (Arc) 44
5.5 Vẽ hình PolyLine 44
Trang 66 Điều khiển màu và font 47
6.1 Điều khiển màu 47
6.2 Điều khiển Font 49
6.3 Lớp FontMetrics 50
6.4 Chọn mode để vẽ 54
Bài 4: LẬP TRÌNH GIAO DIỆN 56
1 Cơ chế lập trình đồ hoạ giao diện 56
2.Thư viện AWT và Swing 65
3.Container và Component 66
3.Container và Component 73
3.1 Container 73
3.2 Component 76
3 Textfield 78
4 TextArea 79
5 CheckBox 80
6 CheckBoxGroup 81
7 Choice 83
8 List 85
4.Quản lý Layout 86
4.1 Giới thiệu về LayoutManager Interface 87
4.2 Giới thiệu về LayoutManager2 Interface 87
5.Lập trình GUI cơ bản 89
6.Lập trình GUI nâng cao 89
6.1 Các thành phần được giới thiệu 89
6.2 Vùng văn bản (TextArea) 89
Trang 76.3 Khung vẽ (Canvas) 91
6.4 Thanh trượt (Scroll bar) 92
6.5 Thanh trượt (Scroll bar) 93
6.6 Khung cuộn (ScrollPane) 93
6.7 Bố cục nâng cao 94
6.8 Khung chứa Frame 94
6.9 Cài đặt listener 96
9.10 Khung chứa Frame 96
BÀI TẬP 109
TÀI LIỆU THAM KHẢO 110
Trang 8GIÁO TRÌNH MÔN HỌC Tên mô đun: Lập trình java cơ bản
Mã mô đun: MĐCNTT 20
Vị trí, tính chất, ý nghĩa và vai trò của mô đun :
- Vị trí: Mô đun cơ sở lập trình JAVA căn bản thuộc nhóm các môn học chuyênngành được bố trí giảng dạy sau khi đã học xong các môn học, mô đun cơ sở ngànhnhư: Cơ sở dữ liệu, Ngôn ngữ lập trình C/C++, Lập trình hướng đối tượng, Cấu trúc
dữ liệu và giải thuật
- Tính chất: Mô đun Cơ sở lập trình Java căn bản cung cấp các kiến thức cơ bản về các kỹthuật lập trình nâng cao với ngôn ngữ Java Giúp sinh viên làm quen với kỹ thuật lập trìnhgiao diện và lập trình mạng; lập trình dịch vụ web với Java Cung cấp cho sinh viên các
kỹ năng làm chủ các kỹ thuật lập trình ứng dụng trên Java.Sinh viên sử dụng được các thưviện của Java để lập trình ứng dụng trong thực tế
Mục tiêu của mô đun:
- Về kiến thức
+ Trình bày được các vấn đề cơ bản trong ngôn ngữ lập trình java như: kiểu dữliệu, biến, khai báo thư viên, hàm, mảng, lớp đối tượng và các vấn đề cơ bản với lậptrình hướng đối tượng
+ Nêu và làm rõ thế mạnh từng lĩnh vực trong công nghệ java
+ Trình bày được các vấn đê cơ bản liên quan đến lập trịnh applet trong java như :các đối tượng giao diện cơ bản, Container, Component…
+ Trình bày được các khái niệm về thuộc tính, phương thức, phạm vi truy cập củathuộc tính và phương thức của lớp và các đặc điểm của hướng đối tượng trong java
+ Trình bày được nguyên lý và các đối tương sử dụng lập trình mạng trong java+ Trình bày được khái niệm và chu kỳ sống của Applet
- Về kỹ năng
+ Xây dựng được các ứng dụng cơ bản với ngôn ngữ lập trình Java
+ Vân dụng kỹ thuật lập trình hướng đối tượng trọng java, lập trình mạng, lập trìnhgiao diện để xây dựng các module ứng dụng đơn giản như: gửi nhận tin online,offlinen trực tiếp giữa hai máy tính hoặc qua server
+ Tạo và truyền được tham số cho Applet
+ Thiết kế và xây dựng được giao diện chương trình trong thực tế bằng Java
+ Xây dựng được ứng dụng Client/Server
- Về năng lực tự chủ và trách nhiệm
+ Tích cực ứng dụng lập trình trực quan cho các ứng dụng trong thực tế
+ Khả năng tìm tài liệu, đọc hiểu tài liệu
+ Khả năng làm việc nhóm
Trang 9Nội dung của mô đun
Số
TT Tên các bài trong mô đun
Thời gianTổng
số
Lýthuyết
Thựchành
Kiểmtra*
2.Cấu trúc của một Applet
3.Chu trình sống của một Applet
4.Truyền tham số cho Applet
5.Lớp Graphics
6.Điều khiển màu va font
4
Bài 4: Lập trình giao diện
1.Cơ chế lập trình đồ hoạ giao diện trong
Trang 10Bài 1: TỔNG QUAN VỀ JAVA VÀ CÁC CÔNG NGHỆ TRONG JAVA
Mã bài: MĐCNTT 20.1 Mục tiêu
- Trình bày được các khái niệm liên quan đến Java và các công nghệ của Java
- Trình bày được các thư viện hỗ trợ cho từng nhóm ứng dụng trong Java
- Nêu được cấu trúc của một chương trình java cơ bản
- Thiết lập được giao diện lập trình java
- Hiểu cách thức xây dựng ứng dụng với giao diện và vào ra file
- Phân biệt các kỹ thuật lập trình và thư viện hỗ trợ của Java
Nội dung chính:
1.Lịch sử ra đời của Java
Lịch sử phát triển của Java
Ra đời tại Sun Microsystems bởi James Gosling
1991: Version đầu tiên với tên “Oak” (cây sồi)
1995: Tên chính thức là Java
Mục đích của Java
Dùng để phát triển ứng dụng cho các thiết bị điện tử “thông minh”
Tạo các trang web có nội dung động (web applet)
Hiện nay, Java được sử dụng để phát triển nhiều loại ứng dụng khác nhau:
cơ sở dữ liệu, mạng, Internet, viễn thông
Java Virtual Machine (Java VM)
Java Application Programming Interface (Java API)
Trang 11Java Development Kit – JDK
• Bộ công cụ phát triển Java (jdk) gồm trình biên dịch, thông dịch, trợgiúp, soạn tài liệu… và các thư viện chuẩn
• Ngoài ra còn một số thư viện khác như JSP, JavaMail, Java TAPI…
• Applet: Ứng dụng chạy trên Web
Thư viện lớp Java
• Bộ JDK bao gồm rất nhiều lớp chuẩn đã được xây dựng sẵn
• Lập trình viên thường sử dụng các lớp chuẩn để phát triển ứng dụng
Các bước phát triển
Hardware-PlatformJava VMJava APImyProgram.java
Java Platform
Mã nguồn
Trang 125 Các cấu trúc lập trình căn bản trong Java
5.1 Một chương trình Java cơ bản.
- Biên dịch chương trình
• Vào chế độ Console của Windows
• Gõ câu lệnh javac Hello.java
• Nếu không có thông báo lỗi, file Hello.class sẽ được tạo ra
- Thực thi chương trình
• Gõ câu lệnh java Hello (không cần class)
Trang 13Thay đổi cách hiển thị
public classHello
5.2 Các kiểu dữ liệu cơ bản
- Java có hai kiểu dữ liệu
• Dữ liệu gốc chuẩn: Là các kiểu dữ liệu đã được định nghĩa trong ngônngữ như số nguyên, số thực, ký tự, logic
• Dữ liệu dẫn xuất: Do người dùng tự định nghĩa như mảng, lớp, giao tiếp
- Ví dụ khai báo biến
Trang 14int 32 bits -231…231– 1
long 64 bits -264…264– 1
b Kiểu số thực
Kiểu Kích thước Khoảng giá trị
c Kiểu boolean: Nhận giá trị true hoặc false
d Kiểu char: Kiểu ký tự theo chuẩn Unicode
• Khai báo: int[] iarray; hoặc int iarray[];
• Cấp phát: iarray = new int[100];
• Khởi tạo:
int[] iarray = {1, 2, 3, 5, 6};
char[] carray = {‘a’, ‘b’, ‘c’};
Chú ý: Luôn khởi tạo hoặc cấp phát mảng trước khi sử dụng
• Một số khai báo không hợp lệ:
Trang 15carray[1] = ‘z’;
Chú ý: Chỉ số của mảng được tính từ 0
• Lấy số phần tử mảng: iarray.length
Quy tắc đặt tên biến
• Bắt đầu bằng một chữ cái, một dấu gạch dưới (_) hoặc một dấu dollard ($)
• Không có khoảng trắng giữa tên
• Sau ký tự đầu có thể dùng ký tự, số, dấu dollard, dấu gạch dưới
• Không trùng với các từ khoá
• Ví dụ: a_1234_d, 1awas, _asdc, a sas, $erd, %ats…
• Chú ý: Java phân biệt chữ hoa chữ thường
Trang 16else System.out.println(“Hom nay khong la chu nhat\n" );}
case 'a': case 'e': case 'i': case 'o': case 'u':
System.out.println("Ky tu nay la nguyen am");
Trang 18BufferedReader inStream =
new BufferedReader(new InputStreamReader(System.in)); System.out.print("Nhap mot so nguyen:");
String siNumber = inStream.readLine();
int iNumber = Integer.parseInt(siNumber);
System.out.print("Nhap mot so thuc:");
String sfNumber = inStream.readLine();
float fNumber = Float.parseFloat(sfNumber);
System.out.println("So nguyen:“ + iNumber);
System.out.println("So thuc:“ + fNumber);
}
}
Ví dụ: Xây dựng đối tượng Circle
• Cách 1: Sử dụng một file Circle.java duy nhất
public class Circle
{
private int radius;
public Circle(int r) { radius = r; }
public double getArea() { return Math.PI*radius*radius; } public double getCircum() { return 2*Math.PI*radius; } public static void main(String[] args)
{
Circle c = new Circle(5);
System.out.println("Area = " + c.getArea());
System.out.println("Circumference = " + c.getCircum()); }
}
Ví dụ về đối tượng Circle
Cách 2: Sử dụng một file với 2 lớp riêng biệt
public class TestCircle
{
Trang 19public static void main(String[] args)
{
Circle c = new Circle(5);
System.out.println("Area = " + c.getArea());
System.out.println("Circumference = " + c.getCircum()); }
Ví dụ về đối tượng Circle
Cách 3: Sử dụng hai file riêng biệt
Trang 205.7 Chỉ dẫn thực hành
Đặt biến môi trường PATH:
Trong Windows: Nháy phải trên My Computer, chọn Properties, chọnAdvanced, chọn Enviroment Variables, chọn biến PATH và edit, thêm vàođường dẫn tới thư mục bin của bộ JDK
Trong chế độ Console: Gõ lệnh
set Path=%Path%;đường dẫn tới bin
Nên tham khảo java/docs khi làm việc
BÀI TẬP
1 Viết chương trình tính tiền điện thoại:
— Tiền thuê bao hàng tháng là 27000 đ
— Từ phút gọi thứ nhất đến phút thứ 200 giá cước là 120 đ/phút
— Từ phút gọi thứ 201 đến phút thứ 400 giá cước là 80 đ/phút
— Từ phút gọi 401 đến phút cuối giá cước là 40 đ/phút
2 Viết chương trình giải phương trình bậc hai ax2 + bx + c = 0 với a,b,c nhập từbàn phím
3 Viết chương trình nhập vào một dãy các số nguyên khác 0, kết thúc nhập khigặp số 0 Sau đó tính trung bình cộng của dãy số đó Tìm số lớn nhất, số nhỏnhất của dãy số
Trang 21Bài 2: LỚP HƯỚNG ĐỐI TƯỢNG TRONG JAVA
Mã bài: MĐCNTT 20.2 Mục tiêu
- Trình bày được các khái niệm về thuộc tính, phương thức, phạm vi truy cập củathuộc tính và phương thức của lớp
- Trình bày được các đặc điểm của hướng đối tượng trong java
- Khai báo và tạo được đối tượng của lớp
- Phân biệt được sự giống và khác nhau giữa các phương thức thường và các phươngthức khởi tạo
Đối tượng là các thể hiện (instances) của lớp
Đặc điểm của OOP
Tính đóng gói (Encapsulation)
Tính kế thừa (Inheritance)
Tính đa hình (Polymorphism)
Lớp Time và TimeTest nằm trong cùng thư mục
Lớp Time nằm trong file Time.java Nó chứa các định nghĩa về thời gian.Lớp TimeTest nằm trong file TimeTest.java Nó dùng để kiểm tra lớp Time.Lớp TimeTest chứa hàm main
Trang 22private int hour; // 0 - 23
private int minute; // 0 - 59
private int second; // 0 - 59
// Cau tu
public Time() { setTime(0, 0,0 ); }
// Ham thiet lap du lieu
public void setTime(int h,int m,int s )
// Chuyen sang khuon dang thoi gian quoc te
publicString toUniversalString()
{
DecimalFormat twoDigits =new DecimalFormat( "00" );
return twoDigits.format( hour ) + ":" +
twoDigits.format( minute ) + ":" + twoDigits.format( second );
}
// Chuyen sang khuon dang thoi gian thong thuong
public String toStandardString()
{
DecimalFormat twoDigits =newDecimalFormat( "00" );
return ( (hour ==12 || hour ==0) ?12 : hour %12 ) + ":" + twoDigits.format(minute ) + ":" + twoDigits.format( second ) + ( hour <12 ? "AM" : "PM" );
Trang 23Có thể có nhiều cấu tử (overloading)Mỗi phương thức phải có một phạm vi nhất định
Time time =new Time(); // Tao mot doi tuong kieu Time
// Lay thoi gian
String output ="The initial universal time is: "
output +="\n\nAfter attempting invalid settings: "
+"\nUniversal time: " + time.toUniversalString()
+"\nStandard time: " + time.toStandardString();
JOptionPane.showMessageDialog(null, output,
"Testing Class Time1", JOptionPane.INFORMATION_MESSAGE); System.exit( 0 );
}// Ket thuc ham main
} //Ket thuc lop TimeTest
1.4 Chạy TimeTest
Trang 24• java TimeTest
2 Hướng đối tượng trong JAVA
2.1 Phạm vi truy cập
- Private: Chỉ truy cập được từ trong lớp khai báo
- Protected: Truy cập được từ trong lớp khai báo, lớp con của của lớp khai báo
và các lớp cùng gói với lớp khai báo
- Public: Truy cập được từ mọi nơi
- Mặc định: Truy cập được từ trong lớp khai báo và các lớp cùng gói với lớpkhai báo
2.2 Từ khoá this
Từ khoá this chỉ đối tượng hiện thời
public class Time
{
private inthour; // 0 - 23
private intminute; // 0 - 59
private intsecond; // 0 - 59
// Viet lai ham setTime
public void setTime(inthour,int minute, int second )
{
this.hour = ( ( hour >=0 && hour <24 ) ? hour :0 );
this.minute = ( ( minute >=0&& minute <60 ) ? minute : 0 );
this.second = ( ( second >=0 && second <60 ) ? second :0 );
}
2.3 Nạp chồng hàm khởi tạo
// Ham khoi tao khong tham so