Pengantar.
Minggu lalu kami telah membuat Objek ClsVolume Kelas Turunan, menggunakan Kelas ClsArea sebagai Kelas Dasar. Kami telah membuat Prosedur Properti di Kelas Turunan untuk mengekspos Properti dan Fungsi Kelas Dasar ke program pengguna Objek. Metode ini menuntut pengulangan semua prosedur properti dari Kelas Dasar di kelas turunan juga. Di sini, kami mengeksplorasi cara membuat Kelas ClsVolume Turunan yang sama tanpa mengulangi Prosedur Properti dari Kelas ClsArea Dasar.
Kami telah mempelajari penggunaan Dapatkan dan Biarkan Prosedur Properti di Kelas. Ada satu lagi Prosedur Properti yang digunakan di Kelas:Set Prosedur Properti. Prosedur Properti yang Ditetapkan secara langsung menetapkan Objek ke Objek Kelas dengan Tipe yang sama.
Sebelum melanjutkan lebih jauh, Anda dapat mengunjungi halaman sebelumnya tentang topik ini, jika Anda belum melakukannya, tautannya diberikan di bawah ini:
- Modul Kelas MS-Access dan VBA
- Array Objek Kelas VBA MS-Access
- Kelas Dasar MS-Access dan Objek Turunannya
Kelas Volume Cls, Perubahan.
Kami akan membuat varian berbeda dari Modul Kelas ClsVolume yang sama, yang telah kami buat minggu lalu, menggunakan ClsArea sebagai Kelas Dasar, dengan pendekatan yang berbeda, dan dengan Kode yang lebih sedikit.
Buat Modul Kelas baru dan ubah Nilai Properti Nama menjadi ClsVolume2 .
Salin dan Tempel Kode berikut ke dalam Modul Kelas ClsVolume2 dan Simpan Modul:
Option Compare Database Option Explicit 'Method two-1 Private p_Height As Double Private p_Area As ClsArea Public Property Get dblHeight() As Double dblHeight = p_Height End Property Public Property Let dblHeight(ByVal dblNewValue As Double) p_Height = dblNewValue End Property Public Function Volume() As Double Volume = p_Area.dblLength * p_Area.dblWidth * p_Height End Function
‘Baru Dapatkan dan Setel Prosedur Properti untuk Objek ClsAreaProperti Publik Dapatkan CArea() As ClsArea Set CAArea =p_AreaEnd PropertyPublic Property Set CArea(ByRef AreaValue As ClsArea) Set p_Area =AreaValueEnd Property
Pilih Kompilasi Nama Proyek dari Debug Menu untuk mengkompilasi Kode VBA di Database untuk memastikan bahwa semua Kode Proyek VBA Bebas Error. Jika Anda mengalami Kesalahan di Program VBA Anda yang lain, harap lacak kesalahannya, perbaiki, dan kompilasi ulang Proyek Anda. Jika tidak, VBA IntelliSense yang menampilkan daftar properti dan fungsi Objek tidak akan berfungsi. Itu tidak akan mencegah kita untuk menetapkan/mengambil nilai ke/dari Object Properties. Tapi, saat belajar, penting untuk melihat Properties dari Object muncul dan menampilkan daftar, sebagai asisten dalam Coding.
Dapatkan/Setel alih-alih Dapatkan/Biarkan Prosedur Properti.
Kami telah menghilangkan semua prosedur properti ClsArea, dibuat di versi terakhir Kelas ClsVolume, dan menggantinya dengan Dapatkan/Set Prosedur Properti, alih-alih Dapatkan/Biarkan . Periksa area deklarasi di mana kami telah mendeklarasikan p_Area dideklarasikan sebagai Objek Kelas ClsArea.
Ketika sebuah Objek dideklarasikan dengan cara ini, kita biasanya harus membuat turunan dari objek ini dalam Prosedur Class_Initialize() dalam Kode di atas. Kami tidak melakukannya di sini karena kami berencana untuk melakukannya di Program pengguna dan mengisi Propertinya dengan nilai yang sesuai dan kemudian meneruskannya ke Kelas ClsVolume2, sebelum tahap perhitungan akhir untuk menggunakan nilainya.
Perhatikan Setel CAArea() prosedur. Parameter ByRef AreaValue dideklarasikan sebagai ClsArea Object. Ini akan menerima Objek Kelas ClsArea ketika diteruskan ke Property Set CArea(ByRef AreaValue as ClsArea) , dalam variabel objek AreaValue, dan menetapkan ke p_Area Properti ClsVolume2 Objek.
Dapatkan CAArea() Prosedur properti mengembalikan Object ke program pemanggil.
Dalam program kami sebelumnya, kami telah menulis prosedur Properti untuk elemen individual (Panjang, Lebar, Tinggi) dari suatu objek untuk menetapkan/mengembalikan nilai Ke/Dari mereka. Di sini, perbedaannya adalah kita melewatkan seluruh Objek sebagai Parameter ke Prosedur yang Ditetapkan. Untuk mengambil Nilai Properti Objek ini (katakanlah lblHeight) kita harus mengatasinya sebagai CAArea.dblLength . Dapatkan/Setel Nama Prosedur Properti Carea menjadi objek anak dari Objek utama ketika dideklarasikan dalam Program Utama dan Prosedur Propertinya dapat diakses secara langsung melalui Alamat Objek Vol.CArea.dblLength.
Program Tes dalam Modul Standar.
Kami akan menulis program kecil di Modul Standar untuk menguji Objek Kelas ClsVolume2 turunan baru kami.
Masukkan Modul Standar baru di Proyek Anda. Salin dan tempel Kode berikut ke dalam Modul dan Simpan kode:
Public Sub SetNewVol2_1() 'Method 1/2 Dim Vol As New ClsVolume2 'ClsArea Object instantiated and passed to the 'Property Procedure Set CArea in ClsVolume2. Set Vol.CArea = New ClsArea 'declare and instantiate the object in one statement Stop Vol.CArea.strDesc = "Bed Room" Vol.CArea.dblLength = 90 Vol.CArea.dblWidth = 10 Vol.dblHeight = 10 'assign height to ClsVolume2 Stop Debug.Print "Description", "Length", "Width", "Area", "Height", "Volume" Debug.Print Vol.CArea.strDesc, Vol.CArea.dblLength, Vol.CArea.dblWidth, Vol.CArea.Area, Vol.dblHeight, Vol.Volume Set Vol.CArea = Nothing Set Vol = Nothing End Sub
Peninjauan Kode Baris demi Baris.
.Mari kita lihat sekilas kode VBA di atas. Baris pertama membuat instance Kelas ClsVolume2 dengan nama Vol. Setelah dua baris komentar berikutnya, Set pernyataan dengan Vol.CAArea Prosedur Properti dipanggil dan melewati Baru membuat ClsArea Objek sebagai Parameter.
Saya menempatkan Berhenti pernyataan di baris berikutnya untuk memberikan jeda dalam Program untuk melihat bagaimana objek ditugaskan ke Set Area CA Obyek. Bagaimana? kita akan menjelajahinya sebentar lagi?
Empat baris berikutnya memberikan nilai pada Object ClsArea dan pada property Height dari Object ClsVolume2.
Berhenti berikutnya membuat jeda dalam Program sehingga kami dapat memeriksa memori tentang bagaimana nilai disimpan dalam memori.
Baris berikutnya mencetak Judul di Jendela Debug untuk nilai yang dicetak pada baris berikutnya.
Baris berikutnya mencetak nilai Object Properties dari memori ke dalam Debug Window.
Jalankan Kode ke Pernyataan Berhenti Berikutnya
Mari kita jalankan Kode dan periksa memori untuk melihat apa yang terjadi di sana pada setiap tahap, di mana saya meletakkan pernyataan Stop.
- Klik di suatu tempat di tengah kode dan tekan F5 untuk menjalankan kode dan menghentikan sementara program pada Pernyataan Berhenti. first
- Pilih Jendela Lokal dari Tampilan Menu untuk membuka jendela baru di bawah Jendela Kode, untuk menampilkan bagaimana Objek ClsArea dan ClsVolume2, propertinya, dan prosedur properti anggotanya disimpan di memori. Contoh gambar Jendela Lokal diberikan di bawah ini.
Jendela Lokal Lihat.
Seret tuas pengatur ukuran Windows lainnya ke atas untuk mengurangi tingginya guna memberi lebih banyak ruang bagi tampilan Lokal Jendela. Lebih baik tutup Debug Window, untuk sementara gunakan Ctrl+G untuk memunculkannya kembali saat dibutuhkan nanti.
Kita dapat memiliki tampilan grafis dari semua objek dan Propertinya di Lokal Jendela. Nama depan dengan simbol plus [+] menunjukkan nama Modul Standar, tempat program kita dijalankan.
Simbol plus [+] berikutnya dengan nama Vol adalah Object ClsVolume2 yang dipakai dalam memori.
- Klik simbol [+] untuk memperluas dan menampilkan detailnya.
Anda akan menemukan Objects dan Properties level berikutnya.
[+]Area CA menunjukkan bahwa Objek ini memiliki tingkat Properti berikutnya dan Nilainya.
dblHeight Dapatkan properti Prosedur datang langsung di bawah Objek Vol.
[+]p_Area adalah Properti Pribadi yang dinyatakan sebagai ClsArea Kelas di Kelas ClsVolume2.
p_Height juga merupakan Properti Pribadi yang dideklarasikan di ClsVolume2.
- Klik tanda tambah [+] simbol untuk memperluas objek untuk menunjukkan Properti dan Nilainya.
Perluasan [+]CAArea memberi kita tampilan Obyek ClsArea yang telah kita lewati ke prosedur properti Set CArea().
Perluasan [+]p_Area memberikan tampilan Properti ClsArea yang dideklarasikan sebagai Pribadi.
Perhatikan p_Area Properti Pribadi, dari Objek Kelas ClsVolume2, dan semua elemennya hanya dapat diakses melalui CAArea Properti Objek Dapatkan/Tetapkan Prosedur ke dunia luar.
Kolom kedua dari jendela Locals akan menampilkan nilai yang ditetapkan ke Object Properties dan saat ini tidak ada nilai di dalamnya.
Kolom Ketiga menunjukkan Tipe Data atau Nama Modul Kelas Objek.
- Tekan F5 untuk menjalankan program lebih lanjut, hingga dihentikan sementara pada pernyataan Stop berikutnya, untuk menetapkan beberapa nilai ke dalam Object Properties. Program akan berhenti pada Berhenti berikutnya penyataan. Periksa Jendela Lokal untuk perubahan Nilai.
Di dalam Area CA Objek dua baris pertama dengan nilai 90, 10, dan strDesc terakhir dengan nilai "Bed Room" adalah Dapatkan Prosedur Properti. p_Desc, p_Length, dan p_width adalah nilai yang ditetapkan melalui Set Prosedur Properti ke p_Area Properti Objek Kelas ClsVolume2.
Area p_ Objek Kelas ClsArea yang dideklarasikan sebagai Milik Pribadi dari ClsVolume2 terlihat dengan Dapatkan/Set Prosedur Properti dan nilai yang ditetapkan.
Periksa Jenis Kolom [-]CAArea dan [-]p_Area kedua Objek diturunkan dari Kelas Dasar ClsArea.
Penggunaan Objek Kelas ClsArea dan ClsVolume2 Secara Berbeda.
Minggu depan kita akan mencoba pendekatan lain dengan dua objek yang sama. Jika Anda ingin mencobanya sendiri, berikut adalah petunjuk cara mencobanya sendiri.
- Buat Instansi ClsVolume2 dan ClsArea Class sebagai dua Objek berbeda dalam Program Modul Standar.
- Tetapkan nilai ke kedua Properti Objek.
- Tetapkan Obyek yang diinstansiasi ClsArea ke CAArea Objek di Objek Kelas ClsVolume2, sebelum mencetak Nilai ke Jendela Debug.
Dalam contoh ini, kita dapat mencapai hasil yang sama seperti yang kita lakukan pada contoh di atas, tanpa mengulang Prosedur Properti Get/Let seperti yang kita lakukan di Modul Kelas ClsVolume.
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
- Menambahkan Objek Kelas sebagai Item Kamus
- Memperbarui Item Kamus Objek Kelas pada Formulir