Bagikan melalui


Panduan: Menerapkan Pewarisan dengan Objek COM (Visual Basic)

Anda dapat memperoleh kelas Visual Basic dari Public kelas di objek COM, bahkan yang dibuat di versi Visual Basic sebelumnya. Properti dan metode kelas yang diwariskan dari objek COM dapat ditimpa atau kelebihan beban hanya karena properti dan metode kelas dasar lainnya dapat ditimpa atau kelebihan beban. Pewarisan dari objek COM berguna ketika Anda memiliki pustaka kelas yang sudah ada yang tidak ingin Anda kompilasi ulang.

Prosedur berikut menunjukkan cara menggunakan Visual Basic 6.0 untuk membuat objek COM yang berisi kelas, lalu menggunakannya sebagai kelas dasar.

Nota

Komputer Anda mungkin menampilkan nama atau lokasi yang berbeda untuk beberapa elemen antarmuka pengguna Visual Studio dalam instruksi berikut. Edisi Visual Studio yang Anda miliki dan pengaturan yang Anda gunakan menentukan elemen-elemen ini. Untuk informasi lebih lanjut, lihat Mempersonalisasi IDE.

Untuk membangun objek COM yang digunakan dalam panduan ini

  1. Di Visual Basic 6.0, buka proyek DLL ActiveX baru. Proyek bernama Project1 dibuat. Ini memiliki kelas bernama Class1.

  2. Di Penjelajah Proyek, klik kanan Project1, lalu klik Properti Project1. Kotak dialog Properti Proyek ditampilkan.

  3. Pada tab Umum dari kotak dialog Properti Proyek , ubah nama proyek dengan mengetik ComObject1 di bidang Nama Proyek .

  4. Di Penjelajah Proyek, klik Class1kanan , lalu klik Properti. Jendela Properti untuk kelas ditampilkan.

  5. Ubah properti Name menjadi MathFunctions.

  6. Di Penjelajah Proyek, klik MathFunctionskanan , lalu klik Tampilkan Kode. Editor Kode ditampilkan.

  7. Tambahkan variabel lokal untuk menahan nilai properti:

    ' Local variable to hold property value
    Private mvarProp1 As Integer
    
  8. Tambahkan prosedur operasi untuk Properti Let dan Properti Get.

    Public Property Let Prop1(ByVal vData As Integer)
       'Used when assigning a value to the property.
       mvarProp1 = vData
    End Property
    Public Property Get Prop1() As Integer
       'Used when retrieving a property's value.
       Prop1 = mvarProp1
    End Property
    
  9. Tambahkan fungsi:

    Function AddNumbers(
       ByVal SomeNumber As Integer,
       ByVal AnotherNumber As Integer) As Integer
    
       AddNumbers = SomeNumber + AnotherNumber
    End Function
    
  10. Buat dan daftarkan objek COM dengan mengklik Buat ComObject1.dll pada menu File .

    Nota

    Meskipun Anda juga dapat mengekspos kelas yang dibuat dengan Visual Basic sebagai objek COM, itu bukan objek COM yang sebenarnya dan tidak dapat digunakan dalam panduan ini. Untuk detailnya, lihat Interoperabilitas COM di Aplikasi .NET Framework.

Majelis Interop

Dalam prosedur berikut, Anda akan membuat perakitan interop, yang bertindak sebagai jembatan antara kode yang tidak dikelola (seperti objek COM) dan kode terkelola yang digunakan Visual Studio. Rakitan interop yang dibuat Visual Basic menangani banyak detail bekerja dengan objek COM, seperti interop marshalling, proses parameter pengemasan dan mengembalikan nilai menjadi jenis data yang setara saat berpindah ke dan dari objek COM. Referensi dalam aplikasi Visual Basic menunjuk ke perakitan interop, bukan objek COM yang sebenarnya.

