Minggu, 20 Mei 2012

Pemrograman OOP Class Entity, Control, Boundary pada C#.NET

Pada pemrograman web dikenal cara pemrograman MVC atau Model View Controller. Di pemrograman Desktop C#.NET juga dikenal model pemrograman OOP  tersebut dengan bentuk class Entity Boundary Control. Misalnya ingin membuat aplikasi yang menampilkan data Buku, maka kita harus membuat Entity/Buku.cs, Control/BukuManager.cs dan Boundary/BukuUI

Pertama-tama pisahkan dahulu koneksi database di Class Connection.cs :


using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;

namespace SIP
{
    public class Connection
    {
        private static string con_str;
        static Connection()
        {
            con_str = @"Data Source=DELL-PC\SQLEXPRESS;Initial Catalog=Perpustakaan_6035_6064;Integrated Security=True";
        }
        public static string CON_STR
        {
            set
            {
                con_str = value;
            }
            get
            {
                return con_str;
            }
        }
        public static SqlConnection CON
        {
            get
            {
                return new SqlConnection(con_str);
            }
        }
    }
}


Kemudian berikut ini contohnya. buat dahulu folder Entity untuk menempatkan file Entity/Buku.cs :


using System;
using System.Collections.Generic;
using System.Text;

namespace SIP.Entity
{
    public class Buku
    {
        private string isbn;
        private string judul;
        private string pengarang;
        private string penerbit;
        private int tahun;
        private string status;
        
        public Buku()
        {
            isbn = "";
            judul = "";
            pengarang = "";
            penerbit = "";
            tahun = 0;
            status = "";
        }

        public Buku(string noisbn, string jdl, string pengarangnya, string penerbitnya, int thn, string stat)
        {
            isbn = noisbn;
            judul = jdl;
            pengarang = pengarangnya;
            penerbit = penerbitnya;
            tahun = thn;
            status = stat;
        }

        public string ISBN
        {
            get
            {
                return isbn;
            }
            set
            {
                isbn = value;
            }
        }
        public string Judul
        {
            get
            {
                return judul;
            }
            set
            {
                judul = value;
            }
        }
        public string Pengarang
        {
            get
            {
                return pengarang;
            }
            set
            {
                pengarang = value;
            }
        }
        public string Penerbit
        {
            get
            {
                return penerbit;
            }
            set
            {
                penerbit = value;
            }
        }
        public int Tahun
        {
            get
            {
                return tahun;
            }
            set
            {
                tahun = value;
            }
        }
        public string Status
        {
            get
            {
                return status;
            }
            set
            {
                status = value;
            }
        }
    }
}


Kemudian buat folder Control untuk menempatkan file Control/BukuManager.cs :


using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace SIP.Control
{
    public class BukuManager
    {
        public BukuManager()
        {
        }

        public bool addBuku(SIP.Entity.Buku buku)
        {
            SqlConnection con = Connection.CON;
            try
            {
                con.Open();
                SqlCommand sc = new SqlCommand("INSERT INTO BUKU VALUES('" + buku.ISBN + "','" + buku.Judul + "','"  + buku.Pengarang + "','"+ buku.Penerbit + "','"  + buku.Tahun + "','" + buku.Status + "')", con);
                sc.ExecuteNonQuery();
                return true;
            }
            catch (System.Data.SqlClient.SqlException e)
            {
                return false;
            }
            catch (Exception e2)
            {
                return false;
            }
            finally
            {
                con.Close();
            }
        }

        public bool validateIsbn(string isbn)
        {
            SqlConnection con = Connection.CON;
            try
            {
                con.Open();
                SqlCommand sc = new SqlCommand("SELECT * FROM BUKU where ISBN= '" + isbn + "'", con);
                SqlDataReader dr = sc.ExecuteReader();
                return (dr.HasRows ? false : true);
            }
            catch (System.Data.SqlClient.SqlException e)
            {
                return false;
            }
            catch (Exception e1)
            {
                return false;
            }
            finally
            {
                con.Close();
            }
        }

        public DataTable getAllBuku()
        {
            DataTable dt = new DataTable();
            SqlConnection con = Connection.CON;
            try
            {
                con.Open();
                SqlDataAdapter ad = new SqlDataAdapter("SELECT * FROM BUKU", con);
                ad.Fill(dt);
                return (dt);
            }
            catch (System.Data.SqlClient.SqlException e)
            {
                return (null);
            }
            catch (Exception e2)
            {
                return (null);
            }
            finally
            {
                con.Close();
            }
        }

        public bool updateBukuByIsbn(string isbnLama, SIP.Entity.Buku buku)
        {
            SqlConnection con = Connection.CON;
            try
            {
                con.Open();
                SqlCommand sc = new SqlCommand("UPDATE BUKU SET ISBN ='" + buku.ISBN + "', Judul='" + buku.Judul + "', Pengarang='" + buku.Pengarang + "', Penerbit='" + buku.Penerbit + "', Tahun='" + buku.Tahun+ "', Status='" + buku.Status + "' WHERE ISBN='" + isbnLama + "'", con);
                sc.ExecuteNonQuery();
                return true;
            }
            catch (System.Data.SqlClient.SqlException e)
            {
                return false;
            }
            catch (Exception e2)
            {
                return false;
            }
            finally
            {
                con.Close();
            }
        }

        public bool deleteBukuByIsbn(string isbn)
        {
            SqlConnection con = Connection.CON;
            try
            {
                con.Open();
                SqlCommand sc = new SqlCommand("DELETE FROM BUKU WHERE ISBN = '" + isbn + "'", con);
                sc.ExecuteNonQuery();
                return true;
            }
            catch (System.Data.SqlClient.SqlException e)
            {
                return false;
            }
            catch (Exception e2)
            {
                return false;
            }
            finally
            {
                con.Close();
            }
        }
    }
}


