1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Lập trình Java - Chương 5: Lập trình theo mô hình 2 lớp với Java

37 53 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 37
Dung lượng 1,91 MB

Nội dung

Bài giảng Lập trình Java - Chương 5: Lập trình theo mô hình 2 lớp với Java cung cấp cho người học các kiến thức: 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 phân tầng, một số hướng tiếp cận phân từng thông dụng,... Mời các bạn cùng tham khảo.

LOGO Phát triển UD CSDL 2 Chương 5: Lập trình theo mơ hình lớp với JAVA Nội dung • • • • • 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 phân tầng  Một số hướng tiếp cận phân từng thơng dụng  Mơ hình 2 tầng đơn giản  Một số ví dụ 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 luu y ̛ ́:  – – – Mỗi tầng chiu tra ̣ ́ch nhiệm riêng.  Dữ liệu đầu vào và đầu ra cua mô ̉ ̃i tầng nên rõ ràng và dễ  sử dung.  ̣ Khi một tầng bi thay đôi thi ̣ ̉ ̀ kha na ̉ ̆ng anh hu ̉ ̛ơng cua no ̉ ̉ ́ đến các  tầng khác thấp nhất nhất có thê co ̉ ́.  Vai trị 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ử dung ma ̣ ̃ ng̀n Dễ bảo trì hệ thống  Dễ dàng phân chia cơng việc trong nhóm  Một số mơ hình phân tầng • • • 2 Layer / 2 Tier  3 Layer / 3 Tier N Layer / N Tier  Mơ hình tầng đơn giản Tầng giao diện Đối tượng  trao đổi dữ  liệu: POJO Tầng truy cập liệu Cơ sở dữ liệu • • • Đối tượng trao đổi dữ liệu (POJO) đơn giản POJO: Plain Old Java Object Mỗi lớp POJO đai di ̣ ện cho bang trong co s ̉ ̛ ở dữ liệu  Mỗi lớp POJO gồm những thành phần sau: – – – Các thuộc tính tuong  ̛ ̛ ứng với các cột trong bang – Tô ̉ ́i thiêu  ̉ một phuong th ̛ ̛ ức khởi tao m ̣ ặc đinh  ̣ Nên viết thêm phuong th ̛ ̛ ức khởi tao đâ ̣ ̀y đu tham sô ̉ ́  Các phuong th ̛ ̛ ức cung cấp và cập nhật thông tin cho từng  thuộc tính (get/set)  Đối tượng trao đổi dữ liệu (POJO) *.java đơn Database giản XXXTable XXXPOJO YYYTable YYYPOJO ZZZTable ZZZPOJO Đối tượng trao đổi dữ liệu (POJO) đơn giản nhanvien NhanVien phongban PhongBan 10 11 12 13 14 15 16 17 18 19 POJO: PhongBan package pojo;  import java.io.Serializable;  public class PhongBan implements Serializable {  private int MAPHG; private String TENPHG; //Các phương thức khởi tạo public PhongBan() { } public PhongBan(int maPhongBan, String tenPhongBan) {         this.MAPHG = maPhongBan;         this.TENPHG = tenPhongBan; } // Các phương thức get/set public String getTenPhong() {         return this.TENPHG; } public void setTenPhong (String tenphong) {         this.TENPHG = tenphong; } PhongBanDAO.java (3) 10 11 12 13 14 15     public static boolean themPhongBan(PhongBan pb) {         boolean kq = false;         String sql = String.format(                 "INSERT INTO phongban(TENPHG) VALUES ('%s');",  pb.getTENPHG());         MySQLDataAccessHelper helper = new MySQLDataAccessHelper();         helper.open();         int n = helper.executeUpdate(sql);         if (n == 1) {             kq = true;         }         helper.close();         return kq;     } PhongBanDAO.java (4) 10 11 12 13 14     public static boolean xoaPhongBan(int maPhongBan) {         boolean kq = false;         String sql = String.format("DELETE FROM PHONGBAN WHERE  MAPHG=%d", maPhongBan);         MySQLDataAccessHelper helper = new MySQLDataAccessHelper();         helper.open();         int n = helper.executeUpdate(sql);         if (n == 1) {             kq = true;         }         helper.close();         return kq;     } PhongBanDAO.java (5) 10 11 12 13 14 15 16     public static boolean capNhatPhongBan(PhongBan pb) {         boolean kq = false;         String sql = String.format(                 "UPDATE PHONGBAN SET TENPHG ='%s' WHERE MAPHG =  %d",                 pb.getTENPHG(), pb.getMAPHG());         MySQLDataAccessHelper helper = new MySQLDataAccessHelper();         helper.open();         int n = helper.executeUpdate(sql);         if (n == 1) {             kq = true;         }         helper.close();         return kq;     } PhongBanDAO.java (6) 10 11 12 13 14 15 16     public static PhongBan layPhongBan (int maPhong){         PhongBan pb = null;         try {             String sql = "SELECT * FROM phongban WHERE MAPHG =" +  maPhong;             MySQLDataAccessHelper helper = new MySQLDataAccessHelper();             helper.open();             ResultSet rs = helper.executeQuery(sql);             if (rs.next()) {                 pb = new PhongBan();                 pb.setMAPHG(rs.getInt("MAPHG"));                 pb.setTENPHG(rs.getString("TENPHG"));             }             helper.close();         } catch (Exception ex) {             System.out.println(ex.getMessage());         }         return pb;     } NhanVienDAO.java • • • • • • Lấy danh sách nhân viên Lấy thông tin chi tiết cua nha ̉ ̂n viên dựa trên mã nhân  viên Kiêm tra xem nha ̉ ̂n viên đã tồn tai chua ̣ ̛ Thêm nhân viên Xóa nhân viên Cập nhật nhân viên  Tầng giao diện (GUI) • Có nhiều loại giao diện: – – – Giao diện WEB Giao diện Window Giao diện Mobile  Tầng giao diện (GUI) Màn hình giao diện *.java XXXDAO YYYDAO ZZZDAO POJOs JDBC DB XXXTable YYYTable ZZZTable Tầng giao diện (GUI) *.java NhanVienDAO.java NhanVienDAO PhongBanDAO.java PhongBanDAO POJOs JDBC DB NhanVien PhongBan VD 1: Chức Xem danh sách PB1_GetListPhongBan phòng ban GUI PhongBanDAO DAO DB PhongBan layDanhSachPhongBan();  10 11 12 13 14 15 16 17 18 19 20 21 GUI: PB1_GetListPhongBan package demo2layer; import dao.PhongBanDAO; import java.util.ArrayList; import javax.swing.JInternalFrame; import javax.swing.table.DefaultTableModel; import pojo.PhongBan; public class PB1_GetListPhongBan extends JInternalFrame {     public PB1_GetListPhongBan() {         initComponents();               ArrayList dsPhongBan = PhongBanDAO.layDanhSachPhongBan();          String[] columns = new String [] { "Mã Phòng", "Tên Phòng" };         DefaultTableModel model = new DefaultTableModel(null, columns);         for(PhongBan p: dsPhongBan) {             Object [] items = new Object [] {                 p.getMAPHG(),                 p.getTENPHG()             };                   model.addRow(items);         }                jTable1.setModel(model);     } … } VD 2: Chức Thêm phòng ban PB2_InsertPhongBan GUI PhongBanDAO DAO DB PhongBan themPhongBan();  GUI: PB2_InsertPhongBan 10 11 12 13 14 15 16 17 18 19 20 21 package demo2layer; import dao.PhongBanDAO; import javax.swing.JOptionPane; import pojo.PhongBan; public class PB2_InsertPhongBan extends javax.swing.JInternalFrame {     public PB2_InsertPhongBan() {         initComponents();     }     private void initComponents() { …    }     private void jbtnThemPhongActionPerformed(java.awt.event.ActionEvent evt) {         String tenphong = jtxtTENPHG.getText();         PhongBan p = new PhongBan();         p.setTENPHG(tenphong);             PhongBanDAO.themPhongBan(p);           JOptionPane.showMessageDialog(this, "Thêm thành công", "Thông báo",  JOptionPane.INFORMATION_MESSAGE);     }     private javax.swing.JButton jbtnThemPhong;     private javax.swing.JTextField jtxtTENPHG;     … VD 3: Chức Cập nhật phòng PB3_UpdatePhongBan ban GUI PhongBanDAO DAO DB PhongBan layPhongBan();  capNhatPhongBan();  GUI: PB3_UpdatePhongBan 10 11 12 13  private void btnDocActionPerformed(java.awt.event.ActionEvent evt) {         int maphg = Integer.parseInt(jtxtMaPhong.getText());         PhongBan p = PhongBanDAO.layPhongBan(maphg);         if (p == null) {             JOptionPane.showMessageDialog(this, "Not found !!!", "Error",  JOptionPane.ERROR_MESSAGE);          }         else {             jtxtTenPhong.setText(p.getTENPHG());         }        } GUI: PB3_UpdatePhongBan 10 11  private void btnLuuActionPerformed(java.awt.event.ActionEvent evt) {                  int maphong = Integer.parseInt(jtxtMaPhong.getText());         String tenphong = jtxtTenPhong.getText();         PhongBan p = new PhongBan (maphong, tenphong);         PhongBanDAO.capNhatPhongBan(p);         JOptionPane.showMessageDialog(this, "Cập nhật thành công ", "Thông  báo", JOptionPane.INFORMATION_MESSAGE);       } ...             System.out.println(ex.getMessage());  MySQLDataHelper – Details (2) 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38     public void close() {          try {              this.connection.close(); ... Lưu ý: Tuỳ? ?theo? ?nghiệp vụ mà? ?lớp? ?truy cập dữ liệu có những phương  thức khác. VD: – public static boolean kiemTraTonTai(int maPhongBan)  10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 package dao;...         }         return ds;     } PhongBanDAO .java (1) 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24     public static ArrayList timKiemPhongBanTheoTen(             String tenPhongBan) {

Ngày đăng: 11/07/2020, 04:17

HÌNH ẢNH LIÊN QUAN

• Mô hình 2 t ng đ n gi n  ả - Bài giảng Lập trình Java - Chương 5: Lập trình theo mô hình 2 lớp với Java
h ình 2 t ng đ n gi n  ả (Trang 2)
Mô hình 2 tầng đơn giản - Bài giảng Lập trình Java - Chương 5: Lập trình theo mô hình 2 lớp với Java
h ình 2 tầng đơn giản (Trang 6)
Màn hình giao diện - Bài giảng Lập trình Java - Chương 5: Lập trình theo mô hình 2 lớp với Java
n hình giao diện (Trang 29)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN