Học tập, chia sẻ kiến thức cơ bản về tin học.

[Lập trình Windows] Giải bài toán tính tổng 2 số theo mô hình 3 lớp.

Tham khảo: Chuyển dữ liệu giữa các form.
Trong quá trình phát triển của ngành công nghệ thông tin, công nghệ phần mềm phát triển theo từng giai đoạn và phát triển theo các mô hình khác nhau. Trong bài viết này sẽ đề cập đến mô hình khá nổi tiếng và sau này được biến thể thành các mô hình khác. Mô hình 3 lớp.
Mô hình 3 lớp/tầng được nhắc đến trong bài viết này gồm các tầng/lớp sau: Data Layer(Dal), Business Layer (BUS) và Graphic User Interface (GUI).
Trong đó Dal là tầng chuyên để xử lý, lưu trữ, nhận dữ liệu. Tầng Bus là tầng dùng để tính toán, báo cáo thống kê. Tầng Gui là tầng giao diện người dùng.
Xem xét một bài toán đơn giản là nhập vào 2 số nguyên, sau đó hiển thị tổng 2 số đó theo mô hình 3 lớp. Phân tích như sau:

  • Tầng DAL: cho phép lưu trữ 2 giá trị.
  • Tầng BUS: Tính tổng 2 giá trị
  • Tầng GUI: Hiển thị tổng 2 giá trị.

Như vậy, thiết kế dự án này theo cấu trúc sau:
tinhoccoban.net - Cấu trúc theo mô hình 3 lớp.
Cấu trúc theo mô hình 3 lớp.
Trong đó nội dung:
namespace _3tier2so.BUS
{
    interface ixuly
    {
        string TinhTong();
    }
}


namespace _3tier2so.BUS
{
    class clsXuly:ixuly
    { public DAL.clsSO CacSo { get; set; }    
        public string TinhTong()
        {
            int tong = CacSo.so1 + CacSo.so2;
            return CacSo.so1.ToString() + " + " + CacSo.so2.ToString() + " = " + tong.ToString();
        }
    }
}

namespace _3tier2so.DAL
{
    class clsSO:iSo
    {
        int _so1, _so2;
        public int so1 { get { return _so1; }set { _so1 = value; } }
        public int so2 { get { return _so2; }set { _so2 = value; } }
    }
}

namespace _3tier2so.DAL
{
    interface iSo
    {
        int so1 { get; set; }
        int so2 { get; set; }
    }
}

tinhoccoban.net - Giao diện cho form Kết quả.
Giao diện cho form Kết quả.

tinhoccoban.net - Giao diện cho form nhập 2 số.
Giao diện cho form nhập 2 số.
Code cho form 1.
namespace _3tier2so
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnTong_Click(object sender, EventArgs e)
        {
            GUI.frmNhap frm = new GUI.frmNhap();
            frm.ShowDialog();
            //doi tuong thuoc tang/lop DAL
            DAL.clsSO so = new DAL.clsSO();
            so.so1 = int.Parse(frm.strso1);
            so.so2 = int.Parse(frm.strso2);
            //Doi tuong thuoc tang/lop BUS
            BUS.clsXuly xuly = new BUS.clsXuly();
            xuly.CacSo = so;
            txtKetQua.Text = xuly.TinhTong();
        }
    }
}


Code cho form nhập.
namespace _3tier2so.GUI
{
    public partial class frmNhap : Form
    {
        public string strso1 { get; set; }
        public string strso2 { get; set; }
        public frmNhap()
        {
            InitializeComponent();
        }

        private void btnOK_Click(object sender, EventArgs e)
        {
            strso1 = txtSothu1.Text;
            strso2 = txtSoThu2.Text;
            this.Close();
        }
    }
}

Bài đăng nổi bật

Các mẫu Design Pattern

Hệ thống các mẫu design pattern hiện có 23 mẫu được định nghĩa trong cuốn " Design patterns Elements of Reusable Object Oriented Softwa...