Setelah itu terakhir buat folder Boundary untuk menempatkan file Boundary/BukuUI.cs :


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace SIP.Boundary
{
    public partial class BukuUI : Form
    {
        string isbnLama;

        public BukuUI()
        {
            InitializeComponent();
            RefreshGrid();
            isbnLama = "";

            fillComboKota();
            fillComboRole();

        }


        /*private void fillComboRole()
        {
            DataTable dt = new DataTable();
            CSDS.Control.RoleManager roleManager = new CSDS.Control.RoleManager();

            dt.Clear();
            dt = roleManager.getAllRole();
            comboRole.DataSource = dt;
            comboRole.DisplayMember = "NAMAROLE";
            comboRole.ValueMember = "IDROLE";
        }

        private void fillComboKota()
        {
            DataTable dt = new DataTable();
            CSDS.Control.KotaManager kotaManager = new CSDS.Control.KotaManager();

            dt.Clear();
            dt = kotaManager.getAllKota();
            comboKota.DataSource = dt;
            comboKota.DisplayMember = "NAMAKOTA";
            comboKota.ValueMember = "IDKOTA";
        } */


        private void RefreshGrid()
        {
            DataTable dt = new DataTable();
            SIP.Control.BukuManager bukMan = new SIP.Control.BukuManager();

            try
            {
                dt.Clear();
                dt = bukMan.getAllBuku();
                dataGridView1.DataSource = dt;
            }
            catch (System.Data.SqlClient.SqlException e1)
            {
                MessageBox.Show("Terjadi kesalahan pada Koneksi database" + e1.Message.ToString().Trim(), "Perhatian", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            catch (Exception e2)
            {
                MessageBox.Show("Terjadi kesalahan pada Koneksi database" + e2.Message.ToString().Trim(), "Perhatian", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            textISBN.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString();
            textJudul.Text = dataGridView1.CurrentRow.Cells[1].Value.ToString();
            textPengarang.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString();
            textPenerbit.Text = dataGridView1.CurrentRow.Cells[3].Value.ToString();
            textTahun.Text = dataGridView1.CurrentRow.Cells[4].Value.ToString();
            comboStat.Text = dataGridView1.CurrentRow.Cells[5].Value.ToString();
            isbnLama = textISBN.Text;
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            SIP.Entity.Buku buku = new SIP.Entity.Buku();
            SIP.Control.BukuManager bukMan = new SIP.Control.BukuManager();
            if (textISBN.Text.Trim() != String.Empty && textJudul.Text.Trim() != String.Empty && textPengarang.Text.Trim() != String.Empty && textPenerbit.Text.Trim() != String.Empty && textTahun.Text.Trim() != String.Empty && comboStat.Text.Trim() != String.Empty)
            {
                if (bukMan.validateIsbn(textISBN.Text.Trim()))
                {
                    buku.ISBN = textISBN.Text.Trim();
                    buku.Judul = textJudul.Text.Trim();
                    buku.Pengarang = textPengarang.Text.Trim();
                    buku.Penerbit = textPenerbit.Text.Trim();
                    buku.Tahun = int.Parse(textTahun.Text.Trim());
                    buku.Status = comboStat.Text.Trim();
                    if (bukMan.addBuku(buku))
                    {
                        MessageBox.Show("Data berhasil disimpan!", "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        RefreshGrid();
                    }
                    else
                        MessageBox.Show("Data gagal disimpan", "Perhatian", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                else
                    MessageBox.Show("ISBN '" + textISBN.Text.Trim() + "' sudah terdaftar di database, masukkan ISBN yang lain", "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
                MessageBox.Show("Masukkan data dengan benar!", "Perhatian", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        private void btnEdit_Click(object sender, EventArgs e)
        {
            SIP.Entity.Buku buku = new SIP.Entity.Buku();
            SIP.Control.BukuManager bukMan = new SIP.Control.BukuManager();

            if (textISBN.Text.Trim() != String.Empty && textJudul.Text.Trim() != String.Empty && textPengarang.Text.Trim() != String.Empty && textPenerbit.Text.Trim() != String.Empty && textTahun.Text.Trim() != String.Empty && comboStat.Text.Trim() != String.Empty)
            {
                buku.ISBN = textISBN.Text.Trim();
                buku.Judul = textJudul.Text.Trim();
                buku.Pengarang = textPengarang.Text.Trim();
                buku.Penerbit = textPenerbit.Text.Trim();
                buku.Tahun = int.Parse(textTahun.Text.Trim());
                buku.Status = comboStat.Text.Trim();
                if (bukMan.updateBukuByIsbn(isbnLama, buku))
                {
                    MessageBox.Show("Data berhasil diubah!", "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    RefreshGrid();
                }
                else
                    MessageBox.Show("Data gagal diubah!", "Perhatian", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            else
                MessageBox.Show("Masukkan data dengan benar!", "Perhatian", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            SIP.Control.BukuManager bukMan = new SIP.Control.BukuManager();
            if (bukMan.deleteBukuByIsbn(isbnLama))
            {
                MessageBox.Show("Data berhasil dihapus!", "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Information);
                RefreshGrid();
            }
            else
                MessageBox.Show("Data gagal dihapus!", "Perhatian", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }

    }
}