Bagikan melalui


Pemrograman berorientasi objek (Visual Basic)

Visual Basic memberikan dukungan penuh untuk pemrograman berorientasi objek termasuk enkapsulasi, warisan, dan polimorfisme.

Enkapsulasi merupakan sekelompok properti, metode, dan anggota lain yang terkait yang diperlakukan sebagai satu unit atau objek.

Pewarisan menjelaskan kemampuan untuk membuat kelas baru berdasarkan kelas yang ada.

Polimorfisme berarti Anda dapat memiliki beberapa kelas yang dapat digunakan secara bergantian, meskipun setiap kelas menerapkan properti atau metode yang sama dengan cara yang berbeda.

Bagian ini menjelaskan konsep-konsep berikut:

Kelas dan objek

Istilah kelas dan objek terkadang digunakan secara bersamaan, tetapi pada kenyataannya, kelas merupakan jenis objek, sementara objek adalah instans kelas yang dapat digunakan. Jadi, tindakan membuat objek disebut pembuatan instans. Dengan analogi cetak biru, kelas adalah cetak biru, dan objek adalah bangunan yang terbuat dari cetak biru itu.

Untuk menentukan kelas:

Class SampleClass
End Class

Visual Basic juga menyediakan versi ringan kelas yang disebut struktur, berguna ketika Anda perlu membuat array objek yang besar dan tidak ingin mengonsumsi terlalu banyak memori.

Untuk menentukan struktur:

Structure SampleStructure
End Structure

Untuk informasi selengkapnya, lihat:

Anggota kelas

Setiap kelas dapat memiliki anggota kelas yang berbeda yang mencakup properti yang menjelaskan data kelas, metode yang menentukan perilaku kelas, dan peristiwa yang menyediakan komunikasi antara kelas dan objek yang berbeda.

Properti dan bidang

Bidang dan properti mewakili informasi yang berisi objek. Bidang mirip seperti variabel karena dapat dibaca atau diatur secara langsung.

Untuk menentukan bidang:

Class SampleClass
    Public SampleField As String
End Class

Properti memiliki prosedur get (dapatkan) dan set (atur), yang memberikan kontrol lebih besar tentang cara nilai ditetapkan atau dimunculkan.

Visual Basic memungkinkan Anda membuat bidang privat untuk menyimpan nilai properti atau menggunakan apa yang disebut properti yang diimplementasikan secara otomatis yang membuat bidang ini secara otomatis di belakang layar dan menyediakan logika dasar untuk prosedur properti.

Untuk menentukan properti yang diimplementasikan secara otomatis:

Class SampleClass
    Public Property SampleProperty as String
End Class

Jika Anda perlu melakukan beberapa operasi tambahan untuk membaca dan menulis nilai properti, tentukan bidang untuk menyimpan nilai propertinya dan berikan logika dasar untuk menyimpan dan mengambilnya:

Class SampleClass
    Private m_Sample As String
    Public Property Sample() As String
        Get
            ' Return the value stored in the field.
            Return m_Sample
        End Get
        Set(ByVal Value As String)
            ' Store the value in the field.
            m_Sample = Value
        End Set
    End Property
End Class

Sebagian besar properti memiliki metode atau prosedur untuk nilai properti get (dapatkan) dan set (atur). Namun, Anda dapat membuat properti baca-saja atau tulis-saja untuk membatasinya agar tidak dimodifikasi atau dibaca. Di Visual Basic, Anda dapat menggunakan kata kunci ReadOnly dan WriteOnly. Namun, properti yang diimplementasikan secara otomatis tidak boleh baca-saja atau tulis-saja.

Untuk informasi selengkapnya, lihat:

Metode

Metode adalah tindakan yang dapat dilakukan objek.

Catatan

Dalam Visual Basic, ada dua cara untuk membuat metode: pernyataan Sub digunakan jika metode tidak memunculkan nilai; pernyataan Function digunakan jika metode memunculkan nilai.

Untuk menentukan metode kelas:

Class SampleClass
    Public Function SampleFunc(ByVal SampleParam As String)
        ' Add code here
    End Function
End Class

Kelas dapat memiliki beberapa implementasi, atau kelebihan beban, dengan metode yang sama dengan perbedaan dalam jumlah parameter atau jenis parameter.

Untuk memberi beban lebih pada metode:

Overloads Sub Display(ByVal theChar As Char)
    ' Add code that displays Char data.
End Sub
Overloads Sub Display(ByVal theInteger As Integer)
    ' Add code that displays Integer data.
End Sub

Sering kali, Anda mendeklarasikan metode dalam definisi kelas. Namun, Visual Basic juga mendukung metode ekstensi yang memungkinkan Anda menambahkan metode ke kelas yang ada di luar definisi kelas yang sebenarnya.

Untuk informasi selengkapnya, lihat:

Konstruktor

Konstruktor adalah metode kelas yang dijalankan secara otomatis ketika objek dari jenis tertentu dibuat. Konstruktor biasanya menginisialisasi anggota data dari objek baru. Konstruktor hanya dapat berjalan sekali ketika kelas dibuat. Selain itu, kode dalam konstruktor selalu berjalan lebih dulu daripada kode lain di kelas. Namun, Anda dapat memberi beban lebih pada konstruktor dengan cara yang sama seperti metode lainnya.

Untuk menentukan konstruktor untuk kelas:

Class SampleClass
    Sub New(ByVal s As String)
        // Add code here.
    End Sub
End Class

Untuk informasi selengkapnya, lihat: Masa Pakai Objek: Cara Pembuatan dan Penghancuran Objek.

Penghancur

Penghancur digunakan untuk menghancurkan instans kelas. Dalam .NET Framework, pengumpul sampah mengelola alokasi dan melepaskan memori untuk objek yang dikelola di aplikasi Anda secara otomatis. Namun, mungkin Anda masih memerlukan penghancur untuk membersihkan sumber daya yang tidak terkelola yang dibuat aplikasi Anda. Hanya ada satu penghancur untuk satu kelas.

Untuk informasi selengkapnya tentang penghancur dan pengumpulan sampah di .NET Framework, lihat Pengumpulan Sampah.

Acara

Peristiwa memungkinkan kelas atau objek untuk memberi tahu kelas atau objek lain saat sesuatu yang menarik terjadi. Kelas yang mengirim (atau memunculkan) acara disebut penerbit dan kelas yang menerima (atau menangani) acara disebut pelanggan. Untuk informasi selengkapnya tentang peristiwa, cara memunculkan dan menangani peristiwa, lihat Peristiwa.

Kelas berlapis

Kelas yang ditentukan dalam kelas lain disebut kelas berlapis. Secara default, kelas berlapis bersifat privat.

Class Container
    Class Nested
    ' Add code here.
    End Class
End Class

Untuk membuat instans kelas berlapis, gunakan nama kelas kontainer diikuti oleh titik, lalu diikuti dengan nama kelas berlapis:

Dim nestedInstance As Container.Nested = New Container.Nested()

Mengakses pengubah dan tingkat akses

Semua kelas dan anggota kelas dapat menentukan tingkat akses yang mereka berikan ke kelas lain dengan menggunakan pengubah akses.

Pengubah akses berikut tersedia:

Pengubah Visual Basic Definisi
Publik Jenis atau anggota dapat diakses oleh kode lain dalam perakitan yang sama atau rakitan lain yang mereferensikannya.
Privat Jenis atau anggota hanya dapat diakses dengan kode di kelas yang sama.
Terlindungi Jenis atau anggota hanya dapat diakses dengan kode di kelas yang sama atau di kelas turunan.
Teman Jenis atau anggota dapat diakses dengan kode apa pun di rakitan yang sama, tetapi tidak dari rakitan lain.
Protected Friend Jenis atau anggota dapat diakses dengan kode apa pun di rakitan yang sama, atau oleh kelas turunan apa pun di rakitan lain.

Untuk informasi selengkapnya, lihat Tingkat akses di Visual Basic.

Pembuatan instans kelas

Untuk membuat objek, Anda perlu membuat instans kelas.

Dim sampleObject as New SampleClass()

Setelah membuat instans kelas, Anda dapat menetapkan nilai ke properti dan bidang instans dan memanggil metode kelas.

' Set a property value.
sampleObject.SampleProperty = "Sample String"
' Call a method.
sampleObject.SampleMethod()

Untuk menetapkan nilai ke properti selama proses pembuatan instans kelas, gunakan inisialisasi objek:

Dim sampleObject = New SampleClass With
    {.FirstProperty = "A", .SecondProperty = "B"}

Untuk informasi selengkapnya, lihat:

Kelas dan anggota bersama

Anggota bersama di dalam kelas adalah properti, prosedur, atau bidang yang dibagikan oleh semua instans kelas.

Untuk menentukan anggota bersama:

Class SampleClass
    Public Shared SampleString As String = "Sample String"
End Class

Untuk mengakses anggota bersama, gunakan nama kelas tanpa membuat objek kelas ini:

MsgBox(SampleClass.SampleString)

Modul bersama di Visual Basic hanya memiliki anggota bersama dan tidak dapat dibuat instansnya. Anggota bersama juga tidak dapat mengakses properti, bidang, atau metode yang tidak dibagikan

Untuk informasi selengkapnya, lihat:

Jenis anonim

Jenis anonim memungkinkan Anda membuat objek tanpa menulis definisi kelas untuk jenis data tersebut. Sebaliknya, pengkompilasi menghasilkan kelas untuk Anda. Kelas tersebut tidak memiliki nama yang dapat digunakan dan berisi properti yang Anda tentukan saat mendeklarasikan objek.

Untuk membuat instans jenis anonim:

' sampleObject is an instance of a simple anonymous type.
Dim sampleObject =
    New With {Key .FirstProperty = "A", .SecondProperty = "B"}

