Bagikan melalui


Antarmuka dan Implementasi Antarmuka

COM membuat perbedaan mendasar antara definisi antarmuka dan implementasinya.

Antarmuka sebenarnya adalah kontrak yang terdiri dari sekelompok prototipe fungsi terkait yang penggunaannya ditentukan tetapi implementasinya tidak. Prototipe fungsi ini setara dengan kelas dasar virtual murni dalam pemrograman C++. Definisi antarmuka menentukan fungsi anggota antarmuka, yang disebut metode, jenis pengembaliannya, jumlah dan jenis parameternya, dan apa yang harus mereka lakukan. Tidak ada implementasi yang terkait dengan antarmuka.

Implementasi antarmuka adalah kode yang disediakan programmer untuk melakukan tindakan yang ditentukan dalam definisi antarmuka. Implementasi dari banyak antarmuka yang dapat digunakan programmer dalam aplikasi berbasis objek disertakan dalam pustaka COM. Namun, programmer bebas untuk mengabaikan implementasi ini dan menulisnya sendiri. Implementasi antarmuka akan dikaitkan dengan objek ketika instans objek tersebut dibuat, dan implementasinya menyediakan layanan yang ditawarkan objek.

Misalnya, antarmuka hipotetis bernama IStack mungkin menentukan dua metode, bernama Push dan Pop, menentukan bahwa panggilan berturut-turut ke metode Pop kembali, dalam urutan terbalik, nilai yang sebelumnya diteruskan ke metode Push. Definisi antarmuka ini tidak akan menentukan bagaimana fungsi akan diimplementasikan dalam kode. Dalam mengimplementasikan antarmuka, satu programmer dapat mengimplementasikan tumpukan sebagai array dan mengimplementasikan metode Push dan Pop sedimikian rupa untuk mengakses array tersebut, sementara programmer lain mungkin menggunakan daftar tertaut dan akan mengimplementasikan metode yang sesuai. Terlepas dari implementasi tertentu dari metode Push dan Pop, representasi dalam memori pointer ke antarmuka IStack, dan oleh karena itu penggunaannya oleh klien, sepenuhnya ditentukan oleh definisi antarmuka.

Objek sederhana hanya mendukung satu antarmuka. Objek yang lebih rumit, seperti objek yang dapat disematkan, biasanya mendukung beberapa antarmuka. Klien memiliki akses ke objek COM hanya melalui penunjuk ke salah satu antarmukanya, yang, pada gilirannya, memungkinkan klien untuk memanggil salah satu metode yang membentuk antarmuka tersebut. Metode ini menentukan bagaimana klien dapat menggunakan data objek.

Antarmuka menentukan kontrak antara objek dan kliennya. Kontrak menentukan metode yang harus dikaitkan dengan setiap antarmuka dan perilaku masing-masing metode harus dalam hal input dan output. Kontrak umumnya tidak menentukan cara mengimplementasikan metode dalam antarmuka. Aspek penting lainnya dari kontrak adalah bahwa jika objek mendukung antarmuka, itu harus mendukung semua metode antarmuka tersebut dalam beberapa cara. Tidak semua metode dalam implementasi perlu melakukan sesuatu. Jika objek tidak mendukung fungsi yang tersirat oleh metode, implementasinya mungkin merupakan pengembalian sederhana atau mungkin pengembalian pesan kesalahan yang bermakna—tetapi metode harus ada.

Objek dan Antarmuka COM