Perbedaan antara komposisi dan warisan

Perbedaan antara komposisi dan warisan

Dalam pemrograman, kode yang dapat digunakan kembali adalah penggunaan perangkat lunak yang ada untuk membangun perangkat lunak baru menggunakan prinsip -prinsip reusability. Ulang Kode Reusability dianggap sebagai fungsionalitas produktif mendasar dalam bisnis Informasi Teknologi Intensif. Ini dipromosikan dalam sistem yang berorientasi objek dengan membangun hubungan antar kelas. Ada dua cara mendasar untuk membangun hubungan ini dalam pemrograman yang berorientasi objek - warisan dan komposisi. Menerapkan warisan adalah salah satu cara untuk menghubungkan kelas tetapi OOP memberikan jenis hubungan baru antar kelas yang disebut komposisi. Dengan membangun hubungan antara kelas baru dan yang sudah ada, kelas baru dapat mewarisi atau menyematkan kode dari satu atau lebih kelas yang ada.

Dalam OOP, warisan adalah metodologi yang dengannya suatu objek memperoleh karakteristik satu atau lebih objek lainnya. Ini adalah salah satu alat paling kuat dalam menerapkan penggunaan kembali kode di OOP. Saat menggunakan warisan, kelas baru dapat dibuat dengan membangun hubungan orangtua-anak dengan kelas yang ada. Komposisi objek adalah alternatif untuk warisan kelas. Menggunakan objek dalam objek lain dikenal sebagai komposisi. Pada banyak kesempatan Anda ingin menggunakan objek sebagai bidang di dalam kelas lain karena mudah untuk membuat kelas yang kompleks menggunakan kelas yang ditulis sebelumnya, yang dirancang dengan baik sebagai komponen. Ini disebut komposisi. Nah, baik warisan dan komposisi memberikan fungsi yang setara dalam banyak kasus, komposisi objek adalah model penggunaan kembali yang lebih baik daripada warisan kelas. Artikel ini membandingkan dua pendekatan.

Apa itu warisan?

Warisan adalah salah satu alat paling kuat dalam menerapkan penggunaan kembali kode dalam pemrograman yang berorientasi objek. Ini mengacu pada fungsionalitas di mana satu objek memperoleh karakteristik satu atau lebih objek lainnya. Warisan dalam C ++ berarti Anda dapat membuat kelas yang memperoleh atributnya dari kelas yang ada. Ini berarti Anda mengkhususkan kelas untuk membuat hubungan IS-A antara kelas-kelas yang menghasilkan kopling yang kuat antara kelas dan kelas yang diturunkan. Menerapkan warisan mempromosikan penggunaan kembali kode karena kelas baru dibuat dari kelas yang ada. Warisan kelas juga memudahkan untuk memodifikasi implementasi yang sedang digunakan kembali. Tapi warisan kelas juga memiliki beberapa kerugian untuk itu. Pertama, karena warisan didefinisikan pada waktu kompilasi, Anda tidak dapat mengubah implementasi yang diwarisi dari kelas orang tua saat run-time.

Apa itu komposisi?

OOP memberikan hubungan lain antara kelas-kelas yang disebut komposisi, yang juga dikenal sebagai hubungan has-a. Jika fitur satu objek harus menjadi bagian dari objek lain, hubungan itu membutuhkan komposisi. Untuk menyusun kelas dari kelas yang ada, objek dari setiap kelas harus dinyatakan sebagai anggota kelas baru. Dengan kata -kata sederhana, menggunakan objek dalam objek lain dikenal sebagai komposisi. Berkali -kali, Anda mungkin ingin menggunakan objek sebagai bidang di dalam kelas lain. Anda menggunakan objek di dalam kelas dalam komposisi. Tidak seperti warisan kelas, komposisi objek didefinisikan secara dinamis saat run-time melalui objek yang memperoleh referensi ke objek lain. Selain itu, komposisi memberikan cara yang lebih baik untuk menggunakan objek tanpa mengorbankan detail internal objek, di situlah komposisi berguna.

Perbedaan antara komposisi dan warisan

Mendekati

Sementara baik pewarisan dan komposisi mempromosikan penggunaan kembali kode dalam sistem berorientasi objek dengan membangun hubungan antar kelas dan mereka memberikan fungsi yang setara dalam banyak hal, mereka menggunakan pendekatan yang berbeda. Dengan warisan, Anda dapat membuat kelas yang memperoleh atributnya dari kelas yang ada sehingga saat menggunakan warisan untuk membuat kelas, Anda dapat memperluas di kelas yang ada. Sebaliknya, menggunakan objek dalam objek lain dikenal sebagai komposisi. Komposisi objek adalah alternatif untuk warisan kelas. Jika fitur satu objek harus menjadi bagian dari objek lain, hubungan itu membutuhkan komposisi.

Hubungan

Dalam warisan, Anda mengkhususkan kelas untuk membuat hubungan "is-a" antara kelas-kelas yang menghasilkan kopling yang kuat antara kelas dan kelas yang diturunkan. Ini memungkinkan hierarki kelas dirancang dan hierarki dimulai dengan kelas yang paling umum dan pindah ke kelas yang lebih spesifik. Dengan menerapkan warisan, fungsi anggota dari satu kelas menjadi properti kelas lain tanpa mengkode mereka secara eksplisit di dalam kelas. Dalam komposisi, Anda menggunakan objek di dalam kelas dan permintaan apa pun ke objek diteruskan ke objek. Detail internal tidak terpapar satu sama lain dalam komposisi, jadi ini adalah hubungan "has-a".

Penerapan

Warisan kelas didefinisikan pada waktu kompilasi, sehingga Anda tidak dapat mengubah implementasi yang diwarisi dari kelas orang tua saat run-time. Karena warisan memperlihatkan subkelas ke perincian implementasi orang tuanya, ia sering memecahkan enkapsulasi. Setiap perubahan di kelas induk akan tercermin dalam subkelas yang dapat menciptakan masalah saat Anda mencoba menggunakan kembali subkelas. Komposisi objek, sebaliknya, didefinisikan secara dinamis saat run-time melalui objek yang memperoleh referensi ke objek lain. Dan karena benda diakses semata -mata melalui antarmuka mereka, itu tidak akan merusak enkapsulasi. Objek apa pun dapat diganti saat run-time oleh objek lain selama memiliki tipe yang sama.

Komposisi vs. Warisan: Bagan Perbandingan

Ringkasan Komposisi VS. Warisan

Pada banyak kesempatan, Anda ingin menggunakan objek sebagai bidang dalam kelas lain karena kelas kompleks lebih mudah dibuat menggunakan kelas yang ditulis sebelumnya, yang dirancang dengan baik. Di sinilah Anda menggunakan komposisi. Warisan menyediakan cara untuk menggunakan kembali kode dengan memperluas kelas dengan upaya minim, inilah mengapa warisan adalah alat yang berharga dalam membangun hubungan antar kelas. Secara umum, lebih baik menggunakan komposisi karena menyediakan cara untuk menggunakan objek tanpa mengorbankan detail internal objek yang ada di mana komposisi berguna. Warisan bukan tanpa masalah, tetapi seperti warisan, komposisi objek menimbulkan kekhawatiran kinerja yang serupa sehubungan dengan penciptaan dan penghancuran objek.