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 mengambil alih fungsi lain.

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 tidak terimplementasi dengan tidak tertandingi. 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 kembali kotak hitam komponen lain yang dibangun oleh tim lain, jenis ketidakstabilan ini membahmari penggunaan kembali. 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 kembali objek lain tidak tahu apa-apa, dan perlu mengetahui apa-apa, 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 lain yang ditetapkan seperti penahanan/delegasi dan agregasi.

Catatan

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 objek luar muncul 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 mengetahui informasi selengkapnya, lihat topik berikut: