Pengantar.
Jika Anda belum melihat Postingan sebelumnya di Modul Kelas Microsoft Access, silakan baca sebelum melanjutkan, tautannya diberikan di bawah ini.
- Modul Kelas MS-Access dan VBA.
- Array Objek Kelas VBA MS-Access.
Area Cls Kelas dapat tampil sebagai Kelas Dasar di Objek Kelas lain, perhitungan yang dilakukan oleh kelas dasar dapat digunakan sebagai bagian dari perhitungan objek baru. Misalnya, Ini bisa menjadi bagian dari Objek yang menghitung Volume sesuatu,
dbl dalam dblLength dan dblWidth Nama Prosedur Properti untuk Dapatkan/Biarkan Prosedur hanyalah indikasi bahwa Objek Kelas mengharapkan Nilai Panjang dan Lebar dalam angka presisi ganda. Demikian pula, Jika kita mengubah Nama Prosedur Properti menjadi Kuantitas dan Harga Satuan maka nilai pertama dikalikan dengan nilai kedua memberi kita Harga Total dari beberapa item.
Ini berarti bahwa Anda dapat menggunakan Kelas ClsArea sebagai kelas dasar, di mana pun Anda membutuhkan hasil dari nilai pertama dikalikan dengan nilai kedua, seperti Harga Total * Tarif Pajak untuk menghitung jumlah pajak atau Harga Total * Tingkat Diskon untuk menemukan Jumlah Diskon dan seterusnya.
Meskipun kami telah mengembangkan Modul Kelas sederhana, itu dapat menjadi bagian dari banyak Kelas turunan lainnya. Kemungkinannya terbuka untuk imajinasi dan kreativitas Anda.
Kelas ClsArea kami menghitung luas material, Ruangan, atau item serupa dengan Properti Panjang dan Lebar saja. Itu tidak menghitung luas Segitiga atau Lingkaran. Tapi, itu bisa menjadi bagian dari Objek Kelas baru yang menghitung Volume Kamar, Gudang untuk menemukan kapasitas penyimpanan. Untuk itu, kita membutuhkan satu nilai lagi Height of Room, Warehouse, dll.
Kelas Volume:ClsVolume.
Mari kita buat Modul Kelas baru ClsVolume, menggunakan ClsArea sebagai Kelas Dasar. Masukkan Modul Kelas dan ubah Nama Properti untuk ClsVolume . Ketik atau Salin dan Tempel Kode berikut ke dalam Modul Kelas.
Option Compare Database Option Explicit Private p_Area As ClsArea Private p_Height As Double Private Sub Class_Initialize() Set p_Area = New ClsArea End Sub Private Sub Class_Terminate() Set p_Area = Nothing End Sub Public Property Get dblHeight() As Double dblHeight = p_Height End Property Public Property Let dblHeight(ByVal dblNewValue As Double) Do While Val(Nz(dblNewValue, 0)) <= 0 dblNewValue = InputBox("Negative/0 Values Invalid:", "dblHeight()", 0) Loop p_Height = dblNewValue End Property Public Function Volume() As Double If (p_Area.Area() > 0) And (p_Height > 0) Then Volume = p_Area.Area * p_Height Else MsgBox "Enter Valid Values for Length,Width and Height.", , "ClsVolume" End If End Function
Kode Objek Kelas ClsVolume belum lengkap. Mari kita periksa kode baris demi baris. Di baris ketiga dinyatakan sebagai Milik Pribadi p_Area dari Objek Kelas ClsArea.
Baris berikutnya mendeklarasikan Properti Pribadi dengan nama p_Height bertipe data Ganda.
Sub-Rutinitas Class_Initialize() dan Class_Terminate().
Dua Sub-Rutinitas Berikutnya (Initialize() dan Hentikan() ) sangat penting di sini.
Inisialisasi() menjalankan dan membuat instance ClsArea Object di memori saat kita menggunakan dan membuat instance ClsVolume Class Objek dalam program Modul Standar kami.
Saat kita mengeksekusi Pernyataan Set ClsVolume =Nothing dalam program Modul Standar, untuk menghapus Objek ClsVolume dari memori, tombol Terminate() Sub-Rutin berjalan dan melepaskan ruang memori yang ditempati oleh Objek ClsArea.
Properti Dapatkan dblHeight Prosedur mengembalikan nilai dari p_Height Properti untuk Program panggilan.
Properti Biarkan dblHeight Prosedur memvalidasi nilai yang diteruskan ke NewValue parameter dan menetapkannya ke properti pribadi p_Height .
Volume Fungsi Publik() menghitung Volume, dengan memanggil p_Area.Area() Fungsi dan nilai area yang dikembalikan dikalikan dengan p_Height untuk menghitung Volume, dengan ekspresi:Volume =p_Area.Area * p_Height. Namun, sebelum menjalankan pernyataan ini, kami melakukan pemeriksaan validasi untuk memastikan bahwa fungsi p_Area.Area() mengembalikan nilai yang lebih besar dari nol, yang menunjukkan bahwa p_Area.dblLength, p_Area.dblWidth Properties memiliki nilai yang valid di dalamnya dan nilai properti p_Height lebih besar dari nol.
Catatan: Karena, p_Area Objek Kelas ClsArea didefinisikan sebagai Pribadi Property dari ClsVolume Class kita harus membuat Properties-nya (strDesc, dblLength, dblWidth dan Area() function) terlihat oleh dunia luar untuk Dapatkan/Biarkan Operasi dan untuk mengembalikan Nilai Area. Itu berarti kita harus mendefinisikan Get/Let Property Procedures untuk strDesc, dblLength, dblWidth Properties, dan fungsi Area() dari Objek Kelas ClsArea di Modul Kelas ClsVolume juga.
Prosedur Biarkan/Dapatkan Properti.
Tambahkan Properti berikut Dapatkan/Biarkan Prosedur dan Area() fungsi ke Kode Modul Kelas ClsVolume:
Public Property Get strDesc() As String strDesc = p_Area.strDesc End Property Public Property Let strDesc(ByVal NewValue As String) p_Area.strDesc = NewValue End Property Public Property Get dblLength() As Double dblLength = p_Area.dblLength End Property Public Property Let dblLength(ByVal NewValue As Double) p_Area.dblLength = NewValue End Property Public Property Get dblWidth() As Double dblWidth = p_Area.dblWidth End Property Public Property Let dblWidth(ByVal NewValue As Double) p_Area.dblWidth = NewValue End Property Public Function Area() As Double Area = p_Area.Area() End Function
Periksa strDesc() Prosedur properti Get/Let baris Kode. Penggunaan nama Prosedur strDesc hanya masalah pilihan, jika Anda ingin menggunakan nama yang berbeda, silakan. Tapi, Nama Properti asli yang kami gunakan di Kelas ClsArea adalah strDesc. Menggunakan nama asli di sini mengingatkan kita pada hubungan dengan Objek Kelas ClsArea asli.
Dalam Prosedur Properti Dapatkan dblLength() berikutnya, ekspresi di sebelah kanan = tanda p_Area.dblLength membaca nilai dblLength yang disimpan dalam Objek Kelas ClsArea dan kembali ke program pemanggil.
Prosedur Biarkan Properti memberikan nilai parameter dalam variabel NewValue ke Properti p_Area.dblLength dari Objek Kelas ClsArea. Di sini, kami tidak menjalankan pemeriksaan validasi apa pun pada nilai yang diterima dalam variabel parameter NewValue. Pemeriksaan Validasi akan dilakukan di dalam Kelas ClsArea itu sendiri saat kami menetapkan nilai ke p_Area.dblLength properti.
Demikian pula, Prosedur Properti Get/Let ditambahkan untuk Properti p_Area.dblWidth juga,
Selanjutnya, p_Area.Area() Fungsi dibuat terlihat melalui Objek Kelas ClsVolume ke program pemanggil.
Kode Modul Kelas Turunan ClsVolume.
Kode lengkap Modul Kelas ClsVolume diberikan di bawah ini.
Option Compare Database Option Explicit Private p_Area As ClsArea Private p_Height As Double Private Sub Class_Initialize() ‘Open ClsArea Object in Memory with the name p_Area Set p_Area = New ClsArea End Sub Private Sub Class_Terminate() ‘Removes the Object p_Area from Memory Set p_Area = Nothing ‘ End Sub Public Property Get dblHeight() As Double dblHeight = p_Height End Property Public Property Let dblHeight(ByVal dblNewValue As Double) Do While Val(Nz(dblNewValue, 0)) <= 0 dblNewValue = InputBox("Negative/0 Values Invalid:", "dblHeight()", 0) Loop p_Height = dblNewValue End Property Public Function Volume() As Double If (p_Area.Area() > 0) And (Me.dblHeight > 0) Then Volume = p_Area.Area * Me.dblHeight Else MsgBox "Enter Valid Values for Length,Width and Height.",vbExclamation , "ClsVolume" End If End Function ‘ClsArea Class Property Procedures and Method are exposed here Public Property Get strDesc() As String strDesc = p_Area.strDesc End Property Public Property Let strDesc(ByVal NewValue As String) p_Area.strDesc = NewValue End Property Public Property Get dblLength() As Double dblLength = p_Area.dblLength End Property Public Property Let dblLength(ByVal NewValue As Double) p_Area.dblLength = NewValue End Property Public Property Get dblWidth() As Double dblWidth = p_Area.dblWidth End Property Public Property Let dblWidth(ByVal NewValue As Double) p_Area.dblWidth = NewValue End Property Public Function Area() As Double Area = p_Area.Area() End Function
Saya tahu, apa yang Anda pikirkan sekarang:seperti "ini adalah pekerjaan ganda, itu bagus jika kita bisa, beberapa cara, lewati langkah-langkah mengulangi Prosedur Properti ClsArea lagi di Kelas ClsVolume ". Atau katakan, kita bisa menambahkan Properti dblWidth di ClsArea itu sendiri dan menjalankan metode Area() dan Volume() dari sana sendiri, bukan?
Intinya di sini adalah bagaimana Objek Kelas Dasar dapat menjadi bagian dari perancangan Objek Kelas lain.
Ingat, seluruh ide merancang Objek Modul Kelas yang Dapat Digunakan Kembali adalah bahwa program utama, menggunakan Objek Kelas, akan menjadi sederhana dan seluk-beluk yang dibangun ke dalam Objek Kelas tetap tersembunyi.
Ya, kita bisa melakukannya lebih dari satu cara, dengan kode yang ringkas juga. Kami akan menjelajahinya nanti, tetapi untuk saat ini, mari kita lanjutkan dengan rencana awal kita.
Program Utama yang Menggunakan Kelas ClsVolume.
Mari kita uji Kelas ClsVolume baru kita di Program utama di Modul Standar. Kode contoh diberikan di bawah ini.
Public Sub TestVolume() Dim vol As ClsVolume Set vol = New ClsVolume vol.strDesc = "Warehouse" vol.dblLength = 25 vol.dblWidth = 30 vol.dblHeight = 10 Debug.Print "Description", "Length", "Width", "Height", "Area", "Volume" With vol Debug.Print .strDesc, .dblLength, .dblWidth, .dblHeight, .Area(), .Volume() End With End Sub
Anda dapat melihat betapa sederhananya program utama, tanpa garis cetak?
Salin dan Tempel kode ke dalam Modul Standar. Tekan Ctrl+G Keys untuk menampilkan Debug Window jika belum dalam keadaan terbuka. Klik di suatu tempat di tengah Kode dan tekan F5 Kunci untuk menjalankan Kode. Contoh keluaran pada Jendela Debug ditunjukkan di bawah ini.
Description Length Width Height Area Volume Warehouse 25 30 10 750 7500
Keterangan Panjang Lebar Tinggi Luas Luas
Gudang 25 30 10 750 7500
Pemeriksaan Validasi Uji Kinerja.
Kami akan menjalankan tes untuk melihat bahwa pemeriksaan validasi nilai input Kelas ClsArea Kelas Dasar berfungsi ketika nilai-nilai diteruskan ke sana melalui Kelas ClsVolume. Kami telah melakukan beberapa pemeriksaan validasi di fungsi Area() dan Volume() juga.
Mari kita coba satu per satu:
Pertama, kita akan meneruskan nilai negatif ke properti ClsArea.dblLength melalui Kelas ClsVolume. Ini akan memicu pesan kesalahan dan membuka fungsi Inputbox() dalam Do While…Loop untuk memasukkan nilai yang benar.
1. Ganti Value 25, pada baris Vol.dblLength =25 , dengan –5 dan tekan F5 Kunci untuk menjalankan Kode.
Pemeriksaan validasi akan memicu kesalahan dan akan meminta nilai yang lebih besar dari Nol. Masukkan nilai lebih besar dari 0. Setelah itu kembalikan nilai 25 di baris, ganti –5.
2. Nonaktifkan baris Vol.dblHeight =10 dengan menyisipkan simbol komentar (‘) di awal baris seperti pada gambar:‘Vol.dblHeight =10 . Setelah perubahan tekan tombol F5 untuk menjalankan Kode.
Karena tidak ada nilai input yang diteruskan ke Properti, fungsi Vol.Volume() akan menghasilkan Kesalahan yang mengatakan bahwa ketiga Properti:dblLength, dblWidth, dan dblHeight, harus memiliki nilai di dalamnya untuk menjalankan fungsi Volume.
Demikian pula, Anda juga dapat memeriksa kinerja Fungsi Vol.Area().
Kita dapat membuat Fungsi pencetakan data dan meneruskan Objek ClsVolume sebagai parameter ke fungsi tersebut dan mencetak nilai di Jendela Debug.
Kode Program Utama yang Diubah.
Kode yang diubah untuk kedua Program diberikan di bawah ini:
Public Sub TestVolume() Dim Vol As ClsVolume Set Vol = New ClsVolume Vol.strDesc = "Warehouse" Vol.dblLength = 25 Vol.dblWidth = 30 Vol.dblHeight = 10 Call CVolPrint(Vol) Set Vol = Nothing End Sub
Public Sub CVolPrint(volm As ClsVolume) Debug.Print "Description", "Length", "Width", "Height", "Area", "Volume" With volm Debug.Print .strDesc, .dblLength, .dblWidth, .dblHeight, .Area, .Volume End With End Sub
Minggu depan kita akan membangun Objek Kelas Volume dengan Kode yang lebih sedikit.
Tautan Semua Halaman tentang Topik ini.
- Modul Kelas MS-Access dan VBA
- Array Objek Kelas VBA MS-Access
- Kelas Dasar MS-Access dan Objek Turunannya
- Kelas Dasar VBA dan Objek Turunan-2
- Varian Kelas Dasar dan Objek Turunan
- Set Rekaman Ms-Access dan Modul Kelas
- Mengakses Modul Kelas dan Kelas Pembungkus
- Transformasi Fungsionalitas Kelas Wrapper
- Dasar-dasar Ms-Access dan Objek Koleksi
- Modul Kelas Ms-Access dan Objek Koleksi
- Rekaman Tabel dalam Objek dan Formulir Koleksi
- Dasar-dasar Objek Kamus
- Dasar-Dasar Objek Kamus-2
- Mengurutkan Kunci Objek dan Item Kamus
- Menampilkan Rekaman dari Kamus ke Formulir
- Menambahkan Objek Kelas sebagai Item Kamus
- Memperbarui Item Kamus Objek Kelas pada Formulir