Untuk menggunakan objek COM dengan Visual Basic 2005 dan versi yang lebih baru

  1. Buka proyek Aplikasi Windows Visual Basic baru.

  2. Pada menu Proyek, klik Tambahkan Referensi.

    Kotak dialog Tambahkan Referensi ditampilkan.

  3. Pada tab COM , klik ComObject1 dua kali di daftar Nama Komponen dan klik OK.

  4. Pada menu Proyek, klik Tambahkan Item Baru.

    Kotak dialog Tambahkan Item Baru ditampilkan.

  5. Di panel Templat , klik Kelas.

    Nama file default, Class1.vb, muncul di bidang Nama . Ubah bidang ini menjadi MathClass.vb dan klik Tambahkan. Ini membuat kelas bernama MathClass, dan menampilkan kodenya.

  6. Tambahkan kode berikut ke bagian MathClass atas untuk mewarisi dari kelas COM.

    ' The inherited class is called MathFunctions in the base class,
    ' but the interop assembly appends the word Class to the name.
    Inherits ComObject1.MathFunctionsClass
    
  7. Kelebihan beban metode publik kelas dasar dengan menambahkan kode berikut ke MathClass:

    '  This method overloads the method AddNumbers from the base class.
    Overloads Function AddNumbers(
        ByVal SomeNumber As Integer,
        ByVal AnotherNumber As Integer) As Integer
    
        Return SomeNumber + AnotherNumber
    End Function
    
  8. Perluas kelas yang diwariskan dengan menambahkan kode berikut ke MathClass:

    '  The following function extends the inherited class.
    Function SubtractNumbers(
        ByVal SomeNumber As Integer,
        ByVal AnotherNumber As Integer) As Integer
    
        Return AnotherNumber - SomeNumber
    End Function
    

Kelas baru mewarisi properti kelas dasar di objek COM, membebani metode, dan menentukan metode baru untuk memperluas kelas.

Untuk menguji kelas yang diwariskan

  1. Tambahkan tombol ke formulir startup Anda, lalu klik dua kali untuk melihat kodenya.

  2. Dalam prosedur penanganan aktivitas tombol Click , tambahkan kode berikut untuk membuat instans MathClass dan memanggil metode yang kelebihan beban:

    Dim Result1 As Short
    Dim Result2 As Integer
    Dim Result3 As Integer
    Dim MathObject As New MathClass
    Result1 = MathObject.AddNumbers(4S, 2S) ' Add two Shorts.
    Result2 = MathObject.AddNumbers(4, 2) 'Add two Integers.
    Result3 = MathObject.SubtractNumbers(2, 4) ' Subtract 2 from 4.
    MathObject.Prop1 = 6 ' Set an inherited property.
    
    MsgBox("Calling the AddNumbers method in the base class " &
           "using Short type numbers 4 and 2 = " & Result1)
    MsgBox("Calling the overloaded AddNumbers method using " &
           "Integer type numbers 4 and 2 = " & Result2)
    MsgBox("Calling the SubtractNumbers method " &
           "subtracting 2 from 4 = " & Result3)
    MsgBox("The value of the inherited property is " &
            MathObject.Prop1)
    
  3. Jalankan proyek dengan menekan F5.

Saat Anda mengklik tombol pada formulir, metode AddNumbers pertama kali dipanggil dengan jenis data Short angka, dan kemudian Visual Basic memilih metode yang sesuai dari kelas dasar. Panggilan kedua ke AddNumbers diarahkan ke metode kelebihan beban dari MathClass. Panggilan ketiga memanggil SubtractNumbers metode , yang memperluas kelas . Properti di kelas dasar ditetapkan, dan nilainya ditampilkan.

Langkah Selanjutnya

Anda mungkin telah memperhatikan bahwa fungsi overload AddNumbers tampaknya memiliki tipe data yang sama dengan metode yang diwarisi dari kelas dasar dari objek COM. Ini karena argumen dan parameter metode kelas dasar didefinisikan sebagai bilangan bulat 16-bit di Visual Basic 6.0, tetapi diekspos sebagai bilangan Short bulat tipe 16-bit di versi Visual Basic yang lebih baru. Fungsi baru menerima bilangan bulat 32-bit, dan membebani fungsi kelas dasar.

Saat bekerja dengan objek COM, pastikan Anda memverifikasi ukuran dan jenis data parameter. Misalnya, saat Anda menggunakan objek COM yang menerima objek koleksi Visual Basic 6.0 sebagai argumen, Anda tidak dapat menyediakan koleksi dari versi Visual Basic yang lebih baru.

Properti dan metode yang diwariskan dari kelas COM dapat ditimpa, yang berarti Anda dapat mendeklarasikan properti atau metode lokal untuk menggantikan properti atau metode yang diwarisi dari kelas COM dasar. Aturan untuk mengambil alih properti COM yang diwariskan mirip dengan aturan untuk mengambil alih properti dan metode lain dengan pengecualian berikut:

  • Jika Anda menggantikan properti atau metode apa pun yang diwariskan dari kelas COM, Anda harus menggantikan semua properti dan metode lainnya yang diwariskan.

  • Properti yang menggunakan parameter ByRef tidak dapat diubah secara konvensional.

Lihat juga