Tải bản đầy đủ (.pdf) (24 trang)

CHUYÊN ĐỀ JAVA ppsx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.64 MB, 24 trang )

MÔ HÌNH HAI TẦNG ĐƠN GIẢN
(2 LAYER)
CHUYÊN ĐỀ JAVA
Nguyễn Hoàng Anh
Email:

ĐH KHTN, 2011
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Nội dung trình bày
 Hướng tiếp cận phân tầng trong phần mềm
 Vai trò của hướng tiếp cận trong phần mềm
 Một số hướng tiếp cận phân tầng thông dụng
 Mô hình hai tầng đơn giản
 Demo
2
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Hướng tiếp cận phân tầng
 Chia phần mềm thành các tầng (Layer)
 Khi thiết kế cần lưu ý:
– Mỗi tầng chịu trách nhiệm riêng
– Dữ liệu đầu vào và đầu ra của mỗi tầng nên rõ ràng
và dễ sử dụng.
– Khi một tầng bị thay đổi thì khả năng ảnh hưởng của
nó đến các tầng khác thấp nhất nhất có thể có.

3
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Vai trò của hướng tiếp cận phân tầng
 Sẵn sàng cho việc mở rộng hệ thống
 Tái sử dụng mã nguồn
 Dễ bảo trì hệ thống


 Dễ dàng phân chia công việc trong nhóm

4
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Một số mô hình phân tầng
 2 Layer / 2 Tier
 3 Layer / 3 Tier
 N Layer / N Tier
5
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Mô hình 2 tầng đơn giản
6
Cơ sở dữ liệu quan hệ
Tầng dữ liệu
Tầng giao diện
Đối tượng trao đổi
(POJO)
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Đối tượng trao đổi dữ liệu (POJO) đơn giản
 Mỗi lớp POJO đại diện cho bảng trong cơ sở dữ liệu
 Mỗi lớp POJO gồm những thành phần sau
– Các thuộc tính tương ứng với các cột trong bảng
– Tối thiểu một phương thức khởi tạo mặc định
• Nên viết thêm phương thức khởi tạo đầy đủ tham
số
– Các phương thức cung cấp và cập nhật thông tin
cho từng thuộc tính (get/set)
7
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Đối tượng trao đổi dữ liệu (POJO) đơn giản

8

YYYTable


ZZZTable


XXXTable

XXXPOJO
YYYPOJO
ZZZPOJO
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Đối tượng trao đổi dữ liệu (POJO) đơn giản
9
PhongBan
NhanVien
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
POJO: PhongBan
10
1
2
3
4
5
6
7
8
9

10

11

12

13

14

15

16

17

package pojo;

import java.io.Serializable;


public
class PhongBan implements Serializable {

//Các thuộc tính

private int maPhongBan;

private String tenPhongBan;


//Các phương thức khởi tạo

public PhongBanPOJO() {

}

public PhongBanPOJO(int
maPhongBan, String tenPhongBan) {

this.maPhongBan = maPhongBan;

this.tenPhongBan = tenPhongBan;

}

// Các phương thức get/set

. . .
}

Nguyễn Hoàng Anh – – ĐH KHTN - 2011
POJO: NhanVien
11
1
2
3
4
5
6
7

8
9
10

11

12

13

14

15

16

17

18

package pojo;

import java.io.Serializable;

import java.util.Date;



public
class NhanVien implements Serializable {


//Các thuộc tính

private String maNhanVien;

private String tenNhanVien;

private Date ngaySinh;

private String diachi;

private String email;

private String dienThoai;

private int maPhongBan;

//Các phương thức khởi tạo

. . .

//Các phương thức get/set

. . .
}

Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Tầng dữ liệu (DAO) đơn giản
 Mỗi DAO đại diện cho một bảng bên dưới cơ sở dữ liệu.
 Mỗi DAO thông thường chứa các phương thức như

– Thêm, xóa, sửa
– Rút trích dữ liệu
 Mỗi phương thức trong DAO có các tham số đầu vào và
các kết quả trả ra là:
– POJO, mảng POJO (ArrayList<POJO>)
– Kiểu dữ liệu đơn giản như: boolean,int, String, float, …
12
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Tầng dữ liệu (DAO) đơn giản
13

YYYTable


ZZZTable


XXXTable

XXXDAO YYYDAO
ZZZDAO
JDBC
POJO
POJO
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
PhongBanDAO
14
1
2
3

4
5
6
7
8
9
10

11

12

13

14

15

16

17

18

19

20

21


