Bagikan melalui


Objek dan kelas di Visual Basic

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-terusan 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 unsur pembangun prafabrikasi untuk program - mereka memungkinkan Anda menulis sepotong kode sekali dan menggunakannya kembali secara berulang-ulang.

Topik ini membahas objek secara rinci.

Objek dan kelas

Setiap objek dalam Visual Basic didefinisikan 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 alat pemotong kue dan kue kering. Pemotong kue adalah kelas. Pemotong kue mendefinisikan karakteristik setiap kue kering, misalnya ukuran dan bentuk. Kelas digunakan untuk membuat objek. Objek adalah kue kering.

Anda harus membuat objek sebelum dapat mengakses anggotanya, kecuali untuk anggota Shared yang dapat diakses tanpa objek kelas.

Membuat objek dari kelas

  1. Tentukan dari kelas mana Anda ingin membuat objek, atau tentukan kelas Anda sendiri. Contohnya:

    Public Class Customer
        Public Property AccountNumber As Integer
    End Class
    
  2. Tulis Pernyataan Dim untuk membuat variabel yang dapat Anda tetapkan instans kelasnya. Variabelnya harus dari jenis kelas yang diinginkan.

    Dim nextCustomer As Customer
    
  3. Tambahkan kata kunci Operator Baru untuk menginisialisasi variabel ke instans baru kelas.

    Dim nextCustomer As New Customer
    
  4. Anda sekarang dapat mengakses anggota kelas melalui variabel objek.

    nextCustomer.AccountNumber = lastAccountNumber + 1
    

Catatan

Jika memungkinkan, Anda harus mendeklarasikan variabel menjadi jenis kelas yang ingin Anda tetapkan. Ini disebut pengikatan awal. Jika Anda tidak mengetahui jenis kelas pada waktu kompilasi, Anda dapat memanggil pengikatan akhir dengan mendeklarasikan variabel menjadi Tipe Data Objek. Namun, pengikatan akhir dapat membuat performa menjadi lebih lambat dan membatasi akses ke anggota objek run-time. Untuk informasi lebih lanjut, lihat Deklarasi Variabel Objek.

Berbagai instans

Objek yang baru dibuat dari kelas sering kali identik dengan 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 kelas CheckBox. 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 objek dengan menentukan, secara berurutan, nama variabel objek, titik (.), dan nama anggota. Contoh berikut mengatur properti Text dari suatu objek Label.

warningLabel.Text = "Data not saved"

Pencantuman daftar anggota IntelliSense

IntelliSense mencantumkan anggota kelas saat Anda memanggil opsi Anggota Daftarnya, misalnya saat Anda mengetik titik (.) sebagai operator akses anggota. Jika Anda mengetik periode setelah nama variabel yang dinyatakan sebagai instans kelas tersebut, IntelliSense akan mencantumkan semua anggota instans dan tidak ada anggota bersama. Jika Anda mengetik periode mengikuti nama kelas itu sendiri, IntelliSense akan 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 penugasan dengan cara yang sama seperti Anda mengambil dan mengatur variabel lokal dalam prosedur. Contoh berikut mengambil Width properti dan mengatur ForeColor properti dari Label objek.

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 properti IsVisible.

  • Mengatur properti menyebabkan perubahan pada variabel internal lainnya atau ke nilai properti lain.

  • Serangkaian langkah harus dilakukan sebelum properti dapat diatur atau diambil.

Gunakan bidang saat:

  • Nilainya adalah jenis validasi mandiri. Misalnya, kesalahan atau konversi data otomatis terjadi jika nilai selain True atau False ditetapkan ke variabel Boolean.

  • Nilai apa pun dalam rentang yang didukung oleh jenis data valid. Ini berlaku untuk banyak properti jenis Single atau Double.

  • Propertinya adalah jenis data String, dan tidak ada batasan pada ukuran atau nilai string.

  • Untuk informasi selengkapnya, lihat Prosedur Properti.

Tip

Selalu jaga agar bidang non-konstan tetap privat. Jika Anda ingin menjadikannya publik, gunakan properti sebagai gantinya.

Metode

Metode adalah tindakan yang dapat dilakukan objek. Misalnya, Add adalah metode objek ComboBox 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.

Acara

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 peristiwa dikatakan untuk meningkatkan peristiwa, dan kode yang meresponsnya dikatakan untuk menanganinya.

Anda juga dapat mengembangkan peristiwa kustom Anda sendiri untuk dinaikkan 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. Anggota instans dalam satu instans independen dari 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 kata kunci Shared 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 non bersama

  1. Pastikan objek telah dibuat dari kelasnya dan ditetapkan ke variabel objek.

    Dim secondForm As New System.Windows.Forms.Form
    
  2. Dalam 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 mengakses anggota Shared dari objek secara langsung melalui nama kelas.

    Console.WriteLine("This computer is called " & Environment.MachineName)
    
  • Jika Anda telah membuat objek dari kelas, Anda dapat mengakses anggota Shared secara alternatif melalui variabel objek.

