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 :)
0 komentar:
Post a Comment