YOMEDIA
ADSENSE
CHUYÊN ĐỀ JAVA BASIC
64
lượt xem 4
download
lượt xem 4
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
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ó.
AMBIENT/
Chủ đề:
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: CHUYÊN ĐỀ JAVA BASIC
- CHUYÊN ĐỀ JAVA MÔ HÌNH HAI TẦNG ĐƠN GIẢN (2 LAYER) Nguyễn Hoàng Anh Email: nhanh@fit.hcmus.edu.vn Đ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 Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 2
- 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ó. Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 3
- 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 Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 4
- Một số mô hình phân tầng 2 Layer / 2 Tier 3 Layer / 3 Tier N Layer / N Tier Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 5
- Mô hình 2 tầng đơn giản Tầng giao diện Đối tượng trao đổi (POJO) Tầng dữ liệu Cơ sở dữ liệu quan hệ Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 6
- Đố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) Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 7
- Đối tượng trao đổi dữ liệu (POJO) đơn giản XXXTable XXXPOJO YYYTable YYYPOJO ZZZTable ZZZPOJO Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 8
- Đối tượng trao đổi dữ liệu (POJO) đơn giản PhongBan NhanVien Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 9
- POJO: PhongBan package pojo; 1 import java.io.Serializable; 2 3 public class PhongBan implements Serializable { 4 //Các thuộc tính 5 private int maPhongBan; 6 private String tenPhongBan; 7 //Các phương thức khởi tạo 8 public PhongBanPOJO() { 9 } 10 public PhongBanPOJO(int maPhongBan, String tenPhongBan) { 11 this.maPhongBan = maPhongBan; 12 this.tenPhongBan = tenPhongBan; 13 } 14 // Các phương thức get/set 15 ... 16 } 17 Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 10
- POJO: NhanVien package pojo; 1 import java.io.Serializable; 2 import java.util.Date; 3 4 public class NhanVien implements Serializable { 5 //Các thuộc tính 6 private String maNhanVien; 7 private String tenNhanVien; 8 private Date ngaySinh; 9 private String diachi; 10 private String email; 11 private String dienThoai; 12 private int maPhongBan; 13 //Các phương thức khởi tạo 14 ... 15 //Các phương thức get/set 16 ... 17 } 18 Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 11
- 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) – Kiểu dữ liệu đơn giản như: boolean,int, String, float, … Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 12
- Tầng dữ liệu (DAO) đơn giản POJO XXXDAO YYYDAO ZZZDAO POJO JDBC XXXTable ZZZTable YYYTable Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 13
- PhongBanDAO public class PhongBanDAO { 1 public static ArrayList layDanhSachPhongBan() { 2 ArrayList ds = new ArrayList(); 3 try { 4 String sql = "SELECT * FROM PHONGBAN"; 5 MySQLDataAccessHelper helper = new 6 MySQLDataAccessHelper(); 7 helper.open(); 8 ResultSet rs = helper.executeQuery(sql); 9 while (rs.next()) { 10 PhongBan pb = new PhongBan(); 11 pb.setMaPhongBan(rs.getInt("MaPhongBan")); 12 pb.setTenPhongBan(rs.getString("TenPhongBan")); 13 ds.add(pb); 14 } 15 helper.close(); 16 } catch (Exception ex) { 17 System.out.println(ex.getMessage()); 18 } 19 return ds; 20 } 21 Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 14
- PhongBanDAO public class PhongBanDAO { 1 ... 2 public static ArrayList timKiemPhongBanTheoTen( 3 String tenPhongBan) { 4 ArrayList ds = new ArrayList(); 5 try { 6 String sql = "SELECT * FROM PHONGBAN WHERE TENPHONGBAN LIKE '%" 7 + tenPhongBan + "%'"; 8 MySQLDataAccessHelper helper = new MySQLDataAccessHelper(); 9 helper.open(); 10 ResultSet rs = helper.executeQuery(sql); 11 while (rs.next()) { 12 PhongBan pb = new PhongBan(); 13 pb.setMaPhongBan(rs.getInt("MaPhongBan")); 14 pb.setTenPhongBan(rs.getString("TenPhongBan")); 15 ds.add(pb); 16 } 17 helper.close(); 18 } catch (Exception ex) { 19 System.out.println(ex.getMessage()); 20 }return ds; 21 } 22 Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 15
- PhongBanDAO public class PhongBanDAO { 1 ... 2 public static boolean themPhongBan(PhongBan pb) { 3 boolean kq = false; 4 String sql = String.format( 5 6 "INSERT INTO PHONGBAN(TenPhongBan) VALUES ('%s');" , 7 pb.getTenPhongBan()); 8 MySQLDataAccessHelper helper = new 9 MySQLDataAccessHelper(); 10 helper.open(); 11 int n = helper.executeUpdate(sql); 12 if (n == 1) { 13 kq = true; 14 } 15 helper.close(); 16 return kq; 17 } 18 ... 19 } 20 Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 16
- PhongBanDAO public class PhongBanDAO { 1 ... 2 public static boolean xoaPhongBan(int maPhongBan) { 3 boolean kq = false; 4 String sql = String.format("DELETE FROM PHONGBAN WHERE 5 6 MAPHONGBAN=%d", maPhongBan); 7 MySQLDataAccessHelper helper = new 8 MySQLDataAccessHelper(); 9 helper.open(); 10 int n = helper.executeUpdate(sql); 11 if(n==1){ 12 kq=true; 13 } 14 helper.close(); 15 return kq; 16 } 17 ... 18 } 19 Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 17
- PhongBanDAO public class PhongBanDAO { 1 ... 2 public static boolean capNhatPhongBan(PhongBan pb) { 3 boolean kq = false; 4 String sql = String.format("UPDATE PHONGBAN SET 5 TENPHONGBAN='%s' WHERE MAPHONGBAN=%d", pb.getTenPhongBan(), 6 pb.getMaPhongBan()); 7 MySQLDataAccessHelper helper = new 8 MySQLDataAccessHelper(); 9 helper.open(); 10 int n = helper.executeUpdate(sql); 11 if(n==1){kq=true;} 12 helper.close(); 13 return kq; 14 } 15 } 16 Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 18
- 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 Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 19
- Tầng giao diện (GUI) Giao diện Web Giao diện Window Giao diện Mobile Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011 20
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
AANETWORK
TRỢ GIÚP
HỖ TRỢ KHÁCH HÀNG
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn