Bagikan melalui


Gunakan Kembali Objek

Tujuan penting dari model objek apa pun adalah untuk memungkinkan penulis objek menggunakan kembali dan memperluas objek yang disediakan oleh orang lain sebagai bagian dari implementasi mereka sendiri. Salah satu cara untuk melakukan ini di Microsoft Visual C++ dan bahasa lain adalah dengan menggunakan pewarisan implementasi, yang memungkinkan objek untuk mewarisi ("subkelas") beberapa fungsinya dari objek lain sambil menggantikan fungsi lainnya.

Masalah untuk interaksi objek di seluruh sistem menggunakan pewarisan implementasi tradisional adalah bahwa kontrak (antarmuka) antara objek dalam hierarki implementasi tidak didefinisikan dengan jelas. Bahkan, itu implisit dan ambigu. Ketika objek induk atau anak mengubah implementasinya, perilaku komponen terkait mungkin menjadi tidak terdefinisi atau diimplementasikan secara tidak stabil. Dalam aplikasi tunggal apa pun, di mana implementasi dapat dikelola oleh satu tim teknik yang memperbarui semua komponen pada saat yang sama, ini tidak selalu menjadi perhatian utama. Di lingkungan di mana komponen satu tim dibangun melalui penggunaan ulang kotak hitam dari komponen lain yang dibangun oleh tim lain, jenis ketidakstabilan ini membahayakan penggunaan ulang. Selain itu, pewarisan implementasi biasanya hanya berfungsi dalam batas proses. Ini membuat pewarisan implementasi tradisional tidak praktis untuk sistem besar yang berkembang yang terdiri dari komponen perangkat lunak yang dibangun oleh banyak tim teknik.

Kunci untuk membangun komponen yang dapat digunakan kembali adalah dapat memperlakukan objek sebagai kotak buram. Ini berarti bahwa bagian kode yang mencoba menggunakan ulang objek lain tidak mengetahui apa pun, dan tidak perlu mengetahui apa pun, tentang struktur internal atau implementasi komponen yang digunakan. Dengan kata lain, kode yang mencoba menggunakan kembali komponen tergantung pada perilaku objek dan bukan implementasi yang tepat.

Untuk mencapai penggunaan kembali kotak hitam, COM mengadopsi mekanisme penggunaan kembali yang sudah ada lainnya seperti penahanan/delegasi dan agregasi .

Nota

Untuk kenyamanan, objek yang digunakan kembali disebut objek dalam dan objek yang menggunakan objek dalam tersebut adalah objek luar .

 

Penting untuk diingat dalam kedua mekanisme ini bagaimana tampilan objek luar kepada kliennya. Sejauh menyangkut klien, kedua objek mengimplementasikan antarmuka apa pun tempat klien bisa mendapatkan pointer. Klien memperlakukan objek luar sebagai kotak buram dan oleh karena itu tidak peduli, juga tidak perlu peduli, tentang struktur internal objek luarâ €"klien hanya peduli tentang perilaku.

Untuk informasi selengkapnya, lihat topik berikut ini: