Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Objek adalah kombinasi kode dan data yang dapat diperlakukan sebagai unit. Objek dapat menjadi bagian dari aplikasi, seperti kontrol atau formulir. Seluruh aplikasi juga dapat menjadi objek.
Saat membuat aplikasi di Visual Basic, Anda terus bekerja dengan objek. Anda dapat menggunakan objek yang disediakan oleh Visual Basic, seperti kontrol, formulir, dan objek akses data. Anda juga dapat menggunakan objek dari aplikasi lain dalam aplikasi Visual Basic Anda. Anda bahkan dapat membuat objek Anda sendiri dan menentukan properti dan metode tambahan untuk mereka. Objek bertindak seperti blok penyusun prefabrikasi untuk program - mereka memungkinkan Anda menulis sepotong kode sekali dan menggunakannya kembali berulang-ulang.
Topik ini membahas objek secara rinci.
Objek dan kelas
Setiap objek di Visual Basic ditentukan oleh kelas. Kelas menjelaskan variabel, properti, prosedur, dan peristiwa objek. Objek adalah instans kelas; Anda dapat membuat objek sebanyak yang Anda butuhkan setelah menentukan kelas.
Untuk memahami hubungan antara objek dan kelasnya, pikirkan pemotong cookie dan cookie. Pemotong kue adalah kelas. Ini mendefinisikan karakteristik setiap cookie, misalnya ukuran dan bentuk. Kelas digunakan untuk membuat objek. Objek adalah cookie.
Anda harus membuat objek sebelum dapat mengakses anggotanya, kecuali untuk Shared anggota yang dapat diakses tanpa objek kelas.
Membuat objek dari kelas
Tentukan dari kelas mana Anda ingin membuat objek, atau tentukan kelas Anda sendiri. Contohnya:
Public Class Customer Public Property AccountNumber As Integer End ClassTulis Pernyataan Dim untuk membuat variabel yang dapat Anda tetapkan instans kelasnya. Variabel harus dari jenis kelas yang diinginkan.
Dim nextCustomer As CustomerTambahkan kata kunci Operator Baru untuk menginisialisasi variabel ke instans baru kelas.
Dim nextCustomer As New CustomerAnda sekarang dapat mengakses anggota kelas melalui variabel objek.
nextCustomer.AccountNumber = lastAccountNumber + 1
Nota
Jika memungkinkan, Anda harus mendeklarasikan variabel menjadi jenis kelas yang ingin Anda tetapkan ke variabel tersebut. Ini disebut pengikatan awal. Jika Anda tidak tahu jenis kelas pada waktu kompilasi, Anda dapat memanggil pengikatan terlambat dengan mendeklarasikan variabel menjadi Tipe Data Objek. Namun, pengikatan yang terlambat dapat membuat performa lebih lambat dan membatasi akses ke anggota objek run-time. Untuk informasi selengkapnya, lihat Deklarasi Variabel Objek.
Berbagai contoh
Objek yang baru dibuat dari kelas sering identik satu sama lain. Namun, setelah ada sebagai objek individual, variabel dan propertinya dapat diubah secara independen dari instans lain. Misalnya, jika Anda menambahkan tiga kotak centang ke formulir, setiap objek kotak centang adalah instans CheckBox kelas. Objek individual CheckBox berbagi serangkaian karakteristik dan kemampuan umum (properti, variabel, prosedur, dan peristiwa) yang ditentukan oleh kelas. Namun, masing-masing memiliki nama sendiri, dapat diaktifkan dan dinonaktifkan secara terpisah, dan dapat ditempatkan di lokasi yang berbeda pada formulir.
Anggota objek
Objek adalah elemen aplikasi, yang mewakili instans kelas. Bidang, properti, metode, dan peristiwa adalah blok penyusun objek dan merupakan anggotanya.
Akses Anggota
Anda mengakses anggota dari suatu objek dengan menentukan urutan nama variabel objek, titik (.), dan nama anggotanya. Contoh berikut mengatur Text properti Label objek.
warningLabel.Text = "Data not saved"
Daftar anggota IntelliSense
IntelliSense mencantumkan anggota dari sebuah kelas saat Anda memanggil opsi Daftar Anggota, misalnya saat Anda mengetik titik (.) sebagai operator akses anggota. Jika Anda mengetik periode setelah nama variabel yang dideklarasikan sebagai instans kelas tersebut, IntelliSense mencantumkan semua anggota instans dan tidak ada anggota bersama. Jika Anda mengetik periode setelah nama kelas itu sendiri, IntelliSense mencantumkan semua anggota bersama dan tidak ada anggota instans. Untuk informasi selengkapnya, lihat Menggunakan IntelliSense.
Bidang dan properti
Bidang dan properti mewakili informasi yang disimpan dalam objek. Anda mengambil dan mengatur nilainya dengan pernyataan penetapan dengan cara yang sama seperti Anda mengambil dan mengatur variabel lokal dalam prosedur. Contoh berikut mengambil properti Width dan menetapkan properti ForeColor dari objek Label.
Dim warningWidth As Integer = warningLabel.Width
warningLabel.ForeColor = System.Drawing.Color.Red
Perhatikan bahwa bidang juga disebut variabel anggota.
Gunakan prosedur properti saat:
Anda perlu mengontrol kapan dan bagaimana nilai diatur atau diambil.
Properti memiliki sekumpulan nilai yang terdefinisi dengan baik yang perlu divalidasi.
Mengatur nilai menyebabkan beberapa perubahan yang terlihat dalam status objek, seperti
IsVisibleproperti.Mengatur properti menyebabkan perubahan pada variabel internal lainnya atau ke nilai properti lain.
Serangkaian langkah harus dilakukan sebelum properti dapat diatur atau diakses.
Gunakan bidang saat:
Nilainya adalah tipe yang memvalidasi diri sendiri. Misalnya, kesalahan atau konversi data otomatis terjadi jika nilai selain
TrueatauFalseditetapkan keBooleanvariabel.Nilai apa pun dalam rentang yang didukung oleh jenis data valid. Ini berlaku untuk banyak properti jenis
SingleatauDouble.Properti adalah
Stringjenis data, dan tidak ada batasan ukuran atau nilai pada string.Untuk informasi selengkapnya, lihat Prosedur Properti.
Petunjuk / Saran
Selalu jaga agar bidang non-konstan tetap privat. Saat Anda ingin menjadikannya publik, gunakan properti sebagai gantinya.
Metode
Metode adalah tindakan yang dapat dilakukan objek. Misalnya, Add adalah metode ComboBox objek yang menambahkan entri baru ke kotak kombo.
Contoh berikut menunjukkan metode Start dari objek Timer.
Dim safetyTimer As New System.Windows.Forms.Timer
safetyTimer.Start()
Perhatikan bahwa metode hanyalah prosedur yang diekspos oleh objek.
Untuk informasi selengkapnya, lihat Prosedur .
Peristiwa
Peristiwa adalah tindakan yang dikenali oleh objek, seperti mengklik mouse atau menekan tombol, dan yang kodenya dapat Anda tulis untuk merespons. Peristiwa dapat terjadi sebagai akibat dari tindakan pengguna atau kode program, atau dapat disebabkan oleh sistem. Kode yang memberi sinyal sebuah kejadian disebut memicu kejadian tersebut, dan kode yang meresponsnya disebut menanganinya.
Anda juga dapat mengembangkan peristiwa kustom Anda sendiri untuk dipicu oleh objek Anda dan ditangani oleh objek lain. Untuk informasi selengkapnya, lihat Peristiwa.
Anggota instans dan anggota bersama
Saat Anda membuat objek dari kelas, hasilnya adalah instans kelas tersebut. Anggota yang tidak dideklarasikan dengan kata kunci Bersama adalah anggota instans, yang secara ketat termasuk dalam instans tertentu tersebut. Anggota instans dalam satu instans tidak bergantung pada anggota yang sama dalam instans lain dari kelas yang sama. Variabel anggota instans, misalnya, dapat memiliki nilai yang berbeda dalam instans yang berbeda.
Anggota yang dinyatakan dengan Shared kata kunci adalah anggota bersama, yang termasuk dalam kelas secara keseluruhan dan bukan untuk instans tertentu. Anggota bersama hanya ada sekali, tidak peduli berapa banyak instans kelasnya yang Anda buat, atau bahkan jika Anda tidak membuat instans. Variabel anggota bersama, misalnya, hanya memiliki satu nilai, yang tersedia untuk semua kode yang dapat mengakses kelas.
Mengakses anggota yang tidak dibagikan
Pastikan objek telah dibuat dari kelasnya dan ditetapkan ke variabel objek.
Dim secondForm As New System.Windows.Forms.FormDalam pernyataan yang mengakses anggota, ikuti nama variabel objek dengan operator akses anggota (
.) lalu nama anggota.secondForm.Show()
Mengakses anggota bersama
Ikuti nama kelas dengan operator akses anggota (
.) lalu nama anggota. Anda harus selalu mengaksesSharedanggota objek secara langsung melalui nama kelas.Console.WriteLine("This computer is called " & Environment.MachineName)Jika Anda telah membuat objek dari kelas , Anda dapat mengakses
Sharedanggota melalui variabel objek.
Perbedaan antara kelas dan modul
Perbedaan utama antara kelas dan modul adalah bahwa kelas dapat diinstansiasi sebagai objek sementara modul standar tidak dapat. Karena hanya ada satu salinan data modul standar, ketika satu bagian dari program Anda mengubah variabel publik dalam modul standar, bagian lain dari program mendapatkan nilai yang sama jika kemudian membaca variabel tersebut. Sebaliknya, data objek ada secara terpisah untuk setiap objek yang diinstansiasi. Perbedaan lain adalah bahwa tidak seperti modul standar, kelas dapat menerapkan antarmuka. Jika kelas ditandai dengan pengubah MustInherit , kelas tidak dapat diinstansiasi secara langsung. Namun, ini masih berbeda dari modul karena dapat diwariskan sementara modul tidak dapat diwariskan.
Nota
Ketika pengubah Shared diterapkan ke anggota kelas, pengubah dikaitkan dengan kelas itu sendiri alih-alih instans kelas tertentu. Anggota diakses langsung dengan menggunakan nama kelas, dengan cara yang sama anggota modul diakses.
Kelas dan modul juga menggunakan cakupan yang berbeda untuk anggota mereka. Anggota yang ditentukan dalam kelas dilingkup dalam instans tertentu dari kelas dan hanya ada selama masa pakai objek. Untuk mengakses anggota kelas dari luar kelas, Anda harus menggunakan nama yang sepenuhnya memenuhi syarat dalam format Object. Anggota.
Di sisi lain, anggota yang dinyatakan dalam modul dapat diakses secara publik secara default, dan dapat diakses oleh kode apa pun yang dapat mengakses modul. Ini berarti bahwa variabel dalam modul standar secara efektif merupakan variabel global karena terlihat dari mana saja dalam proyek Anda, dan variabel tersebut ada untuk masa pakai program.
Gunakan kembali kelas dan objek
Objek memungkinkan Anda mendeklarasikan variabel dan prosedur sekali lalu menggunakannya kembali kapan pun diperlukan. Misalnya, jika Anda ingin menambahkan pemeriksa ejaan ke aplikasi, Anda dapat menentukan semua variabel dan fungsi dukungan untuk menyediakan fungsionalitas pemeriksaan ejaan. Jika Anda membuat pemeriksa ejaan sebagai kelas, Anda kemudian dapat menggunakannya kembali di aplikasi lain dengan menambahkan referensi ke rakitan yang dikompilasi. Lebih baik lagi, Anda mungkin dapat menghemat waktu dan usaha diri Anda dengan menggunakan kelas pemeriksa ejaan yang telah dikembangkan oleh orang lain.
.NET menyediakan banyak contoh komponen yang tersedia untuk digunakan. Contoh berikut menggunakan kelas TimeZone di ruang nama System. TimeZone menyediakan anggota yang memungkinkan Anda mengambil informasi tentang zona waktu sistem komputer saat ini.
Public Sub ExamineTimeZone()
Dim tz As System.TimeZone = System.TimeZone.CurrentTimeZone
Dim s As String = "Current time zone is "
s &= CStr(tz.GetUtcOffset(Now).Hours) & " hours and "
s &= CStr(tz.GetUtcOffset(Now).Minutes) & " minutes "
s &= "different from UTC (coordinated universal time)"
s &= vbCrLf & "and is currently "
If tz.IsDaylightSavingTime(Now) = False Then s &= "not "
s &= "on ""summer time""."
Console.WriteLine(s)
End Sub
Dalam contoh sebelumnya, Pernyataan Dim pertama mendeklarasikan variabel objek jenis TimeZone dan menetapkannya dengan objek TimeZone yang dikembalikan oleh properti CurrentTimeZone.
Hubungan antar objek
Objek dapat terkait satu sama lain dalam beberapa cara. Jenis hubungan utama bersifat hierarkis dan penahanan.
Hubungan hierarkis
Ketika kelas berasal dari kelas yang lebih mendasar, mereka dikatakan memiliki hubungan hierarkis. Hierarki kelas berguna saat menjelaskan item yang merupakan subjenis kelas yang lebih umum.
Dalam contoh berikut, misalkan Anda ingin menentukan jenis Button khusus yang bertindak seperti normal Button tetapi juga mengekspos metode yang membalikkan warna latar depan dan latar belakang.
Tentukan kelas yang berasal dari kelas yang sudah ada
Gunakan Pernyataan Kelas untuk menentukan kelas untuk membuat objek yang Anda butuhkan.
Public Class ReversibleButtonPastikan pernyataan
End Classmengikuti baris kode terakhir di kelas Anda. Secara default, lingkungan pengembangan terintegrasi (IDE) secara otomatis menghasilkanEnd Classsaat Anda memasukkanClasspernyataan.Ikuti pernyataan segera
Classdengan Pernyataan Warisan. Tentukan kelas tempat kelas baru Anda berasal.Inherits System.Windows.Forms.ButtonKelas baru Anda mewarisi semua anggota yang ditentukan oleh kelas dasar.
Tambahkan kode untuk anggota-anggota tambahan yang diekspos oleh kelas turunan Anda. Misalnya, Anda dapat menambahkan
ReverseColorsmetode, dan kelas turunan Anda mungkin terlihat sebagai berikut:Public Class ReversibleButton Inherits System.Windows.Forms.Button Public Sub ReverseColors() Dim saveColor As System.Drawing.Color = Me.BackColor Me.BackColor = Me.ForeColor Me.ForeColor = saveColor End Sub End ClassJika Anda membuat objek dari
ReversibleButtonkelas , objek tersebut dapat mengakses semua anggota Button kelas, sertaReverseColorsmetode dan anggota baru lainnya yang Anda tentukan diReversibleButton.
Kelas turunan mewarisi anggota dari kelas yang mereka didasarkan, memungkinkan Anda untuk menambahkan kompleksitas saat Anda maju dalam hierarki kelas. Untuk informasi selengkapnya, lihat Dasar-Dasar Pewarisan.
Mengkompilasi kode
Pastikan kompiler dapat mengakses kelas asal yang ingin Anda gunakan untuk turunan kelas baru Anda. Ini mungkin berarti memberikan kualifikasi penuh pada namanya, seperti dalam contoh sebelumnya, atau mengidentifikasi namespace-nya dalam Pernyataan Imports (.NET Namespace dan Jenis). Jika kelas berada dalam proyek yang berbeda, Anda mungkin perlu menambahkan referensi ke proyek tersebut. Untuk informasi selengkapnya, lihat Mengelola referensi dalam proyek.
Hubungan pengendalian
Salah satu cara di mana objek dapat saling berhubungan adalah hubungan kontainmen. Objek kontainer secara logis merangkum objek lain. Misalnya, objek OperatingSystem secara logika berisi objek Version, yang dikembalikan melalui properti Version. Perhatikan bahwa objek kontainer tidak secara fisik berisi objek lain.
Koleksi
Salah satu jenis penahanan objek tertentu diwakili oleh koleksi. Koleksi adalah grup objek serupa yang dapat dijumlahkan. Visual Basic mendukung sintaksis tertentu dalam For Each... Next Statement yang memungkinkan Anda melakukan iterasi melalui item-item dalam koleksi. Selain itu, koleksi sering memungkinkan Anda menggunakan Item[] untuk mengambil elemen berdasarkan indeksnya atau dengan mengaitkannya dengan string unik. Koleksi bisa lebih mudah digunakan daripada array karena memungkinkan Anda menambahkan atau menghapus item tanpa menggunakan indeks. Karena kemudahan penggunaannya, koleksi sering digunakan untuk menyimpan formulir dan kontrol.
Topik terkait
Panduan: Mendefinisikan Kelas
Menyediakan deskripsi langkah demi langkah tentang cara membuat kelas.
Properti dan Metode yang Kelebihan Beban
Properti dan Metode yang Kelebihan Beban
Dasar-Dasar Pewarisan
Mencakup pengubah warisan, metode dan properti penggantian, MyClass, dan MyBase.
Masa Pakai Objek: Bagaimana Objek Dibuat dan Dihancurkan
Membahas cara membuat dan membuang instance kelas.
Jenis Anonim
Menjelaskan cara membuat dan menggunakan jenis anonim, yang memungkinkan Anda membuat objek tanpa menulis definisi kelas untuk jenis data.
Penginisialisasi Objek: Jenis Bernama dan Anonim
Membahas penginisialisasi objek, yang digunakan untuk membuat instans jenis bernama dan anonim dengan menggunakan satu ekspresi.
Cara: Menyimpulkan Nama dan Jenis Properti dalam Deklarasi Jenis Anonim
Menjelaskan cara menyimpulkan nama dan jenis properti dalam deklarasi jenis anonim. Memberikan contoh inferensi yang berhasil dan tidak berhasil.