Kamis, 22 September 2011

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.

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