Untuk informasi lebih lanjut, lihat Jenis Anonim.

Warisan

Pewarisan memungkinkan Anda membuat kelas baru yang menggunakan kembali, memperluas, dan memodifikasi perilaku yang ditentukan di kelas lain. Kelas yang anggotanya diwariskan disebut kelas dasar, dan kelas yang mewarisi anggota tersebut disebut kelas turunan. Namun, semua kelas di Visual Basic mewarisi kelas Object secara implisit yang mendukung hierarki kelas .NET dan menyediakan layanan tingkat rendah untuk semua kelas.

Catatan

Visual Basic tidak mendukung beberapa warisan. Artinya, Anda hanya dapat menentukan satu kelas dasar untuk satu kelas turunan.

Untuk mewarisi dari kelas dasar:

Class DerivedClass
    Inherits BaseClass
End Class

Secara default, semua kelas dapat diwariskan. Namun, Anda dapat menentukan apakah suatu kelas tidak boleh digunakan sebagai kelas dasar, atau membuat kelas yang hanya dapat digunakan sebagai kelas dasar.

Untuk menentukan suatu kelas tidak dapat digunakan sebagai kelas dasar:

NotInheritable Class SampleClass
End Class

Untuk menentukan suatu kelas hanya dapat digunakan sebagai kelas dasar dan tidak dapat dibuat instansnya:

MustInherit Class BaseClass
End Class

Untuk informasi selengkapnya, lihat:

Mengambil alih anggota

Secara default, kelas turunan mewarisi semua anggota dari kelas dasarnya. Jika ingin mengubah perilaku anggota yang diwariskan, Anda perlu menggantinya. Artinya, Anda dapat menentukan implementasi baru pada metode, properti atau peristiwa di kelas turunan.

Pengubah berikut digunakan untuk mengontrol pengambil-alihan properti dan metode:

Pengubah Visual Basic Definisi
Dapat diambil alih Memungkinkan anggota kelas untuk diambil alih dalam kelas turunan.
Mengabaikan Mengambil alih anggota virtual (dapat diambil alih) yang ditentukan di kelas dasar.
Tidak Dapat Diganti Mencegah anggota diambil alih di kelas yang warisan.
HarusMenimpa Mengharuskan anggota kelas untuk diambil alih di kelas turunan.
Bayangan Menyembunyikan anggota yang diwarisi dari kelas dasar

Antarmuka

Antarmuka, seperti kelas, menentukan satu set properti, metode, dan peristiwa. Tetapi tidak seperti kelas, antarmuka tidak menyediakan implementasi. Antarmuka diimplementasikan oleh kelas, dan didefinisikan sebagai entitas yang terpisah dari kelas. Antarmuka mewakili kontrak, di mana kelas yang mengimplementasikan antarmuka harus mengimplementasikan setiap aspek antarmuka tersebut persis seperti yang didefinisikan.

Untuk menentukan antarmuka:

Public Interface ISampleInterface
    Sub DoSomething()
End Interface

Untuk mengimplementasikan antarmuka di kelas:

Class SampleClass
    Implements ISampleInterface
    Sub DoSomething
        ' Method implementation.
    End Sub
End Class

Untuk informasi selengkapnya, lihat:

Generik

Kelas, struktur, antarmuka, dan metode dalam .NET dapat mencakup parameter jenis yang menentukan jenis objek yang dapat disimpan atau digunakan. Contoh umum generik adalah kumpulan, di mana Anda dapat menentukan jenis objek yang akan disimpan dalam kumpulan.

Untuk menentukan kelas generik:

Class SampleGeneric(Of T)
    Public Field As T
End Class

Untuk membuat instans kelas generik:

Dim sampleObject As New SampleGeneric(Of String)
sampleObject.Field = "Sample string"

Untuk informasi selengkapnya, lihat:

Delegasikan

Delegasi adalah jenis yang menentukan tanda tangan metode, dan dapat memberikan referensi ke metode apa pun dengan tanda tangan yang kompatibel. Anda dapat memanggil metode tersebut melalui delegasi. Delegasi digunakan untuk meneruskan metode sebagai argumen ke metode lain.

Catatan

Penanganan aktivitas merupakan metode yang dipanggil melalui delegasi. Untuk informasi selengkapnya tentang penggunaan delegasi dalam penanganan peristiwa, lihat Peristiwa.

Untuk membuat delegasi:

Delegate Sub SampleDelegate(ByVal str As String)

Untuk membuat referensi ke metode yang cocok dengan tanda tangan yang ditentukan oleh delegasi:

Class SampleClass
    ' Method that matches the SampleDelegate signature.
    Sub SampleSub(ByVal str As String)
        ' Add code here.
    End Sub
    ' Method that instantiates the delegate.
    Sub SampleDelegateSub()
        Dim sd As SampleDelegate = AddressOf SampleSub
        sd("Sample string")
    End Sub
End Class

Untuk informasi selengkapnya, lihat:

Lihat juga