Senin, 05 Maret 2012

OBJECT ORIENTED PROGRAMMING (OOP) DI VISUAL FOXPRO PART 1


Membuat class di file PRG

Setelah kita mengetahui OOP di dalam Visual foxpro secara umum. Selanjutnya adalah kita mencoba mempraktekan pembuatan Class. Perumpamaan  Class itu seperti Cetakan Kue yang bisa digunakan untuk membuat Kue apa saja. Sintax untuk membuat class adalah :



DEFINE CLASS <<namakelas>> AS <<Kelas Induk/CUSTOM>> OF <<file asal.prg>>


      <<property>>

     

      PROCEDURE <<method>>

      ENDPROC


      ENDDEFINE
  1. Nama kelas kita definisikan dengan Kelas+Nama : misalkan KelasSatker,KelasPejabat dll
  2. AS Kelas Induk/Custom. Kelas induk adalah kelas bapak yang akan kita warisi sifat-sifatnya, atau Custom adalah kelas umum yang kita pilih.
  3. OF file asal.prg : jika Kelas Induknya itu berada di file PRG yang lain
  4. Property : adalah variabel-variabel yang akan kita isi nilainya
  5. Procedure: adalah method yang kita panggil untuk melakukan fungsi tertentu.
Contoh : saya mempunyai tabel bernama t_satker. di dalamnya ada beberapa kolom yaitu : nama satker(nmsatker), kode departemen (kddept), kode unit (kdunit), kode KPPN (kdkppn). kemudian kita buat class :

  1. Nama Class : KelasSatker
  2. Type Class : Custom
  3. Property : nmsatker,kddept,kdunit,kdkppn
  4. Method : p_carisatker(ckd) : digunakan untuk mencari satker dengan memasukkan paramter kode satker

DEFINE CLASS KelasSatker AS Custom
            nmsatker=''
            kddept=''
            kdunit=’’
            kdkppn=''
     
            PROCEDURE p_carisatker(ckd)
                  TEXT TO psql NOSHOW
                        SELECT * FROM t_satker WHERE kdsatker='<<ckd>>'
                  ENDTEXT
                  SQLEXEC(con,psql,'t_satker')
                  this.nmsatker=t_satker.nmsatker
                  this.kddept=t_satker.kddept
                  this.kdunit=t_satker.kdunit
                  this.kdkppn=t_satker.kdkppn
            ENDPROC
      ENDDEFINE



Simpan class diatas dengan nama referensi.prg

Pemanggilan property dan method menggunakan perintah THIS. (this titik).Seperti contoh diatas, untuk mengisikan nilai pada property-property nmsatker,kddept dll menggunakan this.nmsatker,this.kddept dst...
Untuk parameter seperti : ckd, tidak digunakan awalan THIS, sebab dia bukan anggota dari class, hanya sekedar parameter.


Dengan pembuatan procedure/method p_carisatker() maka kita akan mendapatkan 4 RETURN sekaligus, bandingkan dengan metode procedural yang hanya mampu menghasilkan 1 RETURN saja. Contoh pembuatan procedure menggunakan function biasa :

Setelah file class telah dibuat, tahap selanjutnya adalah pembuatan obyek class atau Kue-nya dari cetakan kue, kita bahas di tulisan berikutnya ya...




5 komentar:

  1. Penjelasannya Sangat Mudah di Pahami...

    bs dikasih penjelasan lagi, dengan objek customer dan kendaraan

    tks

    BalasHapus
    Balasan
    1. DEFINE CLASS KelasCustomer AS Custom
      Nocust =''
      Namacust=''
      Lahir ={}
      Alamat =''
      Telpon=''

      PROCEDURE p_caricustomer(cnocust)

      SELECT * FROM t_customer WHERE nocust=cnocust INTO CURSOR CURSOR chasilcari

      this.nocust=chasil.nocust
      this.namacust=chasil.namacust
      this.lahir=chasil.lahir
      this.alamat=chasil.alamat
      this.telpon=chasil.telpon

      * baris pengisian property diatas bisa diganti dengan 1 perintah ini
      SCATTER NAME this ADDITIVE

      *cursor direlease
      USE IN chasilcari
      ENDPROC
      ENDDEFINE

      DEFINE CLASS KelasMobil AS Custom

      nomobil=''
      namamobil=''
      merk=''
      jenis=''
      tahunpembuatan=''

      PROCEDURE p_carimobil(cno)

      SELECT * FROM t_mobil WHERE nomobil=cno INTO CURSOR chasilcari
      SELECT chasilcari
      SCATTER NAME this ADDITIVE

      *cursor direlease
      USE IN chasilcari

      ENDPROC

      ENDDEFINE

      Hapus
  2. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  3. Gan.. bs minta contoh program sederhana, dengan Foxpro dan MySQL dengan konsep Customer dan Kendaraan..

    Tks B4

    BalasHapus