MVC di VFP 1 : class entitas

ini merupakan artikel bagian pertama dari seri MVC di VFP, setelah di artikel sebelumnya kita telah membahas singkat tentang MVC dan bagian-bagiannya di VFP, maka sekarang kita mulai membahas satu per satu bagian-bagian tersebut serta komponen pendukungnya. di bagian pertama ini kita akan bahas tentang class entitas.

class entitas adalah class yang mewakili field-field dalam satu tabel, class ini mewakili satu baris data dalam tabel dalam satu waktu. Sebenarnya seperti apapun rumitnya proses pengolahan data kita, secara teknik kita melakukannya satu per satu, dari satu baris ke baris berikutnya, dari satu tabel ke tabel berikutnya. untuk mempermudah komunikasi dan pengolahan data antara model, view dan controller maka saya menggunakan class entitas. mungkin sebagian orang tidak setuju dengan metode ini, tidak jadi masalah karena teknik masing-masing orang memang berbeda, menurut kenyamanan dan apa yang masing-masing percayai lebih baik.

adapun contoh class entitas yang telah saya buat adalah sebagai berikut :

*// program : database.prg
*// author : shes12
*// date : januari 2013
*// purpose : database field get/set

*// begin of table pribadi
DEFINE CLASS pribadi as empty
PROTECTED id
PROTECTED namadepan
PROTECTED namabelakang
PROTECTED kelamin
PROTECTED tempatlahir
PROTECTED tanggallahir
PROTECTED saudara

PROCEDURE init
this.id = 0
this.namadepan = “”
this.namabelakang = “”
this.kelamin = “”
this.tempatlahir = “”
this.tanggallahir = {}
this.saudara = 0
ENDPROC

PROCEDURE destroy
this.id = 0
this.namadepan = “”
this.namabelakang = “”
this.kelamin = “”
this.tempatlahir = “”
this.tanggallahir = {}
this.saudara = 0
ENDPROC

PROCEDURE getid
RETURN this.id
ENDPROC

PROCEDURE setid
LPARAMETERS tnID

IF VARTYPE(tnID) = “N”
this.id = tnID
ENDIF
ENDPROC

PROCEDURE getnamadepan
RETURN this.namadepan
ENDPROC

PROCEDURE setnamadepan
LPARAMETERS tcnamadepan

IF VARTYPE(tcnamadepan) = “C”
this.namadepan = tcnamadepan
ENDIF
ENDPROC

PROCEDURE getnamabelakang
RETURN this.namabelakang
ENDPROC

PROCEDURE setnamabelakang
LPARAMETERS tcnamabelakang

IF VARTYPE(tcnamabelakang) = “C”
this.namabelakang = tcnamabelakang
ENDIF
ENDPROC

PROCEDURE getkelamin
RETURN this.kelamin
ENDPROC

PROCEDURE setkelamin
LPARAMETERS tckelamin

IF VARTYPE(tckelamin) = “C”
this.kelamin = tckelamin
ENDIF
ENDPROC

PROCEDURE gettempatlahir
RETURN this.tempatlahir
ENDPROC

PROCEDURE settempatlahir
LPARAMETERS tctempatlahir

IF VARTYPE(tctempatlahir) = “C”
this.tempatlahir = tctempatlahir
ENDIF
ENDPROC

PROCEDURE gettanggallahir
RETURN this.tanggallahir
ENDPROC

PROCEDURE settanggallahir
LPARAMETERS tdtanggallahir

IF VARTYPE(tdtanggallahir) = “D”
this.tanggallahir = tdtanggallahir
ENDIF
ENDPROC

PROCEDURE getsaudara
RETURN this.saudara
ENDPROC

PROCEDURE setsaudara
LPARAMETERS tnsaudara

IF VARTYPE(tnsaudara) = “N”
this.saudara = tnsaudara
ENDIF
ENDPROC
ENDDEFINE
*// end of table pribadi

lumayan panjang ya? untuk sebuah class yang hanya berfungsi mewakili satu baris data di dalam tabel, maka class tersebut mungkin terlihat begitu panjang. mungkin ada pula yang melihat bahwa class tersebut mirip dengan class entitas yang ada di bahasa pemrograman java, ya memang saya mengadaptasi class tersebut dari class entitas yang ada di java. saya pilih metode ini karena menurut saya memang lebih memudahkan saya untuk memastikan bahwa setiap nilai dari field-field yang akan saya masukkan ke dalam database harus benar-benar valid, oleh karena itulah saya menggunakan class ini.

adapun skenarionya kurang lebih akan seperti ini :
class entitas ini akan dibuat di controller, kemudian akan direferensikan ke model dan view oleh controller, tujuannya adalah perubahan yang terjadi pada class ini akan dapat dibaca oleh ketiga bagian tersebut.

penggalan code yang ada di controller adalah sebagai berikut :

PROCEDURE startup
this.table = NEWOBJECT(“pribadi”,”database.prg”)

this.model = NEWOBJECT(“modelpribadi”,”modelpribadi.prg”)
this.model.settable(this.table)
this.model.setdatasession(this.DataSessionId)

this.view = CREATEOBJECT(“viewPribadi”)
this.view.setcontroller(this)
this.view.setdatasession(this.DataSessionId)
this.view.settable(this.table)
ENDPROC

dari penggalan method di controller tersebut dapat kita lihat bahwa object table dibuat di controller berdasarkan class entitas pribadi di atas. kemudian object model dibuat dan dibuat referensi terhadap object table di model. kemudian object view dibuat dan dibuat juga referensi terhadap object table di view.

adapun class entitas tersebut hanya memiliki method set dan get, method get digunakan untuk mendapatkan nilai dari field/properties dan method set digunakan untuk menyimpan nilai tertentu ke field/properties dengan terlebih dahulu memastikan bahwa nilai yang diumpankan memiliki type data yang sesuai. jika type data yang diumpankan tidak sesuai maka nilai field/properties akan tetap seperti semula atau tidak berubah. ada kemungkinan di method set ini kita bisa memberikan output true jika proses set berhasil dan false jika proses set gagal, hal ini untuk mengetahui dan memastikan bahwa proses set seluruhnya berhasil. tapi untuk saat ini kita tidak akan membahas hal tersebut terlebih dahulu.

setelah ini kita akan membuat table di database server yang sesuai dengan class entitas pribadi tersebut diatas.

stay tuned !

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s