TUGAS POLA-POLA PERANCANGAN SISTEM INFORMASI PERSEWAAN VCD DAN DVD Dengan Design pattern (Factory Method)
Disusun Oleh : Ety Sudarwati
09120008
Putu Reksa Winda Perdana
09120046
TEKNIK INFORMATIKA UNIVERSITAS WIJAYA KUSUMA SURABAYA SURABAYA 2012
KONSEP DASAR
A. Desain Pattern (Creational pattern: Factory Method) Desain pattern ini memisahkan kode untuk membuat obyek, sehingga ketika jenis obyek yang dapat dibuat bertambah, kode yang berubah hanya kode pembuatan obyenya saja. Bisa di katakan bahwa Factory adalah method yang memiliki fungsi khusu untuk melakukan konstruksi class menjadi objek dan mengembalikan referensi objek tersebut.
Keterangan :
Product : abstrak mendefinisikan obyek interfaces dari class yang dibentuk
ConcreteProduct : implementasi dari product tersebut
Creator (document) : Deklarasi Factory dengan nilai balik obbyek tipe product dan juga mendefinisikan nilai balik dari obyek ConcreteProduct
ConcreteCreator : mengabaikan nilai balik dari ConcreteProduct.
Kegunaan Factory Method : Walaupun kelihatan sangat sederhana, tetapi apabila kita sudah makin mahir dalam melakukan coding dan menangani proyek yang makin lama skalanya semakin besar maka akan ada kebutuhan untuk membuat aplikasi yang bersifat concurrent atau yang bersifat parallel multi threading. Kondisi ini membuat kita membutuhkan teknik coding yang makin kompleks dan sophisticated. Salah satunya adalah menghindarkan konstruksi objek setengah jadi (half-constructed object) yang dapat terekspos melalui method constructor. Dan ini bisa dipecahkan dengan sangat baik melalui teknik factory method ini. Selain itu factory method ini juga sudah menjadi bagian dari design pattern yang merupakan kumpulan pola coding yang bisa digunakan kembali sesuai kasus atau reusable.
Desain Pattern Factory Method Aplikasi Rental VCD/DVD
Keterangan :
Kelas Product yang merupakan penyedia sebuah antarmuka (Aplikasi Rental VCD/DVD).
Kelas ConcreteProduct merupakan implementasi product yang dimana jenis disc yang disewakan. Didalam ConcreteProduct mempunyai generalisasi dengan kategori dan judul.
Kelas ConcreteCreator merupakan implementasi request penyewaan yang akan dilakukan oleh customer.
Kelas Creator merupakan report/laporan dari kelas penyewaan.
TAMPILAN INTETRFACE
Form log in
Source code form log in /* * Created by SharpDevelop. * User: FVCK-32 * Date: 04/11/2010 * Time: 23:26 * * To change this template use Tools | Options | Coding | Edit Standard Headers. */ using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace katalogRentalCD { /// <summary> /// Description of MainForm. /// public partial class MainForm : Form { public MainForm() { // // The InitializeComponent() call is required for Windows Forms designer support. //
InitializeComponent(); // // TODO: Add constructor code after the InitializeComponent() call. // } void Button1Click(object sender, EventArgs e) { if(usrName.Text=="admin" && psWord.Text=="admin") { Form frmData = new TampilData(); frmData.Show(); this.Hide(); } else { MessageBox.Show("Username dan Password tidak Valid...!!!","Username & Password Salah...!!!"); } } void Button2Click(object sender, EventArgs e) { usrName.Text = ""; psWord.Text = ""; } void MainFormFormClosed(object sender, FormClosedEventArgs e) { System.Windows.Forms.Application.Exit(); }
void KeluarToolStripMenuItemClick(object sender, EventArgs e) { this.Close(); } } }
Form utama
Sorce code form utama public partial class TampilData : Form { public OleDbConnection database; DataGridViewButtonColumn sewaData; DataGridViewButtonColumn editData; DataGridViewButtonColumn hapusData; DataGridViewButtonColumn hapusTipe; DataGridViewButtonColumn editTipe; DataGridViewButtonColumn editPelanggan; DataGridViewButtonColumn hapusPelanggan; } void TampilCellContentClick(object sender, DataGridViewCellEventArgs e) { string harga = tampil[5, currentRow].Value.ToString(); FormSewa frmSewa = new FormSewa(); frmSewa.id_katalog = id_katalog.ToString(); frmSewa.harga = harga;
frmSewa.Show(); tampil.Update(); }
Form sewa CD
Source code form sewa CD /* * Created by SharpDevelop. * User: FVCK-32 * Date: 08/11/2010 * Time: 0:34 * * To change this template use Tools | Options | Coding | Edit Standard Headers. */ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.OleDb; //memanggil library database;
namespace katalogRentalCD { /// <summary> /// Description of FormSewa. /// public partial class FormSewa : Form { public OleDbConnection database; public string id_katalog, harga; public FormSewa() { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=rentalCD.mdb"; try { database = new OleDbConnection(connectionString); database.Open(); } catch (Exception ex) { MessageBox.Show(ex.Message); return; } } void FormSewaLoad(object sender, EventArgs e) { sewaId.Text=id_katalog; sewaHarga.Text=harga; } void SewaBanyakTextChanged(object sender, EventArgs e) { try { int sHarga = Convert.ToInt32(sewaHarga.Text); int sBanyak = Convert.ToInt32(sewaBanyak.Text); sewaTotal.Text = Convert.ToString(sHarga*sBanyak); } catch(Exception) { sewaBanyak.Clear(); MessageBox.Show("Input harus angka..!!"); } } void Button1Click(object sender, EventArgs e) { string SQLString=""; string nama = sewaNama.Text; string id_cd = sewaId.Text;
string alamat = sewaAlamat.Text; string jaminan = ""; if(rdKtp.Checked==true) { jaminan="ktp"; } else if(rdPelajar.Checked==true) { jaminan="kartu pelajar"; } string total = sewaTotal.Text; string sewaTanggal = DateTime.Now.ToString(); string tgl = sewaTanggal.Substring(0,10).ToString(); if(nama=="" || alamat=="" || jaminan=="" || jaminan=="") { MessageBox.Show("Semua Inputan Belum Lengkap...!!!"); } else { SQLString = "INSERT INTO tbl_pelanggan(id_cd, nama, alamat, jaminan, total_bayar, tanggal, status) VALUES('" + id_cd + "','" + nama + "','" + alamat + "','" + jaminan + "','" + total + "','" + tgl + "','belum');"; OleDbCommand SQLCommand = new OleDbCommand(); SQLCommand.CommandText = SQLString; SQLCommand.Connection = database; int response = -1; try { response = SQLCommand.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(ex.Message); } if (response >= 1) MessageBox.Show("Data sewa berhasil ditambahkan. \nKlik tab Data Pelanggan untuk melihat hasil input.","Berhasil..!!!",MessageBoxButtons.OK, MessageBoxIcon.Information); this.Close(); } } void Button2Click(object sender, EventArgs e) { this.Close(); } } }
Data penyewa
Source code tampil data penyewa { string queryString = "SELECT id_pelanggan, nama_katalog, nama, alamat, status, tanggal, jaminan, total_bayar from tbl_pelanggan,tbl_katalog where tbl_katalog.id_katalog=tbl_pelanggan.id_cd order by tbl_pelanggan.status DESC "; string queryDeleteString = "DELETE FROM tbl_pelanggan where id_pelanggan = "+id_katalog+""; //hapus data dengan id sesuai baris OleDbCommand sqlDelete = new OleDbCommand(); sqlDelete.CommandText = queryDeleteString; sqlDelete.Connection = database; sqlDelete.ExecuteNonQuery(); loadData4(queryString); }