Sabtu, 10 Maret 2012


OBJECT ORIENTED PROGRAMMING (OOP) DI VISUAL
FOXPRO PART 4

ENCAPSULATION

            Dalam mendeklarasikan property dan method di dalam class terkadang kita perlu menyembunyikan informasinya (encapsulation), supaya tidak digunakan oleh programer lain secara sembarangan, bahkan terhadap diri kita sendiri yang membuat kelas tersebut. Tujuannya adalah mengurangi kesalahan koding dalam menggunakan kelas tersebut. Jenis encapsulation di Visual Foxpro ada 2 jenis yaitu  HIDDEN dan PROTECTED. Ini berlaku untuk Propery dan Method.

  •   HIDDEN : property/method tersebut hanya bisa digunakan dalam  kelas tersebut. Tidak bisa diakses menggunakan obyek.
  •   PROTECTED : property/ method tersebut bisa digunakan dalam kelas tersebut dan kelas turunannya, namun tetap tidak bisa diakses menggunakan obyek.

Syntax :

      HIDDEN/PROTECTED <<property>>
      HIDDEN/PROTECTED PROCEDURE <<method>>()
      ENDPROC

Pertanyaannya kapan kita menggunakan encapsulation? Jika property/method tersebut TIDAK BOLEH kita ubah dari luar menggunakan obyek. Contoh :
Kita membuat Kelas rumus perhitungan lembur. Dimana tarif lembur sudah fix yaitu 1000 per jam (tidak boleh diubah-ubah), Sedangkan jumlah maksimum jam yang diijinkan adalah 5 jam. Jika ada pegawai yang lembur diatas 5 jam maka yang dibayar tetap 5 jam saja.

DEFINE CLASS KelasLembur as Custom
     
      HIDDEN tariflembur
     
      tariflembur=1000
      jam=0
      hasil=0
     
      HIDDEN PROCEDURE maxlembur()
            IF this.jam>5
                  this.jam=5
            ENDIF
      ENDPROC
     
      PROCEDURE hitunglembur()

            this.maxlembur() && method pembatasan jam lembur dijalankan

            this.hasil=this.jam * this.tariflembur

      ENDPROC
ENDDEFINE


   Hidden Property : tariflembur. Property ini tidak boleh diubah dari luar, sehingga ketika kita hendak mengakses menggunakan obyek akan terkunci, dan akan eror ketika akan diisi dengan nilai yang lain misalkan menjadi 5.000 atau 10.000. Property yang boleh diakes hanyalah jam dan hasil saja.


Terlihat property diatas terdapat gambar grendel/kunci. Misalkan akan kita ubah isinya menjadi 50.000 maka akan keluar eror sbb :

      Hidden Method : maxlembur(). Method ini akan membatasi jumlah jam lembur yang dibayar, misalkan ada pegawai yang lembur diatas 5 jam, maka yang dibayar tetap 5 jam. Method  ini tidak boleh diubah dari luar, sehingga ketika kita hendak mengakses menggunakan obyek akan terkunci.


             Terlihat method diatas terdapat gambar grendel/kunci. Misalkan akan kita panggil menggunakan obyek, akan keluar eror.Method hitunglembur() saja yang bisa dipanggil dari obyek.
            
       Untuk yang jenis PROTECTED sebenarnya sama dengan HIDDEN, bedanya untuk kelas turunannya dapat memanggil nilai property dan method kelas induknya, namun tetap saja tidak bisa dipanggil dari obyek.  


Kesimpulan : Encapsulation digunakan untuk mencegah pengaksesan propery/method dari luar (dari Obyek) untuk menghindari kesalahan kita dalam memanggil property/method. 









Tidak ada komentar:

Posting Komentar