Download

11/11/2010

Konsep Inheritance/Pewarisan Di Delphi 7



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.


  1. unit Unit2;  
  2.   
  3. interface  
  4.   
  5. implementation  
  6.   
  7. end.  

Itu adalah standar file unit.Ketikan kode berikut pada Unit2 tersebut.


  1. unit Unit2;  
  2.    
  3. interface  
  4.   
  5. uses  
  6.    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,    
  7.   Dialogs, StdCtrls;  
  8.    
  9. type  
  10.   Tprosedur = class (TObject)//kita membuat object baru dengan nama TProsedur  
  11.   private  
  12.     {private declaration}  
  13.   public  
  14.      procedure cekEdit(sender1,sender2:TObject); //registrasi procedure  
  15.      procedure bersih(namaForm:TObject);  
  16.      {public declaration}  
  17.   end;  
  18.   
  19. implementation  
  20.   
  21. procedure Tprosedur.cekEdit(sender1,sender2:TObject); //inisialisasi procedure  
  22. begin  
  23.   with(sender1 as TEdit) do  
  24.     begin  
  25.       if Text='' then  
  26.         begin  
  27.           Application.MessageBox('maaf data tidak boleh kosong','informasi',MB_OK or MB_ICONINFORMATION);  
  28.         end  
  29.       else  
  30.         begin  
  31.           with(sender2 as TEdit) do  
  32.             begin  
  33.               Enabled:=true;  
  34.               SetFocus;  
  35.             end;  
  36.         end;  
  37.     end;  
  38. end;  
  39.   
  40. procedure Tprosedur.bersih(namaForm:TObject);  
  41. var a:Integer;  
  42. begin  
  43.    with(namaForm as TForm) do  
  44.     begin    
  45.       for a :=0 to ComponentCount-1 do  
  46.         begin    
  47.           if Components[a] is TEdit then TEdit(Components[a]).Clear;   //membersihkan semua komponen TEdit    
  48.           if Components[a] is TEdit then TEdit(Components[a]).Enabled := False;  //menonaktifkan semua komponen TEdit  
  49.         end;    
  50.     end;  
  51. end;  
  52.   
  53. 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.

  1. uses  
  2.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  
  3.   Dialogs, StdCtrls,Unit2;//unit2 di tambahkan ke unit1  

Lalu pada klausa Var ,inisialisasi Inheritance terjadi.Tambahkan kode berikut.Kita akan menamainya kumpulanProsedur

  1. var  
  2.   Form1: TForm1;  
  3.   kumpulanProsedur:Tprosedur;//kumpulanProsedur merupakan turunan dari Tprosedur yang terdapat pada Unit2  

Pada Form1 event on show , tambahkan kode berikut.


  1. procedure TForm1.FormShow(Sender: TObject);  
  2. begin  
  3.   kumpulanProsedur.bersih(Self);  
  4.   //procedure bersih yang terdapat pada Unit2 dipanggil  
  5. end;  

Pada button1 ketikan kode berikut.


  1. procedure TForm1.Button1Click(Sender: TObject);  
  2. begin  
  3.   Edit1.Enabled:=true;//mengaktifkan edit1  
  4.   Edit1.SetFocus;//focus berpindah ke edit1  
  5. end;  

Selanjutnya pada edit1 event on key press , ketikan kode berikut.


  1. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);  
  2. begin  
  3.   if key=#13 then //jika tombol enter di tekan  
  4.     begin  
  5.       kumpulanProsedur.cekEdit(sender,Edit2);  
  6.       //procedure cekEdit yang terdapat pada Unit2 dipanggil  
  7.       //sender merupakan edit asal , dan edit2 merupakan tujuan focus  
  8.     end;  
  9. 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.


  1. unit Unit1;  
  2.   
  3. interface  
  4.   
  5. uses  
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  
  7.   Dialogs, StdCtrls,Unit2;  
  8.   
  9. type  
  10.   TForm1 = class(TForm)  
  11.     Edit1: TEdit;  
  12.     Edit2: TEdit;  
  13.     Edit3: TEdit;  
  14.     Edit4: TEdit;  
  15.     Edit5: TEdit;  
  16.     Button1: TButton;  
  17.     procedure FormShow(Sender: TObject);  
  18.     procedure Button1Click(Sender: TObject);  
  19.     procedure Edit1KeyPress(Sender: TObject; var Key: Char);  
  20.     procedure Edit2KeyPress(Sender: TObject; var Key: Char);  
  21.     procedure Edit3KeyPress(Sender: TObject; var Key: Char);  
  22.     procedure Edit4KeyPress(Sender: TObject; var Key: Char);  
  23.     procedure Edit5KeyPress(Sender: TObject; var Key: Char);  
  24.   private  
  25.     { Private declarations }  
  26.   public  
  27.     { Public declarations }  
  28.   end;  
  29.   
  30. var  
  31.   Form1: TForm1;  
  32.   kumpulanProsedur:Tprosedur;//kumpulanProsedur merupakan turunan dari Tprosedur yang terdapat pada Unit2  
  33. implementation  
  34.   
  35. {$R *.dfm}  
  36.   
  37. procedure TForm1.FormShow(Sender: TObject);  
  38. begin  
  39.   kumpulanProsedur.bersih(Self);  
  40.   //procedure bersih yang terdapat pada Unit2 dipanggil  
  41. end;  
  42.   
  43. procedure TForm1.Button1Click(Sender: TObject);  
  44. begin  
  45.   Edit1.Enabled:=true;  
  46.   Edit1.SetFocus;  
  47. end;  
  48.   
  49. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);  
  50. begin  
  51.   if key=#13 then //jika tombol enter di tekan  
  52.     begin  
  53.       kumpulanProsedur.cekEdit(sender,Edit2);  
  54.       //procedure cekEdit yang terdapat pada Unit2 dipanggil  
  55.       //sender merupakan edit asal , dan edit2 merupakan tujuan focus  
  56.     end;  
  57. end;  
  58.   
  59. procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);  
  60. begin  
  61.    if key=#13 then  
  62.     begin  
  63.       kumpulanProsedur.cekEdit(sender,Edit3);  
  64.     end;  
  65. end;  
  66.   
  67. procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);  
  68. begin  
  69.    if key=#13 then  
  70.     begin  
  71.       kumpulanProsedur.cekEdit(sender,Edit4);  
  72.     end;  
  73. end;  
  74.   
  75. procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);  
  76. begin  
  77.    if key=#13 then  
  78.     begin  
  79.       kumpulanProsedur.cekEdit(sender,Edit5);  
  80.     end;  
  81. end;  
  82.   
  83. procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char);  
  84. begin  
  85.    if key=#13 then  
  86.     begin  
  87.       kumpulanProsedur.cekEdit(sender,Edit1);  
  88.     end;  
  89. end;  
  90. 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

Newer Post Older Post Home
Aulia DirUt. Powered by Blogger.
 

Blog Archive

Followers

 

Templates by Nano Yulianto | CSS3 by David Walsh | Powered by {N}Code & Blogger