Code C#: Mô hình lập trình 3 lớp - 3 Tiers (Phần 1)

I. Giới thiệu chung
Trước đây, đối với các phần mềm có sử dụng liên quan đến dữ liệu, thường khi làm người lập trình thường tích hợp việc giao tiếp với người sử dụng , xử lý rồi ghi xuống dữ liệu trên cùng một Form (mô hình 1 lớp). Nhưng trong kiến trúc 3 lớp (mô hình 3 lớp), phải có việc phân biệt giữa các lớp này. Mô hình 3 lớp có thể được mô tả như sau:

Mô hình 3 lớp - 3 tiers
Hình 1. Mô hình lập trình 3 lớp

- Lp thnht (lp giao din - giao tiếp với người sdng): chthun xlý vic giao tiếp với người sdng, nhp/xut,…mà không thực hin vic tính toán, kim tra, xử lý, hay các thao tác liên quan đến cơ sdliu.- Lp thhai (lp xlý): lp này chuyên thc hin các xlý, kim tra các ràng buc, các qui tc ng xca phn mm, các chức năng cốt yếu,… vic thc hinày độc lp vi cách thiết kế cũng như cài đặt giao din. Thông tin cho lp này thc hin các xlý của mình được ly tlp giao din.Lp thba (lp dliu): lp này chuyên thc hin các công việc liên quan đến d liu. Dliu có thly từ cơ sdliệu (access, SQL Server, mySQL…) hoặc tp tin (text,binary, XML…). Đối với cơ sdliu, lp này thc hin kết ni trc tiếp với cơ sdliu và thc hin tt ccác thao tác liên quan đến cơ sở dliu mà phn mm cn thiết. Đối vi tp tin, lp này thc hin việc đọc, ghi tp tin theo yêu cu ca phn mm. Vic thc hin này do lp xlý gi. Rõ ràng, vi mô hình này, các công vic ca tng lớp là độc lp vi nhau. Vic thay đổi mt lớp không làm thay đổi các lp còn li, thun tiện hơn cho quá trình phát trin và bảo trì phần mềm.

II. Ví dụ minh họa: 
1. Tạo cơ sở dữ liệu: QLBN.mdb gồm 2 bảng như hình dưới
Các bảng trong hệ thống Quản lý bệnh nhân
Hình 2. Cơ sở dữ liệu QLBN.MDB

2. Cửa sổ Solution Explorer bao gồm các Project:
Hình 3. Danh sách project trong solution QLBN

3. Lp DBConnection.cs:using System;using System.Collections.Generic;using System.Text;using System.Data.OleDb;namespace DataAccessLayer{   public class DBConnection{      protected OleDbConnection con;      public DBConnection(){         try{
            con = new OleDbConnection();
            con.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data                      Source=QLBN.mdb";
         }
         catch (Exception){
           throw;
         }
      }
    }

 }
4. Lớp BenhNhanEntities.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace Entities{
[Serializable]
public class BenhNhanEntity{
   private string diaChiBN;       //Khai báo 04 trường (fields) của lớp BenhNhanEntity
   private string tenBN;
   private string maBS;
   private string soCMND;
   public BenhNhanEntity() {   }     //Hàm khởi dựng không có tham số
public BenhNhanEntity(string soCMND, string tenBN, string diaChiBN, string maBS){
this.diaChiBN = diaChiBN;           //Hàm khởi dựng có tham số
this.tenBN = tenBN;
this.maBS = maBS;
this.soCMND = soCMND;
}
public string DiaChiBN{           //Hàm get, set để lấy ra hoặc thiết lập giá trị cho các field
   get { return this.diaChiBN; }
   set{
      if (value == null)
         throw new Exception("Địa chỉ không được để trống.");
         this.diaChiBN = value;
   }
}
public string TenBN{               
//Hàm get, set để lấy ra hoặc thiết lập giá trị cho các field
   get { return this.tenBN; }
   set{
      if (value == null)
      throw new Exception("Họ tên BN không được để trống.");
      this.tenBN = value;
   }
}
public string MaBS{               
//Hàm get, set để lấy ra hoặc thiết lập giá trị cho các field
   get { return this.maBS; }
   set{
      if (value == null)
      throw new Exception("Mã BS không được để trống.");
      this.maBS = value;
   }
}
public string SoCMND{         
//Hàm get, set để lấy ra hoặc thiết lập giá trị cho các field
   get { return this.soCMND; }
   set{
      if (value == null)
      throw new Exception("soCMND không được để trống.");
      this.soCMND = value;
   }
}
public override string ToString(){
    return this.diaChiBN + "; " + this.tenBN + "; " + this.maBS + "; " this.soCMND + "; ";
}
public override bool Equals(Object obj){
return this.SoCMND.Equals(((BenhNhanEntity)obj).SoCMND);
}
public override int GetHashCode(){
return this.SoCMND.GetHashCode();
}
}
}

Tags: Visual Studio, Windows Form, 3 tiers, Mô hình 3 lớp

Related Posts
Previous
« Prev Post

1 comments