Mục tiêu Sau khi hoàn thành module 1 , học viên sẽ có khả năng: Nắm vững khái niệm cơ bản trong ngôn ngữ lập trình JAVA Thiết kế giao diện windows forms đơn giản Làm việc với tập
Trang 1227 Nguyễn Văn Cừ – Quận 5 – Tp Hồ Chí Minh
Tel: 8351056 – Fax 8324466 – Email: ttth@hcmus.edu.vn
ĐỀ CƯƠNG CHI TIẾT
KHĨA HỌC LẬP TRÌNH CƠNG NGHỆ JAVA
Module 1: Java cơ bản
Trang 2Mục tiêu
Sau khi hoàn thành module 1 , học viên sẽ có khả năng:
Nắm vững khái niệm cơ bản trong ngôn ngữ lập trình JAVA
Thiết kế giao diện windows forms đơn giản
Làm việc với tập tin, mảng
Lập trình hướng đối tượng cơ bản
Đưa dịch vụ vào sử dụng trong ứng dụng windows forms
Xây dựng ứng dụng nhỏ
Lập trình có phong cách, phối hợp làm việc nhóm tốt, quản lý thời gian hiệu quả
Đối tượng học viên
Học sinh, đã tốt nghiệp PTTH (chương trình LTV dành cho HV)
Sinh viên các trường Đại học, Cao đẳng, Trung cấp có kiến thức lập trình cơ bản (chương trình LTV dành cho SV)
Phần mềm sử dụng
Windows 7.0
Eclipse (plugin Windows Builder Pro)
Phân bố bài giảng
1 Tổng quan - Môi trường làm việc
2 Kiểu dữ liệu cơ sở
Trang 3 Giới thiệu ứng dụng Java
Tổng quan về lập trình (Programming) , chương trình (Program), ngôn ngữ lập trình
(Programming Language), ngôn ngữ trung gian của Java (Byte code)
Lịch sử phát triển của Java
Môi trường phát triển ứng dụng
Giới thiệu về Eclipse
Các thành phần của Eclipse
Cài đặt Eclipse và Plugin
Xây dựng ứng dụng đầu tiên
Cấu trúc chương trình viết bằng Java
Xây dựng và thực thi chương trình viết bằng Java
Trang 4BÀI 2: KIỂU DỮ LIỆU CƠ SỞ
Mục tiêu
Kết thúc bài học này, học viên sẽ có khả năng:
- Sử dụng các kiểu dữ liệu cơ sở
- Nắm được cú pháp ngôn ngữ Java trong lập trình ứng dụng
- Ôn lại các toán tử, các cấu trúc điều khiển, cách xử lý lỗi
Dàn bài
Kiểu dữ liệu và chuyển đổi kiểu dữ liệu
Kiểu cơ sở
Kiểu tham chiếu
Cơ chế chuyển đổi kiểu dữ liệu
Biến và hằng số
Khái niệm biến
Khái niệm hằng số
Quy ước đặt tên biến và hằng số
Cú pháp khai báo biến và hằng số
Các xử lý trên kiểu String
Khái niệm kiểu String, các phương thức xử lý trên String
Lớp StringBuilder
Lớp StringTokenizer
Trang 5BÀI 3: GIAO DIỆN 1
Trang 6BÀI 4: XỬ LÝ TẬP TIN
Mục tiêu
Kết thúc bài học này, học viên có thể thao tác trên tập tin để đọc và xử lý nội dung tập tin
Dàn bài
Tổng quan về I/O Stream
Khái niệm về I/O Stream
Đọc dữ liệu nhị phân với Byte Stream
Đọc dữ liệu ký tự với Character Stream
Sử dụng vùng đệm trong xử lý đọc ghi dữ liệu với Buffered Stream
Đọc ghi dữ liệu theo định dạng với Scanning và Formating
Xử lý đọc ghi dữ liệu với Data Stream
Xử lý đọc ghi các đối tượng với Object Stream
Tổng quan về làm việc với tập tin (File I/O)
Làm việc với đường dẫn tập tin
Kiểm tra tồn tại tập tin
Tạo mới, xóa, di chuyển tập tin
Trang 8BÀI 6: GIAO DIỆN 2
Trang 9BÀI 7: ĐỐI TƯỢNG
Xây dựng lớp đối tượng
Tạo lớp và đối tượng
Biến thực thể, các chỉ định từ truy xuất: public, private, protected, default
Phương thức khởi tạo
Trang 12Mục lục
Mục tiêu 2
Đối tượng học viên 2
Phần mềm sử dụng 2
Phân bố bài giảng 2
DÀN Ý CHI TIẾT 3
BÀI 1: TỔNG QUAN - MÔI TRƯỜNG LÀM VIỆC 3
Mục tiêu 3
Dàn bài 3
BÀI 2: KIỂU DỮ LIỆU CƠ SỞ 4
Mục tiêu 4
Dàn bài 4
BÀI 3: GIAO DIỆN 1 5
Mục tiêu 5
Dàn bài 5
BÀI 4: XỬ LÝ TẬP TIN 6
Mục tiêu 6
Dàn bài 6
BÀI 5: MẢNG CƠ SỞ 7
Mục tiêu 7
Dàn bài 7
BÀI 6: GIAO DIỆN 2 8
Mục tiêu 8
Dàn bài 8
BÀI 7: ĐỐI TƯỢNG 9
Mục tiêu 9
Dàn bài 9
BÀI 8: SỬ DỤNG DỊCH VỤ 10
Mục tiêu 10
Dàn bài 10
BÀI 9: TỔNG KẾT 11
Mục tiêu 11
Dàn bài 11
Mục lục 12
Trang 13BÀI 1: Tổng quan – Môi trường làm việc
- Xem slide module 1 – bài 1 – mục 1
d Ngôn ngữ trung gian của Java
- Xem slide module 1 – bài 1 – mục 1
2 Lịch sử phát triển của Java
- Xem slide module 1 – bài 1 – mục 1
3 Môi trường phát triển ứng dụng
a Giới thiệu Eclipse
- Xem slide module 1 – bài 1 – mục 2
Trang 14b Các thành phần của Eclipse
- Xem slide module 1 – bài 1 – mục 2
c Cài đặt Eclipse & plugin
- Cài đặt Eclipse
Xem slide module 1 – bài 1 – mục 2
- Cài đặt Plugin
Xem slide module 1 – bài 1 – mục 2
4 Xây dựng và thực thi chương trình viết bằng Java
a Cấu trúc chương trình viết bằng Java
- Xem slide module 1 – bài 1 – mục 3
b Xây dựng và thực thi chương trình
- Xem slide module 1 – bài 1 – mục 3
c Tạo Project
- File > New > Java Project > nhập tên của Project > chọn vị trí lưu trữ hoặc để vị trí mặc định > Finish
- Cấu trúc Project:
- Xem slide module 1 – bài 1 – mục 3
d Tạo một ứng dụng trên Console
- Chọn Project chứa ứng dụng > src > New > Class > nhập tên của class > Finish
- Ví dụ: Tạo ứng dụng xuất câu chào như sau:
- Source
Trang 15e Tạo một ứng dụng Windows Form:
- Chọn Project chứa ứng dụng > src > New > Others… > chọn JFrame
> nhập tên của ứng dụng > Finish
- Ví dụ: Tạo ứng dụng xuất câu chào như sau:
- Hướng dẫn:
+ Khai báo biến:
private static final String CAU_CHAO = "Chào bạn %s, chào mừng bạn đến với ngôn ngữ lập trình Java.";
Trang 16BÀI 2: Kiểu dữ liệu cơ sở
1 Kiểu dữ liệu và chuyển đổi kiểu dữ liệu
- Xem slide module 1 – bài 2 – mục 1
Cơ chế chuyển đổi kiểu dữ liệu
- Xem slide module 1 – bài 2 – mục 1
2 Biến và hằng số
a Khái niệm biến
- Xem slide module 1 – bài 2 – mục 1
b Khái niệm hằng số
- Xem slide module 1 – bài 2 – mục 2
c Quy ước đặt tên biến và hằng số
- Tên biến có thể gồm các ký tự chữ, ký tự số, dấu gạch dưới ‘_’, và dấu ‘$’
- Tên biến phải bắt đầu bằng ký tự chữ
- Tên biến không được trùng với từ khóa và từ dành riêng của Java
- Tên biến có phân biệt chữ hoa – thường
- Nếu tên biến chỉ gồm một từ đơn, tên biến nên viết chữ thường
- Nếu tên biến gồm nhiều từ, ký tự đầu của từ đầu viết thường, ký tự đầu của mỗi từ kế tiếp viết hoa
d Cú pháp khai báo biến và hằng số
- Khai báo biến
- Xem slide module 1 – bài 2 – mục 2
- Khai báo hằng
Trang 17- Xem slide module 1 – bài 2 – mục 2
3 Các toán tử
a Toán tử gán
b Toán tử số học
c Toán tử một ngôi
Trang 18kq= a == b ? true: false; // kq=false
f Toán tử tiền tố, hậu tố
Trang 19- Các toán tử tăng (++) và giảm ( ) được sử dụng để làm tiền tố và hậu tố Trong trường hợp tiền tố, các toán tử tăng hoặc giảm được đặt trước biến kiểu dữ liệu đơn giản
g Độ ưu tiên toán tử
- Tính kết hợp và độ ưu tiên toán tử
Trang 204 Các câu lệnh điều kiện
- Cho phép chúng ta thay đổi luồng thi hành của chương trình dựa vào các biểu thức điều kiện
- Các câu lệnh điều kiện:
- Lưu đồ
- Ví dụ:
Xét kết quả học tập: nếu điểm trung bình >=5: kết quả là “Đậu”
double dtb;
Trang 21else{
// Khối lệnh B }
Trang 22- Là các câu lệnh if else if nối đuôi
- Điều kiện sẽ được kiểm tra tuần tự từ đầu đến cuối
Trang 23d Câu lệnh switch – case
- Câu lệnh switch – case được dùng để thay thế cho câu lệnh if – else –
// câu lệnh;
break;
default:
Trang 24//câu lệnh;
}
- Ví dụ
Nhập vào tháng, năm, tìm số ngày tối đa của tháng
int thang, nam;
// nhập giá trị cho thang, nam
Trang 26- Cú pháp
do{
// Khối lệnh lặp }
while (Điều kiện lặp);
Trang 27for (biểu thức khởi tạo biến đếm;
điều kiện lặp;
biểu thức tăng/giảm giá trị biến đếm){
// Khối lệnh lặp }
d Câu lệnh nhảy: break, continue
- Cho phép thay đổi thứ tự thi hành của chương trình
- break:
+ Kết thúc 1 chuỗi lệnh trong câu lệnh switch
+ Thoát khỏi vòng lặp
Trang 286 Các xử lý trên kiểu String
- Khái niệm: Là lớp quản lý dữ liệu văn bản có
nội dung không thay đổi được
String s1 = “New Year”;
// Tính chiều dài chuỗi
Trang 29int len = s.length(); // 6
// Nối chuỗi s1 vào chuỗi s: tương đương s + s1
s.concat(s1); // Happy New Year
// Lấy một ký tự tại vị trí số 8 của s
char result = s.charAt(8); // e
s.replace(s1, s2); // New New Year
// Loại bỏ các khoảng trắng thừa của chuỗi s3
String s3 = “ Hello Bi ”;
s3.trim();// Hello Bi
// Tạo chuỗi con s4 từ chuỗi s từ vị trí số 6
String s4 = s.substring(6); // New Year
a Lớp StringBuilder
- Xem slide module 1 – bài 2 – mục 3
- Các phương thức
Trang 30+ Xem slide module 1 – bài 2 – m ục 3
- reverse(): Đảo ngược chuỗi trong đối tượng đang có, có kết quả trả
về là một tham chiếu đến đối tượng này
b Lớp StringTokenizer
- Chia chuỗi thành các chuỗi con
- Các hàm khởi tạo của lớp StringTokenizer
+ Xem slide module 1 – bài 2 – m ục 3
Trang 32BÀI 3: Giao diện 1
1 Giới thiệu
- Các điều khiển (thể hiện) là các đối tượng dành cho người dùng tương tác với chương trình để thực hiện một công việc nào đó, hoặc xem một nội dung
2 Các điều khiển và thể hiện
- Mỗi điều khiển được sử dụng là một lớp điều khiển nằm trong thư viện Swing – GUI của Java
Trang 33g JFileChooser
- Xem slide module 1 – bài 3 – mục 2
- Ví dụ: Tạo một file chooser
JButton button = new JButton("Select File");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
JFileChooser fileChooser = new JFileChooser();
int returnValue = fileChooser.showOpenDialog(null);
Trang 34BÀI 4: Xử lý tập tin
1 Tổng quan về I/O Stream
a Khái niệm về I/O Stream
- Xem nội dung module 1 – bài 4 – mục 1
b Đọc dữ liệu nhị phân với Byte Stream
- Xem nội dung module 1 – bài 4 – mục 1
- Đọc dữ liệu với Byte Stream
int i; s="";
try(FileInputStream in=
new FileInputStream("C:/BTJV/Test.txt")){ while ((i=in.read()) !=-1)
s+=(char)i;
ta1.setText(s);
}
catch (FileNotFoundException ex1){
JOptionPane.showMessageDialog(null,"Khong tim thay tap tin"); }
catch (IOException ex2){
Trang 35c Đọc dữ liệu ký tự với Character Stream
- Luồng ký tự (Character Stream) hỗ trợ đọc ghi luồng ký tự Unicode
- Tất cả các lớp luồng ký tự đều là lớp con cả Reader và Writer
- Đọc dữ liệu với Character Stream
Trang 36}
catch (FileNotFoundException ex1){
JOptionPane.showMessageDialog(null,"Khong tim thay tap tin"); }
catch (IOException ex2){
- Ghi dữ liệu với Character Stream
//String[] ss={"Xin chào","Chào mừng đến với lập trình Java"};
Trang 37d Sử dụng vùng đệm trong xử lý đọc ghi dữ liệu với Buffered Stream
- Xem nội dung module 1 – bài 4 – mục 1
while ((chuoi=in.readLine())!=null)
s+=chuoi;
ta1.setText(s);
}
catch (FileNotFoundException ex1){
JOptionPane.showMessageDialog(null,"Khong tim thay tap tin"); }
catch (IOException ex2){
Trang 38e Đọc ghi dữ liệu theo định dạng với Scanning và Formating
- Chuyển đổi định dạng dữ liệu trong quá trình đọc ghi dữ liệu
+ Scanner: phân tách dữ liệu thành các thẻ bài
+ Formatting: tổng hợp dữ liệu thành định dạng người dùng có thể xử lý
- Đọc dữ liệu
s="";
try (Scanner sc=new Scanner(new BufferedReader(
new FileReader("C:/BTJV/Test3.txt")))){
Trang 39while (sc.hasNext())
s+=sc.next();
ta1.setText(s);
}
catch (FileNotFoundException ex1){
JOptionPane.showMessageDialog(null,"Khong tim thay tap tin"); }
Trang 40- Hỗ trợ đọc ghi các giá trị thuộc kiểu cơ sở và String theo định dạng nhị phân
- Ghi dữ liệu
double[] gia = { 19.99, 9.99, 15.99 };
int[] soLuong = { 12, 8, 13};
String[] moTa = {“Áo thun",“Túi xách",“Balo“};
try(DataOutputStream out = new DataOutputStream(
Trang 41catch (FileNotFoundException ex1){
JOptionPane.showMessageDialog(null,"Khong tim thay tap tin"); }
catch (EOFException ex){ }
g Xử lý đọc ghi các đối tượng với Object Stream
- Hỗ trợ đọc ghi các đối tượng
- Các đối tượng phải thực thi interface Serializabless
Trang 42JOptionPane.showMessageDialog(null,"Ghi file thành công"); }
2 Tổng quan về làm việc với tập tin, thư mục
a Làm việc với đường dẫn tập tin, thư mục
- Xem nội dung module 1 – bài 4 – mục 2
b Kiểm tra tồn tại tập tin, thư mục
Trang 43Path p=Paths.get("1.jpg");
if (Files.exists(p))
JOptionPane.showMessageDialog(null,"Có tập tin"); else
JOptionPane.showMessageDialog(null,"Không có tập tin");
c Kiểm tra truy xuất đến tập tin
- Tập tin cho phép đọc: Files.isReadable(path)
- Tập tin cho phép ghi: Files.isWritable(path)
d Xóa tập tin
- Xem nội dung module 1 – bài 4 – mục 2
e Di chuyển tập tin, thư mục
- Sao chép tập tin, thư mục:
Files.copy(fileNguon,fileDich,REPLACE_EXISTING);
- Di chuyển tập tin, thư mục:
Files.move(fileNguon,fileDich,REPLACE_EXISTING);
Trang 44BÀI 5: Mảng cơ sở
1 Khái niệm mảng
- Xem slide module 1 – bài 5 – mục 1
2 Các kiểu mảng
- Xem slide module 1 – bài 5 – mục 1
3 Mảng một chiều và các thao tác xử lý cơ bản trên mảng một chiều
a Khai báo và khởi tạo mảng một chiều
- Xem slide module 1 – bài 5 – mục 2
b Các thao tác cơ bản trên mảng một chiều
- Xem slide module 1 – bài 5 – mục 2
c Mảng String
Trang 45String[] list = { “JAVA”, “C#”, “PHP”};
for (int i=0;i< list.length;i++)
// Sao chép mảng array1 sang array2
int[] arr2 = Arrays.copyOf(arr1, 6); // 10 10 10 10 10 0
Trang 46BÀI 6: Giao diện 2
1 Các điều khiển và thể hiện
- Xem slide module 1 – bài 6 – mục 1
- Kiểm tra xem điều khiển nào trong ButtonGroup đang được chọn Enumeration elements = group.getElements();
Trang 47- Xem slide module 1 – bài 6 – mục 1
- Ví dụ: Tạo menu item có thể xác định sự thay đổi trạng thái
JMenuItem item = new JMenuItem("Label") {
public void menuSelectionChanged(boolean isSelected) {
Trang 48BÀI 7: Đối tượng
1 Tổng quan lập trình hướng đối tượng
a Khái niệm lập trình hướng đối tượng
Đặc điểm của lập trình hướng đối tượng
- Xem slide module 1 – bài 7 – mục 1
Ưu điểm của lập trình hướng đối tượng
- Xem slide module 1 – bài 7 – mục 1
b Các đặc trưng cơ bản của lập trình hướng đối tượng
- Xem slide module 1 – bài 7 – mục 1
2 Xây dựng lớp đối tượng
a Tạo lớp và đối tượng
- Xem slide module 1 – bài 7 – mục 2
Trang 49public double a,b,c;
}
c Các chỉ định từ truy xuất:
- Xem slide module 1 – bài 7 – mục 2
d Phương thức khởi tạo
- Xem slide module 1 – bài 7 – mục 2
e Phương thức tính toán xử lý
- Xem slide module 1 – bài 7 – mục 2
- Ví dụ:
Khai báo phương thức tính
chu vi cho lớp tam giác
class TamGiac{
// biến thực thể public double a,b,c;
// hàm dựng mặc định public TamGiac() { }
// phương thức tính chu vi public double tinhChuVi(){
return a+b+c;
}
}
- Ví dụ
Tính chu vi tam giác
TamGiac t=new TamGiac();
t.a=2;t.b=3;t.c=4;
Trang 50System.out.printf(“Tam giac (%f,%f,%f)”, t.a,t.b, t.c);
System.out.printf(“Chu vi tam giac: %f”, t.tinhChuVi()); Truyền tham số cho phương thức
- Xem slide module 1 – bài 7 – mục 2
Truyền tham chiếu
public static void Swap(MyClass
a,MyClass b){
MyClass
temp=a;a=b;b=temp;
}
public static void main(String args[]){
MyClass a=new MyClass(1);
MyClass b=new MyClass(2);
System.out.printf(“a=%d, b=%d”,a.x,b.x);
Trang 51Swap(a,b);
System.out.printf(“a=%d, b=%d”,a.x,b.x);
}
- Ví dụ:
Truyền tham chiếu
public static void Swap(MyClass a,MyClass b){
MyClass temp=new MyClass(a);
a.x=b.x;b.x=temp.x;
}
public static void main(String args[]){
MyClass a=new MyClass(1);
MyClass b=new MyClass(2);
System.out.printf(“a=%d, b=%d”,a.x,b.x);
Swap(a,b);
System.out.printf(“a=%d, b=%d”,a.x,b.x);
}
Phương thức có tham số thay đổi
- Xem slide module 1 – bài 7 – mục 2