public
class PhongBanDAO {

public static ArrayList<PhongBan> layDanhSachPhongBan() {

ArrayList<PhongBan> ds = new ArrayList<PhongBan>();

try {

String sql = "SELECT * FROM PHONGBAN";

MySQLDataAccessHelper helper = new

MySQLDataAccessHelper();

helper.open();

ResultSet rs = helper.executeQuery(sql);

while (rs.next()) {

PhongBan pb = new PhongBan();

pb.setMaPhongBan(rs.getInt("MaPhongBan"));

pb.setTenPhongBan(rs.getString("TenPhongBan"));

ds.add(pb);

}


helper.close();

} catch (Exception ex) {

System.out.println(ex.getMessage());

}

return ds;

}
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
PhongBanDAO
15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

16
17
18
19
20
21
22
public
class PhongBanDAO {

. . .

public static ArrayList<PhongBan> timKiemPhongBanTheoTen(

String tenPhongBan) {


ArrayList<PhongBan> ds = new ArrayList<PhongBan>();

try {

String sql = "SELECT * FROM PHONGBAN WHERE TENPHONGBAN LIKE '%"


+ tenPhongBan + "%'";

MySQLDataAccessHelper helper = new MySQLDataAccessHelper();

helper.open();


ResultSet rs = helper.executeQuery(sql);

while (rs.next()) {

PhongBan pb = new PhongBan();

pb.setMaPhongBan(rs.getInt("MaPhongBan"));

pb.setTenPhongBan(rs.getString("TenPhongBan"));

ds.add(pb);

}

helper.close();

} catch (Exception ex) {

System.out.println(ex.getMessage());

}return ds;

}
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
PhongBanDAO
16
1
2
3
4

5
6
7
8
9
10

11

12

13

14

15

16

17

18

19

20

public
class PhongBanDAO {


. . .

public static boolean themPhongBan(PhongBan pb) {

boolean kq = false;

String sql = String.format(

"INSERT INTO PHONGBAN(TenPhongBan) VALUES ('%s');"
,

pb.getTenPhongBan());

MySQLDataAccessHelper helper = new
MySQLDataAccessHelper();

helper.open();

int n = helper.executeUpdate(sql);

if (n == 1) {

kq = true;

}

helper.close();

return kq;


}

. . .
}

Nguyễn Hoàng Anh – – ĐH KHTN - 2011
PhongBanDAO
17
1
2
3
4
5
6
7
8
9
10

11

12

13

14

15

16


17

18

19

public
class PhongBanDAO {

. . .

public static boolean xoaPhongBan(int maPhongBan) {

boolean kq = false;

String sql = String.format(
"DELETE FROM PHONGBAN WHERE
MAPHONGBAN=%d"
, maPhongBan);

MySQLDataAccessHelper helper = new
MySQLDataAccessHelper();


helper.open();

int n = helper.executeUpdate(sql);

if(n==1){


kq=true;

}

helper.close();

return kq;

}

. . .
}

Nguyễn Hoàng Anh – – ĐH KHTN - 2011
PhongBanDAO
18
1
2
3
4
5
6
7
8
9
10

11


12

13

14

15

16

public
class PhongBanDAO {

. . .

public static boolean capNhatPhongBan(PhongBan pb) {

boolean kq = false;

String sql = String.format("UPDATE PHONGBAN SET
TENPHONGBAN='%s' WHERE MAPHONGBAN=%d", pb.getTenPhongBan(),
pb.getMaPhongBan());


MySQLDataAccessHelper helper = new
MySQLDataAccessHelper();


helper.open();


int n = helper.executeUpdate(sql);

if(n==1){kq=true;}

helper.close();

return kq;

}
}

Nguyễn Hoàng Anh – – ĐH KHTN - 2011
NhanVienDAO ?
 Lấy danh sách nhân viên
 Lấy thông tin chi tiết của nhân viên dựa trên mã nhân viên
 Kiểm tra xem nhân viên đã tồn tại chưa
 Thêm sinh viên
 Xóa sinh viên
 Cập nhật sinh viên
19
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Tầng giao diện (GUI)
 Giao diện Web
 Giao diện Window
 Giao diện Mobile
20
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Tầng giao diện (GUI)
21


YYYTable

ZZZTable

XXXTable
MÀN HÌNH GIAO DIỆN
YYYDAO
ZZZDAO
JDBC
POJO
POJO
XXXDAO
MÀN HÌNH GIAO DIỆN
MÀN HÌNH GIAO DIỆN N
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
22
MÔ HÌNH HAI TẦNG ĐƠN GIẢN
(2 LAYER)
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
Tài liệu tham khảo
 Nguyễn Hoàng Anh, Tập bài giảng và video môn
chuyên đề Java, 2010

23
Nguyễn Hoàng Anh – – ĐH KHTN - 2011
HỎI VÀ ĐÁP
24

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×