Perbedaan Antara Komposisi dan Warisan

Dalam pemrograman, kode reusable adalah penggunaan perangkat lunak yang ada untuk membangun perangkat lunak baru dengan menggunakan prinsip-prinsip reusability. Penggunaan kembali kode dianggap sebagai fungsi produktif mendasar dalam bisnis intensif teknologi informasi. Ini dipromosikan dalam sistem berorientasi objek dengan membangun hubungan antar kelas. Ada dua cara mendasar untuk membangun hubungan ini dalam pemrograman berorientasi objek - Warisan dan Komposisi. Menerapkan warisan adalah salah satu cara untuk menghubungkan kelas tetapi OOP menyediakan jenis baru hubungan antara 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, pewarisan adalah metodologi dimana suatu objek memperoleh karakteristik dari satu atau lebih objek lain. Ini adalah salah satu alat paling kuat dalam menerapkan penggunaan kembali kode dalam OOP. Saat menggunakan warisan, kelas baru dapat dibuat dengan membangun hubungan orangtua-anak dengan kelas yang ada. Komposisi objek adalah alternatif dari pewarisan kelas. Menggunakan objek dalam objek lain dikenal sebagai komposisi. Pada banyak kesempatan Anda ingin menggunakan objek sebagai bidang dalam kelas lain karena mudah untuk membuat kelas kompleks menggunakan kelas yang ditulis sebelumnya dan dirancang dengan baik sebagai komponen. Ini disebut komposisi. Baik, baik pewarisan maupun komposisi memberikan fungsi yang setara dalam banyak kasus, komposisi objek adalah model reuse 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 berorientasi objek. Ini mengacu pada fungsionalitas dimana satu objek memperoleh karakteristik dari 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 sambungan kuat antara kelas dasar dan turunan. Menerapkan pewarisan mempromosikan penggunaan kembali kode karena kelas baru dibuat dari kelas yang ada. Warisan kelas juga memudahkan untuk memodifikasi implementasi yang digunakan kembali. Tetapi warisan kelas memiliki beberapa kelemahan juga. Pertama, karena pewarisan didefinisikan pada waktu kompilasi, Anda tidak dapat mengubah implementasi yang diwarisi dari kelas induk pada saat run-time.

Apa itu Komposisi?

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

Perbedaan antara Komposisi dan Warisan

Pendekatan

Sementara kedua warisan dan komposisi mempromosikan penggunaan kembali kode dalam sistem berorientasi objek dengan membangun hubungan antar kelas dan mereka menyediakan fungsionalitas yang setara dalam banyak cara, mereka menggunakan pendekatan yang berbeda. Dengan pewarisan, Anda bisa membuat kelas yang memperoleh atributnya dari kelas yang ada sehingga saat menggunakan warisan untuk membuat kelas, Anda bisa memperluas kelas yang ada. Sebaliknya, menggunakan objek dalam objek lain dikenal sebagai komposisi. Komposisi objek adalah alternatif dari pewarisan kelas. Jika fitur dari satu objek perlu menjadi bagian dari objek lain, hubungan membutuhkan komposisi.

Hubungan

Dalam warisan, Anda mengkhususkan kelas untuk membuat hubungan "is-a" antara kelas yang menghasilkan sambungan kuat antara kelas dasar dan kelas turunan. Ini memungkinkan hierarki kelas dirancang dan hirarki dimulai dengan kelas paling umum dan pindah ke kelas yang lebih spesifik. Dengan menerapkan pewarisan, fungsi anggota dari satu kelas menjadi properti dari kelas lain tanpa mengkodekannya 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 itu adalah hubungan "memiliki-a".

Penerapan

Warisan kelas didefinisikan pada waktu kompilasi, jadi Anda tidak dapat mengubah implementasi yang diwarisi dari kelas induk pada saat run-time. Karena pewarisan memaparkan subclass ke detail implementasi induknya, ia sering memecah enkapsulasi. Setiap perubahan di kelas induk akan tercermin dalam subkelas yang dapat membuat masalah ketika Anda mencoba untuk menggunakan kembali subkelas. Komposisi objek, sebaliknya, didefinisikan secara dinamis pada saat run-time melalui objek yang memperoleh referensi ke objek lain. Dan karena objek diakses hanya melalui antarmuka mereka, itu tidak akan merusak enkapsulasi. Objek apa pun dapat diganti pada saat dijalankan oleh objek lain asalkan memiliki tipe yang sama.

Komposisi vs Warisan: Grafik 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 dengan baik dan dirancang dengan baik. Di sinilah Anda menggunakan komposisi. Warisan menyediakan cara untuk menggunakan kembali kode dengan memperluas kelas dengan upaya minimal, inilah sebabnya warisan adalah alat yang berharga dalam membangun hubungan antar kelas. Secara umum, lebih disukai untuk menggunakan komposisi karena memberikan cara untuk menggunakan objek tanpa mengurangi detail internal objek yang merupakan tempat komposisi berguna. Warisan bukan tanpa masalah, tetapi seperti warisan, komposisi objek menimbulkan masalah kinerja yang sama terkait dengan pembuatan dan penghancuran objek.