Selamat siang agan-agan.Senang rasanya bisa posting lagi.Dan untuk postingan kali ini , saya akan membahas mengenai Konsep Inheritance / Pewarisan Di Delphi 7.Inheritance/pewarisan merupakan fitur yang tersedia dalam OOP(Object Oriented Programming).Dimana kita bisa menduplikasi sifat-sifat sebuah class , dan memanfaatkannya di class yang lain.Class dalam delphi 7 sendiri ialah file Unit yang bersisi source code dari program.Dan class itu sendiri merupakan sebuah object.Okay , saya tau anda bingung.Bukan karena anda kurang pintar , namun karena penjelasan saya yang belibet.Dan jujur saja , saya sangat tidak pandai berteori.Untuk itu seperti biasa , saya akan menjelaskannya secara praktek.Diharapkan agan mengerti maksud dari postingan saya kali ini.Sediakan kopi dan rokok agar tidak kebosanan !! hehe.
1.Apakah Konsep Inheritance Penting !?
Pertanyaan yang bagus.Dalam membangun sebuah program , kita tidak bisa melakukannya sekali jadi.Dalam artian , program tersebut memerlukan proses maintenance , patch , atau penambahan fitur.Dengan konsep traditional , dimana kita menuliskan source code program tumplek pada satu file unit , tentu proses itu akan memakan waktu yang banyak dan memelintir kepala kita.Pada aplikasi yang kompleks tentunya.Memanfaatkan konsep inheritance , tentu program kita menjadi lebih mudah di maintenance.
2.Keuntungan Konsep Inheritance!?
Lagi-lagi pertanyaan yang bagus.Pemisahan fungsionalitas menjadi beberapa class/unit tentu bukan tanpa tujuan.Dengan memanfaatkan konsep ini , program kita lebih terstruktur dan tentu saja memudahkan dalam proses pengembangan / maintenance selanjutnya.
Katanya tidak berteori , kamu banyak omong deh !! haha.Well , mari kita praktekan saja dengan membuat program sederhana yang memanfaatkan konsep inheritance.Bila pada postingan
SEBELUMNYA saya menjelaskan mengenai
Optimalisasi Procedure , maka postingan kali ini akan mengoptimalkannya lebih jauh.Untuk itu , silahkan buka Borland Delphi 7 anda.Tambahkan 5 buah komponen TEdit dan 1 buah TButton.Kita akan membuat program seperti
Sebelumnya .Selanjutnya , pilih file -> new -> Unit.Maka anda akan melihat unit baru dengan tampilan sebagai berikut.
unit Unit2;
interface
implementation
end.
Itu adalah standar file unit.Ketikan kode berikut pada Unit2 tersebut.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
Tprosedur = class (TObject)//kita membuat object baru dengan nama TProsedur
private
{private declaration}
public
procedure cekEdit(sender1,sender2:TObject); //registrasi procedure
procedure bersih(namaForm:TObject);
{public declaration}
end;
implementation
procedure Tprosedur.cekEdit(sender1,sender2:TObject); //inisialisasi procedure
begin
with(sender1 as TEdit) do
begin
if Text='' then
begin
Application.MessageBox('maaf data tidak boleh kosong','informasi',MB_OK or MB_ICONINFORMATION);
end
else
begin
with(sender2 as TEdit) do
begin
Enabled:=true;
SetFocus;
end;
end;
end;
end;
procedure Tprosedur.bersih(namaForm:TObject);
var a:Integer;
begin
with(namaForm as TForm) do
begin
for a :=0 to ComponentCount-1 do
begin
if Components[a] is TEdit then TEdit(Components[a]).Clear; //membersihkan semua komponen TEdit
if Components[a] is TEdit then TEdit(Components[a]).Enabled := False; //menonaktifkan semua komponen TEdit
end;
end;
end;
end.
Unit2 diatas merupakan class yang berisi procedure , dimana fungsi procedure cekEdit tersebut ialah memvalidasi field TEdit.Bila tombol enter di tekan , maka focus akan berpindah ke TEdit selanjutnya , kecuali bila TEdit tersebut kosong.Dan procedure Bersih untuk membersihkan juga menonaktifkan semua TEdit.Nah , sekarang kembali ke Unit1.Pada klausa Uses , tambahkan Unit2.Perhatikan kode berikut.
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,Unit2;//unit2 di tambahkan ke unit1
Lalu pada klausa Var ,inisialisasi Inheritance terjadi.Tambahkan kode berikut.Kita akan menamainya kumpulanProsedur
var
Form1: TForm1;
kumpulanProsedur:Tprosedur;//kumpulanProsedur merupakan turunan dari Tprosedur yang terdapat pada Unit2
Pada Form1 event on show , tambahkan kode berikut.
procedure TForm1.FormShow(Sender: TObject);
begin
kumpulanProsedur.bersih(Self);
//procedure bersih yang terdapat pada Unit2 dipanggil
end;
Pada button1 ketikan kode berikut.
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Enabled:=true;//mengaktifkan edit1
Edit1.SetFocus;//focus berpindah ke edit1
end;
Selanjutnya pada edit1 event on key press , ketikan kode berikut.
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then //jika tombol enter di tekan
begin
kumpulanProsedur.cekEdit(sender,Edit2);
//procedure cekEdit yang terdapat pada Unit2 dipanggil
//sender merupakan edit asal , dan edit2 merupakan tujuan focus
end;
end;
Lakukan hal yang sama pada setiap TEdit , tentu dengan merubah focus tujuan.Jalankan program anda.Biasa saja !? Yuph benar , yang berbeda ialah konsep codingnya.Dimana kita memisahkan procedure tersebut pada unit yang berbeda.Bayangkan bila anda memiliki 10 form dengan masing-masing memiliki 10 buah TEdit.Dimana TEdit tersebut harus di validasi.Dengan cara seperti diatas , kita cukup menambahkan Unit pada klausa uses , menginisialisasi object , dan memanggil procedure / function yang terdapat pada unit yang kita buat.Berikut kode lengkap dari Unit1.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,Unit2;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Button1: TButton;
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure Edit4KeyPress(Sender: TObject; var Key: Char);
procedure Edit5KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
kumpulanProsedur:Tprosedur;//kumpulanProsedur merupakan turunan dari Tprosedur yang terdapat pada Unit2
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
begin
kumpulanProsedur.bersih(Self);
//procedure bersih yang terdapat pada Unit2 dipanggil
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Enabled:=true;
Edit1.SetFocus;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then //jika tombol enter di tekan
begin
kumpulanProsedur.cekEdit(sender,Edit2);
//procedure cekEdit yang terdapat pada Unit2 dipanggil
//sender merupakan edit asal , dan edit2 merupakan tujuan focus
end;
end;
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
kumpulanProsedur.cekEdit(sender,Edit3);
end;
end;
procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
kumpulanProsedur.cekEdit(sender,Edit4);
end;
end;
procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
kumpulanProsedur.cekEdit(sender,Edit5);
end;
end;
procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
kumpulanProsedur.cekEdit(sender,Edit1);
end;
end;
end.
Saya berharap agan mengerti maksud dari postingan saya.Memang , saya hanya menyajikan contoh yang sangat sederhana.Namun saya tekankan , yang terpenting ialah agan paham konsep Inheritance / Pewarisan itu sendiri.Bila agan ingin mendownload source codenya , silahkan download
DISINI.Sekian tutorial kali ini semoga bermanfaat :)
Simak Juga Tutorial Lainnya:
0 komentar:
Posting Komentar