Học xong môn học này, học sinh và sinh viên có thể tạo được một chương trình java cơ bản trong console, thiết kế được giao diện ứng dụng dành cho desktop và kết nối được cơ sở dữ liệu ch
Trang 1ỦY BAN NHÂN DÂN THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG CAO ĐẲNG KINH TẾ KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH
GIÁO TRÌNH MÔN HỌC: LẬP TRÌNH JAVA
TRÌNH ĐỘ: CAO ĐẲNG
(Ban hành kèm theo Quyết định số: /QĐ-CĐKTKT ngày tháng năm 20 của Hiệu trưởng Trường Cao đẳng Kinh tế - Kỹ thuật Thành phố Hồ Chí Minh)
Thành phố Hồ Chí Minh, năm 2020
Trang 2ỦY BAN NHÂN DÂN THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG CAO ĐẲNG KINH TẾ KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH
GIÁO TRÌNH MÔN HỌC: LẬP TRÌNH JAVA NGÀNH: HỆ THỐNG THÔNG TIN TRÌNH ĐỘ: CAO ĐẲNG
THÔNG TIN CHỦ NHIỆM ĐỀ TÀI
Họ tên: Thái Thị Ngọc Lý
Học vị: Thạc sĩ
Đơn vị: Khoa Công nghệ thông tin
Email: thaithingocly@hotec.edu.vn
TRƯỞNG KHOA TỔ TRƯỞNG
BỘ MÔN CHỦ NHIỆM ĐỀ TÀI
HIỆU TRƯỞNG DUYỆT
Thành phố Hồ Chí Minh, năm 2020
Trang 3TUYÊN BỐ BẢN QUYỀN
Tài liệu này thuộc loại sách giáo trình nên các nguồn thông tin có thể được phép dùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo
Mọi mục đích khác mang tính lệch lạc hoặc sử dụng với mục đích kinh doanh thiếu lành mạnh sẽ bị nghiêm cấm
Trang 4
LỜI GIỚI THIỆU
Giáo trình được biên soạn nhằm hỗ trợ tài liệu cho học sinh, sinh viên học môn Lập trình Java Giáo trình gồm bốn phần chính giới thiệu về lịch sử java, các khái niệm cơ bản trong java, thiết kế giao diện và lập trình cơ sở dữ liệu với ngôn ngữ java Phần mềm được dùng để học ngôn ngữ Java là NetBean được sử dụng trong giáo trình này
Học xong môn học này, học sinh và sinh viên có thể tạo được một chương trình java cơ bản trong console, thiết kế được giao diện ứng dụng dành cho desktop và kết nối được cơ sở dữ liệu cho ứng dụng
Trang 5MỤC LỤC
GIÁO TRÌNH MÔN HỌC 6
CHƯƠNG 1: TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH JAVA 7
1.1 Lịch sử ra đời của java 7
1.2 Đặc điểm ngôn ngữ lập trình Java 7
1.3 Các công nghệ của Java 8
1.4 Các ứng dụng của Ngôn ngữ lập trình Java 9
1.5 Java Core API - Môi trường làm việc của java 10
1.6 Cài đặt và hướng dẫn sử dụng NetBeans 10
CHƯƠNG 2: LẬP TRÌNH CƠ BẢN VỚI JAVA 12
2.1 Kiến trúc Java 12
2.2 Các kiểu dữ liệu 13
2.3 Các toán tử 14
2.4 Các cấu trúc điều khiển 16
2.5 Mảng, chuỗi, lớp bao kiểu dữ liệu cơ sở 21
2.6 Xử lý ngoại lệ 27
2.7 Lập trình luồng nhập xuất 28
CHƯƠNG 3: XÂY DỰNG GIAO DIỆN NGƯỜI DÙNG 34
3.1 Cấu trúc chung của giao diện 34
3.2 Giới thiệu gói AWT và Swing 36
3.3 Trình quản lý giao diện – Layout 38
3.5 Các thành phần giao diện cơ bản 55
3.6 Xử lý sự kiện giao diện người dùng 60
CHƯƠNG 4: LẬP TRÌNH CƠ SỞ DỮ LIỆU 69
4.1 Giới thiệu JDBC 69
4.2 Kiến trúc JDBC 69
4.3 Lập trình kết nối đến CSDL 72
4.4 Thao tác xử lý trên CSDL 74
DANH MỤC HÌNH ẢNH 88
DANH MỤC BẢNG 91
Trang 6GIÁO TRÌNH MÔN HỌC Tên môn học: LẬP TRÌNH JAVA
- Tính chất: môn lý thuyết, môn học bắt buộc
II Mục tiêu môn học:
- Về kiến thức:
+ Trình bày được các khái niệm cơ bản về ngôn ngữ lập trình Java
+ Mô tả các thành phần của trong ngôn ngữ lập trình Java (kiểu dữ liệu, toán tử, cấu trúc điều khiển, v.v )
+ Trình bày chức năng và công dụng của các gói dùng để tạo giao diện trên Java
+ So sánh ưu, nhược điểm của ngôn ngữ lập trình Java với những ngôn ngữ lập trình
- Về kỹ năng:
+ Tạo chương trình Java console đơn giản
+ Xây dựng chương trình Java có sử dụng giao diện đồ họa người dùng (GUI) + Xây dựng ứng dụng quản lý đơn giản trên Java có sử dụng cơ sở dữ liệu
Trang 7KHOA CÔNG NGHỆ THÔNG TIN 7
CHƯƠNG 1: TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH JAVA
Gi ới thiệu:
Giới thiệu tiểu sử của ngôn ngữ lập trình Java, đặc điểm, công nghệ Java
Mục tiêu:
- Biết được lịch sử hình thành ngôn ngữ Java
- Biết được các đặc điểm của ngôn ngữ Java
- Cài đặt và sử dụng được NetBeans
1.1 Lịch sử ra đời của java
Java là một ngôn ngữ lập trình và là một nền tảng Java là một ngôn ngữ cấp cao, mạnh mẽ, hướng đối tượng và an toàn
Năm 1991, ngôn ngữ lập trình Java có tên là Oak do tập đoàn Sun Microsystem phát triển đó là một ngôn ngữ được kế thừa từ C/C++ James Gosling là cha đẻ của ngôn ngữ này
Năm 1995, được đổi tên thành ngôn ngữ lập trình Java bởi vì tại thời điểm đó thì Oak
đã được thông báo là đã bị đăng ký bản quyền nhãn hiệu Java là tên một hòn đảo của Indonesia đây là một hòn đảo nổi tiếng về Coffee Peet và các loại đồ uống dành cho các kỹ sư của Sun
Năm 2010, hãng Oracle đã mua lại Sun Microsystem
Nền tảng là bất kỳ môi trường phần cứng hoặc phần mềm nào mà trên đó một chương trình hoặc phần mềm chạy Vì Java có môi trường runtime (JRE) và API nên nó được gọi là nền tảng
1.2 Đặc điểm ngôn ngữ lập trình Java
Ngôn ngữ Java có các đặc trưng:
– Đơn giản: Java đã cải tiến dễ dàng hơn bằng cách loại bỏ tất cả các phức tạp như
con trỏ, các toán tử, phương thức nạp chồng (overload)như bạn thấy trong C ++ hoặc bất kỳ ngôn ngữ lập trình nào khác
– Hướng đối tượng: Mọi thứ được coi là một đối tượng khác nhau, có sở hữu các thuộc tính và tất cả các hoạt động được thực hiện bằng cách sử dụng các đối tượng này
– Độc lập: Java độc lập với nền tảng, có nghĩa là mọi ứng dụng được viết trên một nền tảng đều có thể dễ dàng chuyển sang nền tảng khác
Trang 8KHOA CÔNG NGHỆ THÔNG TIN 8
– Mạnh mẽ: Java có một hệ thống quản lý bộ nhớ mạnh Nó giúp loại bỏ lỗi vì nó kiểm tra Code trong quá trình biên dịch và runtime
– Bảo mật: Tất cả các mã được chuyển đổi sang byteCode sau khi biên dịch, không thể đọc được bởi con người và chạy các chương trình bên trong Sandbox để ngăn chặn mọi hoạt động từ các nguồn không đáng tin cậy Nó cho phép phát triển các hệ thống / ứng dụng không có virus, giả mạo
– Phân tán: Java cung cấp một tính năng giúp tạo các ứng dụng phân tán Sử dụng
phương thức từ xa(RMI), một chương trình có thể gọi một phương thức của một chương trình khác thông qua và nhận được đầu ra Bạn có thể truy cập các file bằng cách gọi các phương thức từ bất kỳ máy nào trên internet
– Đa luồng: Java hỗ trợ nhiều luồng thực thi, bao gồm một tập hợp các nguyên hàm đồng bộ hóa Điều này làm cho lập trình với các chủ đề dễ dàng hơn nhiều
– Linh hoạt: Nó có khả năng thích ứng với môi trường phát triển hỗ trợ cấp phát bộ nhớ động do giảm lãng phí bộ nhớ và hiệu suất của ứng dụng được tăng lên
– Hiệu suất cao: Java đạt được hiệu suất cao thông qua việc sử dụng byteCode có thể
dễ dàng dịch sang mã máy Với việc sử dụng các trình biên dịch JIT (Just-In-Time), Java mang lại hiệu năng cao
– Thông dịch: Java được biên dịch thành byteCode, được thông dịch bởi môi trường Java run-time
1.3 Các công nghệ của Java
1 JVM (Java Virtual Machine)
JVM là máy ảo giúp máy tính chạy các chương trình Java Đây là môi trường giúp cho byteCode java có thể thực thi
Nó là một cỗ máy trừu tượng Đây là một đặc tả cung cấp một môi trường thời gian chạy trong đó mã byte Java có thể được thực thi Nó theo ba ký hiệu:
– Specification: Đây là một tài liệu mô tả việc triển khai máy ảo Java Nó được cung cấp bởi Sun và các công ty khác
– Implementation (Triển khai): Đây là một chương trình đáp ứng các yêu cầu của đặc
tả JVM
– Instance Runtime: Một thể hiện của JVM được tạo bất cứ khi nào bạn viết lệnh java trên dấu nhắc lệnh và chạy các lớp
2 JRE (Java Runtime Environment)
JRE (là viết tắt của Java Runtime Environment) được sử dụng để cung cấp môi trường
để các byteCode có thể thực thi Nó là trình triển khai của JVM và cung cấp các lớp
Trang 9KHOA CÔNG NGHỆ THÔNG TIN 9
thư viện hoặc các file khác mà JVM sử dụng khi chạy Vì vậy, JRE là gói phần mềm chứa những gì được yêu cầu để chạy chương trình Java Về cơ bản
3 JDK (Bộ phát triển Java)
Đây là công cụ cần thiết để:
– Biên dịch
– Tài liệu
– Đóng gói chương trình Java
JDK bao gồm JRE và các Development Tool các công cụ lập trình cho các lập trình viên Java Bộ công cụ phát triển Java được cung cấp miễn phí Cùng với JRE, nó bao gồm trình thông dịch / trình tải, trình biên dịch (javac), trình lưu trữ (jar), trình tạo tài liệu (Javadoc) và các công cụ khác cần thiết trong phát triển Java Nói tóm lại, nó chứa các công cụ phát triển JRE +
1.4 Các ứng dụng của Ngôn ngữ lập trình Java
Sử dụng lập trình ngôn ngữ Java để tạo ra 4 loại ứng dụng sau:
1) Standalone Application
Ứng dụng Standalone là các ứng dụng dành cho desktop hoặc ứng dụng dựa trên hệ điều hành window Các phần mềm này cần phải được cài vào trên mỗi máy tính Ví dụ cho ứng dụng Standalone là Media player, antivirus, etc AWT and Swing trong Java được dùng để tạo ứng dụng standalone
Hình 1.1: JDK - Nguồn [4]
Trang 10KHOA CÔNG NGHỆ THÔNG TIN 10
2) Web Application
Web application là các ứng dụng trang web động được chạy trên server Hiện nay, các công nghệ Servlet, JSP, Struts, Spring, Hibernate, JSF, … được dùng để tạo ra các ứng dụng web
3) Enterprise Application
Enterprise applications được gọi là ứng dụng doanh nghiệp Một ứng dụng được phân phối trong các hoạt động kinh doanh, chẳng hạn như ứng dụng ngân hàng, v.v Nó có
ưu điểm là bảo mật cấp cao, cân bằng tải và phân cụm Trong Java, EJB được sử dụng
để tạo các ứng dụng doanh nghiệp
4) Mobile Application
Mobile application là ứng dụng được tạo ra dành cho thiết bị di động Hiện nay, Android and Java ME được sử dụng để tạo ra các ứng dụng di động
1.5 Java Core API - Môi trường làm việc của java
API là các phương thức, giao thức kết nối với các thư viện và ứng dụng khác Nó là viết tắt của Application Programming Interface – giao diện lập trình ứng dụng API
cung cấp khả năng cung cấp khả năng truy xuất đến một tập các hàm hay dùng Và từ
đó có thể trao đổi dữ liệu giữa các ứng dụng
API có các loại sau:
Web API: là hệ thống API được sử dụng trong các hệ thống website Hầu hết các website đều ứng dụng đến Web API cho phép bạn kết nối, lấy dữ liệu hoặc cập nhật cơ sở dữ liệu Ví dụ: Bạn thiết kế chức nằng login thông Google, Facebook, Twitter, Github… Điều này có nghĩa là bạn đang gọi đến API của Hoặc như các ứng dụng di động đều lấy dữ liệu thông qua API
API trên hệ điều hành: Windows hay Linux có rất nhiều API, họ cung cấp các tài liệu API là đặc tả các hàm, phương thức cũng như các giao thức kết nối Nó giúp lập trình viên có thể tạo ra các phần mềm ứng dụng có thể tương tác trực tiếp với hệ điều hành
API của thư viện phần mềm hay framework: API mô tả và quy định các hành động mong muốn mà các thư viện cung cấp Một API có thể có nhiều cách triển khai khác nhau và nó cũng giúp cho một chương trình viết bằng ngôn ngữ này có thể sử dụng thư viện được viết bằng ngôn ngữ khác Ví dụ bạn có thể dùng Php để yêu cầu một thư viện tạo file PDF được viết bằng C++
1.6 Cài đặt và hướng dẫn sử dụng NetBeans
Trang 11KHOA CÔNG NGHỆ THÔNG TIN 11
NetBeans IDE là một công cụ hỗ trợ lập trình viết mã code miễn phí được cho là tốt
nhất hiện nay, được sử dụng chủ yếu cho các lập trình viên phát triển Java tuy nhiên phần mềm có dung lượng khá là nặng dành cho các máy cấu hình có RAM, CPU tương đối cao để vận hành
NetBeans IDE là môi trường phát triển tích hợp và cực kỳ cần thiết cho các lập trình
viên, công cụ này có thể hoạt động tốt với rất nhiều nền tảng hệ điều hành khác nhau
như Linux, Windows, MacOS, là một mã nguồn mở cung cấp các tính năng cần thiết
nhất nhăm tại ra các ứng dụng web, thiết bị di động, desktop Cũng giống
như Eclipse vậy, NetBeans IDE hỗ trợ rất nhiều những ngôn ngữ lập trình
như Python, Ruby, JavaScript, Groovy, C / C + +, và PHP
Qua nhiều phiên bản cũ, nay công cụ lập trình NetBeans IDE đã cập nhật lên phiên
bản 8.2 mới nhất có rất nhiều thay đổi và nâng cấp so với các phiên bản cũ hơn có thể
kể đến như:
Nâng cao ngôn ngữ lập trình C và C++
Nâng cấp, cải tiến các công cụ soạn thảo Profiler và Java
Hỗ trợ Docker, PHP 7
ECMAScript 6 và hỗ trợ thử nghiệm ECMAScript 7
Nâng cấp, cải tiến HTML 5 và Javascript
Để có thể cài đặt được NetBeans IDE các bạn phải cài đặt và cấu hình sẵn JDK trong máy thì mới cài đặt được NetBean IDE được chia thành nhiều gói khác nhau để
người dùng có thể tải về từng phần, tiết kiệm dung lượng, tùy theo nhu cầu của mình
Giống với Notepad++, NetBean IDE có gợi ý cú pháp khá tốt, và còn nhiều tính năng
khá thú vị như tự động căn chỉnh mã nguồn, Remote FTP, SVN … Chính vì thế, nó được xem là môi trường phát triển không thể bỏ qua cho các lập trình viên Nếu bạn nào đang sử dụng NetBeans IDE các bạn có thể download thêm Notepad++ để tạo nên
bộ đôi soạn thảo văn bản lập trình cực kỳ hiệu quả và thông minh
Tải phần mềm về máy tại https://netbeans.org/downloads/8.2/rc/
Hướng dẫn cài đặt NetBeans xem tại
https://freetuts.net/huong-dan-cai-dat-va-cau-hinh-netbeans-ide-chi-tiet-1210.html
Trang 12KHOA CÔNG NGHỆ THÔNG TIN 12
CHƯƠNG 2: LẬP TRÌNH CƠ BẢN VỚI JAVA
Gi ới thiệu:
Chương 2 trình bày kiến trúc java, giới thiệu kiểu dữ liệu, các lệnh cấu trúc và luồng nhập xuất
Mục tiêu:
- Khai báo được kiểu dữ liệu,
- Thực thi được một chương trình java,
- Sử dụng được các lệnh cấu trúc để giải quyết bài tập,
- Sử dụng được luồng nhập xuất vào bài tập
2.1 Kiến trúc Java
Khác với ngôn ngữ lập trình khác, thay vì biên dịch mã nguồn thành mã máy, Java được thiết kế biên dịch mã nguồn thành bytecode Bytecode sau đó được môi trường thực thi chạy
Ví dụ: tạo tập tin LapTrinhJava.java có nội dung mã sau
LapTrinhJava.java
Hình 2.1 : Ví dụ nội dung cơ bản của tập tin Java
Trang 13KHOA CÔNG NGHỆ THÔNG TIN 13
hotec: tên gói (package) chứa lớp Đặt tên gói phải sử dụng ký tự thường và dấu chấm Có thể xem package như folder còn class như file
LapTrinhJava: tên lớp Tên lớp phải giống tên tập tin java Viết hoa ký tự đầu của mỗi
ra machine code có thể chạy được trên các hệ điều hành
JVM tải toàn bộ class lên RAM bao gồm class của tập tin và class thư viện được sử dụng để khởi tạo ứng dụng Sau đó, bytecode verifier sẽ kiểm tra lại các bytecode vừa tạo có hợp lệ không Tiếp theo, JVM sẽ thông dịch bytecode sang mã máy và chạy Java sẽ thông dịch bytecode, vậy thì mỗi thao tác thực hiện được lặp đi lặp lại như các class common hay util thường xuyên được sử dụng sẽ phải thông dịch mỗi khi chạy Thế thì ứng dụng chạy chậm lắm Tại sao lại không biên dịch các class đó sau đó dùng lại Thế là Just In Time Compiler (JIT Compiler) ra đời JIT Compiler nó sẽ biên dịch các bytecode đã được thực thi trong JVM và cache lại Mỗi khi gọi đến các lệnh
đã được thực thi trước đó thì sẽ gọi vào cache trong JIT Compiler Quá trình này tiết kiệm tài nguyên và thời gian thực thi các lệnh
2.2 Các kiểu dữ liệu
Kiểu dữ liệu chia làm hai nhóm:
- Kiểu dữ liệu cơ sở gồm có byte, short, int, long, float, double, boolean and char
- Kiểu dữ liệu không cơ sở String, Arrays and Classes
Trang 14-KHOA CÔNG NGHỆ THÔNG TIN 14
9,223,372,036,854,775,808 đến
trong bảng ASCII
Ép kiểu dữ liệu
Ép kiểu dữ liệu có hai hình thức Đó là, ép kiểu tự động và ép kiểu tường minh
Ép kiểu tự động chỉ dùng cho kiểu dữ liệu cơ sở Ép kiểu dữ liệu cơ sở theo thứ tự byte
short char int long float double
Ép kiểu tường mình là cần phải khai báo
Trang 15KHOA CÔNG NGHỆ THÔNG TIN 15
Toán tử điều kiện
Toán tử điều kiện là toán tử 3 ngôi duy nhất trong ngôn ngữ Java
Trang 16KHOA CÔNG NGHỆ THÔNG TIN 16
Trong ví dụ 1, nếu dtb nhỏ hơn 5 thì
không xuất bất kỳ thông báo gì ra màn hình
Ví dụ 2: Xét điểm trung bình Nếu lớn hơn 5 thì thông báo “Đậu”, ngược lại thì thông báo “Rớt”
Trang 17KHOA CÔNG NGHỆ THÔNG TIN 17
Trang 18KHOA CÔNG NGHỆ THÔNG TIN 18
// khối lệnh N
break;
}
Ý nghĩa: switch là các trường hợp xảy ra của một biểu thức điều kiện
So sánh giá trị của biểu thức switch với giá trị của các case Nếu bằng với giá
trị của case nào thì sẽ thực hiện công việc của case đó, ngược lại sẽ thực
hiện công việc của default
Nếu công việc của case không chứa lệnh break thì case tiếp sau sẽ được
Trang 19KHOA CÔNG NGHỆ THÔNG TIN 19
- Dùng switch để kiểm tra tháng, xuất ngày theo từng tháng
- Đối với tháng 2, kiểm tra năm có nhuần thì ngày là 29, ngược lại là 28
Ví dụ 3: Viết chương trình tính thuế thu nhập Biết cách tính thuế suất như sau:
Ví dụ: Viết chương trình xuất ra số 1 đến 19
Trang 20KHOA CÔNG NGHỆ THÔNG TIN 20
Ý nghĩa: Thực hiện công việc trong khi biểu thức điều kiện có giá trị là true
Ví dụ: Viết chương trình xuất ra số 1 đến 19
while (điều kiện);
Ý nghĩa: Tương tự lệnh lặp while chỉ khác ở chỗ điều kiện được kiểm tra sau, nghĩa là công việc được thực hiện ít nhất 1 lần
Ví dụ: Viết chương trình chỉ cho nhập số nguyên dương
Trang 21KHOA CÔNG NGHỆ THÔNG TIN 21
LỆNH BREAK & CONTINUE
- break dùng để ngắt lệnh lặp
- continue dùng để thực hiện lần lặp tiếp theo ngay lặp tức
Ví dụ: Viết chương trình kiểm tra điểm nhập vào trong khoản 0 10
Trang 22KHOA CÔNG NGHỆ THÔNG TIN 22
Các công việc làm với mảng:
- Khai báo
- Truy xuất (đọc/ghi) phần tử
- Lấy số phần tử (chiều dài của mảng)
- Duyệt mảng
- Sắp xếp các phần tử mảng
Khai báo mảng
Khai báo không khởi tạo
int[] a; // mảng số nguyên chưa biết số phần tử
int b[]; // mảng số nguyên chưa biết số phần tử
String[] c = new String[5]; // mảng chứa 5 chuỗi
Khai báo có khởi tạo
// mảng số thực, 5 phần tử, đã được khởi tạo
double[] d1 = new double[]{2, 3, 4, 5, 6};
// mảng số thực, 5 phần tử, đã được khởi tạo
double[] d2 = {2, 3, 4, 5, 6};
Truy xuất (đọc/ghi) phần tử
Sử dụng chỉ số (index) để phân biệt các phần tử Chỉ số mảng tính từ 0
int a[] = {4, 3, 5, 7};
a[2] = a[1] * 4; // 45*4=180
Sau phép gán này mảng là {4, 3, 12, 7};
Lấy số phần tử (chiều dài của mảng)
Sử dụng thuộc tính length để lấy số phần tử của mảng
Trang 23KHOA CÔNG NGHỆ THÔNG TIN 23
Trang 24KHOA CÔNG NGHỆ THÔNG TIN 24
Arrays.sort không thể sắp xếp giảm cho mảng được Vì vậy, cần phải tự xây dựng hàm
System.out.println("Mảng được sắp xếp: "+Arrays.toString(a));
CHUỖI
Khái niệm: String là một chuỗi các ký tự String là một class được xây dựng sẵn trong Java String là một kiểu dữ liệu được sử dụng nhiều nhất trong lập trình String có rất nhiều phương thức giúp xử lý chuỗi một cách thuận tiện và hiệu quả
String s = “Hello World”;
Trang 25KHOA CÔNG NGHỆ THÔNG TIN 25
Ví dụ:
System.out.println("\t+ Họ và tên: Lý\r\n\t+ Tuổi: 40");
Các thao tác với chuỗi
Bảng 2.6: Phương thức của chuỗi
hoa/thường
indexOf() Tìm vị trí xuất hiện đầu tiên của chuỗi
con lastIndexOf() Tìm vị trí xuất hiện cuối cùng của chuỗi
con
Hình 2.8 : Kết quả
Trang 26KHOA CÔNG NGHỆ THÔNG TIN 26
replaceAll(find, replace) Tìm kiếm và thay thế tất cả
else{
////thông báo }
LỚP BAO KIỂU DỮ LIỆU CƠ SỞ
Do nhiều hàm trongJava chỉ làm việc với đối tượng mà không làm việc với kiểu cơ sở cho nên tương ứng với mỗi kiểu cơ sở Java định nghĩa một lớp bao để bao giá trị của kiểu cơ sở tương ứng gọi là lớp bao kiểu cơ sở
Bảng 2.7: Kiểu dữ liệu cơ sở và lớp bao tương ứng
Trang 27KHOA CÔNG NGHỆ THÔNG TIN 27
Có hai khái niệm về lớp bao là boxing và unboxing
Boxing là việc tạo đối tượng từ lớp bao để bọc giá trị cơ sở Có 3 cách để bao giá trị
cơ sở sau:
Integer a = Integer.valueOf(5) // bao tường minh
Integer a = new Integer(5) // bao tường minh
int a = scanner.nextInt(); hoặc int a = Integer.parseInt(s);
Trong ví dụ, người dùng nhập vào giá trị khác số thì sẽ xảy ra lỗi
Cú pháp:
try {
//lệnh nghi ngờ sẽ có lỗi }
Trang 28KHOA CÔNG NGHỆ THÔNG TIN 28
Ví dụ: Bắt lỗi khi người dùng nhập vào giá trị khác số
Stream là một dòng liên tục, có thứ tự các bytes dữ liệu chảy giữa chương trình và thiết bị ngoại vi Trong console có 3 stream tự động
1) System.out: standard output stream
2) System.in: standard input stream
3) System.err: standard error stream
Ví dụ:
System.out.println("Xin chào.");
System.err.println("Lỗi.");
int i=System.in.read(); //trả về mã ASCII của ký tự đầu tiên
Trang 29KHOA CÔNG NGHỆ THÔNG TIN 29
Lớp InputStream là một lớp trừu tượng Nó là lớp cha của tất cả các lớp đại diện cho một luồng vào của các bytes
Hình 2.10 : Các lớp của luồng nhập – Nguồn [5]
OutputStream: được sử dụng để ghi dữ liệu đến đích (destination)
Hình 2.11 : Luồng xuất - Nguồn [5]
Lớp OutputStream là một lớp trừu tượng Nó là lớp cha của tất cả các lớp đại diện cho một luồng ra của các bytes Một luồng ra chấp nhận các byte đầu ra và gửi chúng đến một số bộ phận chìm
Hình 2.12 : Các lớp luồng xuất – Nguồn [5]
Trang 30KHOA CÔNG NGHỆ THÔNG TIN 30
FileOutputStream
Java FileOutputStream là một luồng ra được sử dụng để ghi dữ liệu vào một tệp
Nếu bạn phải ghi các giá trị kiểu dữ liệu cơ bản vào một tệp, hãy sử dụng lớp
FileOutputStream Bạn có thể ghi dữ liệu hướng byte cũng như dữ liệu hướng ký tự thông qua lớp FileOutputStream
Các phương thức của FileOutputStream:
Bảng 2.8: Phương thức của FileOutputStream
protected void finalize() Xóa kết nối với tập tin output stream
void write(byte[] ary) Ghi tất cả chiều dài ary.length bytes của mảng
byte vào file output stream
void write(byte[] ary, int off,
int len)
Ghi tất cả chiều dài ary.length bytes của mảng byte bắt đầu tại offset off đến file output stream
void write(int b) Ghi một byte cụ thể vào file output stream
FileChannel getChannel() Trả về file channel object giao tiếp với file output
stream
FileDescriptor getFD() Trả về mô tả của tập tin giao tiếp với stream
void close() Đóng file output stream
Khai báo java.io.FileOutputStream để sử dụng FileOutputStream
Ví dụ: Xuất một ký tự vào tập tin
try (FileOutputStream fout = new FileOutputStream("testout.txt")) {
Trang 31KHOA CÔNG NGHỆ THÔNG TIN 31
Ví dụ: Xuất một chuỗi vào tập tin
try(FileOutputStream fout = new FileOutputStream("outString.txt")){
String s="Xin chào Java.";
byte b[]= s.getBytes();//chuyển sang kiểu byte
Java FileInputStream là một luồng ra được sử dụng để đọc dữ liệu từ một tệp
Nếu bạn phải đọc các giá trị kiểu dữ liệu cơ bản vào một tệp, hãy sử dụng lớp FileInputStream Bạn có thể ghi dữ liệu hướng byte cũng Indữ liệu hướng ký tự thông qua lớp FileInputStream
Các phương thức của FileInputStream:
Bảng 2.9: Phương thức FileInputStream
int read(byte[] b) Đọc tất cả bytes dữ liệu từ tập tin
int read(byte[] b, int off, int len) Đọc tất cả bytes dữ liệu tại off từ tập tin
FileChannel getChannel() Trả về file channel object giao tiếp với
Trang 32KHOA CÔNG NGHỆ THÔNG TIN 32
file input stream
FileDescriptor getFD() Trả về mô tả của tập tin giao tiếp với
stream
protected void finalize() Đảm bảo phương thức đóng của tập
không còn bất kỳ tham chiếu
Khai báo java.io.FileInputStream để sử dụng FileInputStream
Ví dụ: Đọc nội dung tập tin testout.txt và hiển thị ra màn hình
try(FileInputStream fin = new FileInputStream("testout.txt")){
Ví dụ: Đọc nội dung tập tin từ tập tin testin.txt và hiển thị ra màn hình
Hình 2.15 : Nội dung tập tin sẽ được đọc
try(FileInputStream fin = new FileInputStream("testin.txt")){
int i;
while((i=fin.read())!=-1){
System.out.print((char)i);
} fin.close();
}catch(Exception e){
System.out.println(e);
}
Trang 33KHOA CÔNG NGHỆ THÔNG TIN 33
BÀI TẬP CHƯƠNG 2 Bài tập 1: Viết chương trình nhập họ tên, điểm thường xuyên, điểm định kỳ từ bàn
phím, tính điểm trung bình và xuất ra màn hình với dạng Họ tên – Điểm thường xuyên – Điểm định kỳ - Điểm trung bình
Hướng dẫn:
Sử dụng Sytem.in.Read() để nhập dữ liệu
Sử dụng System.out.print, System.out.println, System.out.printf để xuất
Bài tập 2: Viết chương trình nhập cạnh a và b.Tính và xuất chu vi, diện tích tích hình
chữ nhật
Bài tập 3: Viết chương trình nhập cạnh a và b Kiểm tra a=b thì dùng công thức tính
hình vuông, ngược lại dùng công thức tính hình chữ nhật
Bài tập 4: Viết chương trình nhập vào số điện sử dụng của tháng và tính tiền điện
Nếu số điện sử dụng từ 0 đến 50 thì giá mỗi số điện là 1000
Nếu số điện sử dụng trên 50 thì giá mỗi số điện vượt hạn mức là 1200
Bài tập 5: Viết chương trình nhập vào tháng và hiển thị số ngày của tháng
Bài tập 6: Viết chương trình hiển thị bảng cửu chương
Bài tập 7: Viết chương trình nhập 2 mảng họ tên và điểm của sinh viên Xuất 2 mảng
đã nhập, mỗi sinh viên có thêm học lực
Bài tập 8: Ghi ký tự đầu tiên của tên học sinh vào một tập tin
Bài tập 9: Tạo tập tin txt với nội dung là Donal Trumph Sử dụng luồng đọc, để đọc
nội dung trong tập tin txt vừa tạo và hiển thị ra màn hình
Trang 34KHOA CÔNG NGHỆ THÔNG TIN 34
CHƯƠNG 3: XÂY DỰNG GIAO DIỆN NGƯỜI DÙNG
Gi ới thiệu:
Chương 3 giới thiệu giao diện người dùng, các điều khiển để thiết kế giao diện Swing
Mục tiêu:
- Thiết kế giao diện người dùng đồ họa sử dụng Swing,
- Sử dụng được các điều khiển cơ bản trong Swing
3.1 Cấu trúc chung của giao diện
Java Foundation Classes (JFC) là một tập hợp các thành phần GUI giúp đơn giản hóa việc phát triển các ứng dụng máy tính để bàn
Ví dụ: Một ứng dụng GUI quản lý nhân viên
Hướng dẫn tạo một cửa sổ giao diện:
Bước 1: File New Project Đặt tên là Java Swing
Bước 2: Xóa package tự tạo từ NetBean
Hình 3.1 : Hình minh họa giao diện
Trang 35KHOA CÔNG NGHỆ THÔNG TIN 35
Bước 3: Tạo mới một package
Bước 4: Tạo class mới
Bước 5: Viết mã chương trình như sau
* Phần chi tiết các của ví dụ sẽ được hướng dẫn tiếp ở phần 3.5
Cấu trúc chung của một giao diện GUI
Hình 3.2 : Tạo Package
Hình 3.3 : Tạo lớp
Trang 36KHOA CÔNG NGHỆ THÔNG TIN 36
Cửa sổ - Window
❖Cửa sổ ứng dụng
❑ Khung chứa – Container
❖Chứa một hoặc nhiều điều khiển
❑ Điều khiển – Control
❖TextField, Radio, CheckBox,
Button, Table…
❑ Chú ý:
❖Một ứng dụng có thể có nhiều
của sổ
❖Một khung chứa có thể chứa
nhiều điều khiển hoặc khung chứa
khác
3.2 Giới thiệu gói AWT và Swing
AWT (Abstract Window Toolkit)
Java AWT là một API để phát triển GUI hoặc các ứng dụng dựa trên desktop trong java
Các thành phần Java AWT phụ thuộc vào nền tảng, nghĩa là các thành phần được hiển thị theo chế độ xem của hệ điều hành AWT có trọng lượng lớn, nghĩa là các thành phần của nó đang sử dụng tài nguyên của hệ điều hành
Gói java.awt cung cấp các lớp cho AWT api như TextField, Label, TextArea, RadioButton, CheckBox, Choice, List, v.v
Các lớp AWT
Hình 3.4 : Cấu trúc chung của một giao diện
Trang 37KHOA CÔNG NGHỆ THÔNG TIN 37
SWING
Hướng dẫn Java Swing là một phần của Java Foundation Classes (JFC) được sử dụng
để tạo các ứng dụng dựa trên cửa sổ Nó được xây dựng trên API AWT và hoàn toàn được viết bằng java
Không giống như AWT, Java Swing cung cấp các thành phần nhẹ và độc lập với nền tảng
Gói javax.swing cung cấp các lớp cho API java swing như JButton, JTextField, TextArea, JRadioButton, JCheckbox, JMenu, JColorChooser, v.v
Các lớp Java Swing
Hình 3.5 : Các lớp trong AWT
Trang 38KHOA CÔNG NGHỆ THÔNG TIN 38
3.3 Trình quản lý giao diện – Layout
Các component trong Java Swing được chia làm hai loại là container và children, trong
đó container là loại component dùng để chứa các component khác, ví dụ như JFrame, JPanel… còn children là các component như JLabel, Jbutton, JTextField… khi chúng
ta đặt các component con lên các container thì việc đặt và sắp xếp theo vị trí nào đó và
nó được gọi là Layout
The LayoutManagers được dùng để sắp xếp các điều khiển theo từng nhóm cụ thể LayoutManager là một interface Layout managers có các lớp sau:
Hình 3.6 : Các lớp của Swing
Trang 39KHOA CÔNG NGHỆ THÔNG TIN 39
Hằng số được sử dụng với hàm là:
public static final int NORTH
public static final int SOUTH
public static final int EAST
public static final int WEST
public static final int CENTER
Ví dụ: Tạo 5 buttons và đặt chúng vào 5 vùng
Trang 40KHOA CÔNG NGHỆ THÔNG TIN 40
JFrame f;
Border(){
f=new JFrame();
JButton b1=new JButton("NORTH");;
JButton b2=new JButton("SOUTH");;
JButton b3=new JButton("EAST");;
JButton b4=new JButton("WEST");;
JButton b5=new JButton("CENTER");;