Perbedaan antara kelas dan modul

Perbedaan utama antara kelas dan modul adalah bahwa kelas dapat dibuat sebagai objek sementara modul standar tidak. Karena hanya ada satu salinan data modul standar, ketika satu bagian 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 dibuat. Perbedaan lainnya adalah bahwa tidak seperti modul standar, kelas dapat mengimplementasikan antarmuka. Jika kelas ditandai dengan pengubah MustInherit, kelas tidak dapat dimunculkan secara langsung. Namun, hal ini masih berbeda dari modul karena dapat kelas diwariskan sementara modul tidak dapat diwariskan.

Catatan

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 anggotanya. 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 Objek. 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 dapat dilihat dari mana saja dalam proyek Anda, dan variabel tersebut ada selama 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 menyimpan beberapa pekerjaan dengan menggunakan kelas pemeriksa ejaan yang telah dikembangkan orang lain.

.NET menyediakan banyak contoh komponen yang tersedia untuk digunakan. Contoh berikut menggunakan kelas TimeZonedi dalam namespace 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 menetapkan objek yang TimeZone dikembalikan oleh CurrentTimeZone properti.

Hubungan di antara objek

Objek dapat terkait satu sama lain dalam beberapa cara. Jenis hubungan utama adalah hierarkis dan penahanan.

Hubungan hierarkis

Ketika kelas berasal dari kelas yang lebih mendasar, kelas tersebut dikatakan memiliki hubungan hierarkis. Hierarki kelas berguna saat menjelaskan item yang merupakan subjenis dari kelas yang lebih umum.

Dalam contoh berikut, misalkan Anda ingin menentukan jenis khusus Button yang bertindak seperti Button normal tetapi juga mengekspos metode yang membalikkan warna latar depan dan latar belakang.

Tentukan kelas yang berasal dari kelas yang sudah ada

  1. Gunakan Pernyataan Kelas untuk menentukan kelas untuk membuat objek yang Anda butuhkan.

    Public Class ReversibleButton
    

    Pastikan pernyataan End Class mengikuti baris kode terakhir di kelas Anda. Secara default, lingkungan pengembangan terintegrasi (IDE) secara otomatis menghasilkan End Class saat Anda memasukkan Class pernyataan.

  2. Ikuti pernyataan Class segera dengan Pernyataan Warisan. Tentukan kelas tempat kelas baru Anda berasal.

    Inherits System.Windows.Forms.Button
    

    Kelas baru Anda mewarisi semua anggota yang ditentukan oleh kelas dasar.

  3. Tambahkan kode untuk anggota tambahan yang diekspos kelas turunan Anda. Misalnya, Anda dapat menambahkan metode ReverseColors, 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 Class
    

    Jika Anda membuat objek dari kelas ReversibleButton, objek tersebut dapat mengakses semua anggota kelas Button, serta metode ReverseColors dan anggota baru lainnya yang Anda tentukan di ReversibleButton.

Kelas turunan mewarisi anggota dari kelas yang menjadi dasarnya, memungkinkan Anda menambahkan kompleksitas saat Anda maju dalam hierarki kelas. Untuk informasi selengkapnya, lihat Dasar Warisan.

Mengkompilasi kode

Pastikan pengkompilasi dapat mengakses kelas tempat Anda ingin memperoleh kelas baru Anda. Ini mungkin berarti sepenuhnya memenuhi syarat namanya, seperti dalam contoh sebelumnya, atau mengidentifikasi namespace layanannya dalam Pernyataan Impor (Namespace dan Jenis .NET). Jika kelas berada dalam proyek yang berbeda, Anda mungkin perlu menambahkan referensi ke proyek tersebut. Untuk informasi selengkapnya, lihat Mengelola referensi dalam proyek.

Hubungan penahanan

Cara lain yang dapat dikaitkan dengan objek adalah hubungan penahanan. Objek kontainer secara logis merangkum objek lain. Misalnya, OperatingSystem objek secara logis berisikan objek Version, yang dikembalikan melalui properti Version miliknya. 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 sintaks tertentu dalam For Each... Pernyataan Berikutnya yang memungkinkan Anda melakukan iterasi melalui item koleksi. Selain itu, koleksi sering memungkinkan Anda menggunakan untuk mengambil Item[] elemen berdasarkan indeksnya atau dengan mengaitkannya dengan string unik. Koleksi dapat 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.

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, mengambil alih metode dan properti, MyClass, dan MyBase.

Masa Pakai Objek: Bagaimana Objek Dibuat dan Dihancurkan
Membahas pembuatan dan pembuangan instans kelas.

Tipe Anonim
Menjelaskan cara membuat dan menggunakan jenis anonim, yang memungkinkan Anda membuat objek tanpa menulis definisi kelas untuk jenis data.

Penginisialisasi Objek: Tipe 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.