Perbezaan antara komposisi dan warisan
- 3999
- 358
- Brandon Haag
Dalam pengaturcaraan, kod yang boleh diguna semula adalah penggunaan perisian sedia ada untuk membina perisian baru menggunakan prinsip -prinsip kebolehgunaan semula. Kebolehgunaan semula kod dianggap sebagai fungsi produktif asas dalam perniagaan intensif teknologi maklumat. Ia dipromosikan dalam sistem berorientasikan objek dengan mewujudkan hubungan antara kelas. Terdapat dua cara asas untuk mewujudkan hubungan ini dalam pengaturcaraan berorientasikan objek - warisan dan komposisi. Melaksanakan warisan adalah salah satu cara untuk mengaitkan kelas tetapi OOP menyediakan hubungan baru antara kelas yang disebut komposisi. Dengan mewujudkan hubungan antara kelas baru dan sedia ada, kelas baru boleh mewarisi atau membenamkan kod dari satu atau lebih kelas yang ada.
Di OOP, warisan adalah metodologi yang mana objek memperoleh ciri -ciri satu atau lebih objek lain. Ini adalah salah satu alat yang paling berkuasa dalam melaksanakan kebolehgunaan semula kod di OOP. Apabila menggunakan warisan, kelas baru boleh dibuat dengan mewujudkan hubungan ibu bapa dan kanak-kanak dengan kelas yang sedia ada. Komposisi Objek adalah alternatif kepada warisan kelas. Menggunakan objek dalam objek lain dikenali sebagai komposisi. Pada banyak kesempatan, anda ingin menggunakan objek sebagai medan dalam kelas lain kerana mudah untuk membuat kelas kompleks menggunakan kelas yang ditulis sebelum ini, yang direka dengan baik sebagai komponen. Ini dipanggil komposisi. Nah, kedua -dua warisan dan komposisi menyediakan fungsi yang setara dalam banyak kes, komposisi objek adalah model penggunaan semula yang lebih baik daripada warisan kelas. Artikel ini membandingkan dua pendekatan.
Apa itu warisan?
Warisan adalah salah satu alat yang paling berkuasa dalam melaksanakan kebolehgunaan semula kod dalam pengaturcaraan berorientasikan objek. Ia merujuk kepada fungsi yang mana satu objek memperoleh ciri -ciri satu atau lebih objek lain. Warisan di C ++ bermaksud anda boleh membuat kelas yang memperoleh atribut mereka dari kelas yang ada. Ini bermakna anda mengkhususkan diri kelas untuk mewujudkan hubungan IS-A antara kelas yang menghasilkan gandingan yang kuat antara kelas dan kelas yang diperoleh. Melaksanakan warisan menggalakkan kebolehgunaan semula kod kerana kelas baru dicipta dari kelas sedia ada. Warisan kelas juga memudahkan untuk mengubahsuai pelaksanaan yang digunakan semula. Tetapi warisan kelas mempunyai beberapa kelemahan untuknya juga. Pertama, kerana warisan ditakrifkan pada masa kompilasi, anda tidak dapat mengubah pelaksanaan yang diwarisi dari kelas induk pada waktu larian.
Apa itu komposisi?
OOP memberikan hubungan lain antara kelas yang disebut komposisi, yang juga dikenali sebagai hubungan yang ada. Sekiranya ciri -ciri satu objek perlu menjadi sebahagian daripada objek lain, hubungan itu memerlukan komposisi. Untuk menyusun kelas dari kelas yang ada, objek setiap kelas harus diisytiharkan sebagai ahli kelas baru. Dengan kata -kata mudah, menggunakan objek dalam objek lain dikenali sebagai komposisi. Banyak kali, anda mungkin mahu menggunakan objek sebagai medan dalam kelas lain. Anda menggunakan objek di dalam kelas dalam komposisi. Tidak seperti warisan kelas, komposisi objek ditakrifkan secara dinamik pada jangka masa melalui objek yang memperoleh rujukan kepada objek lain. Di samping itu, komposisi menyediakan cara yang lebih baik untuk menggunakan objek tanpa menjejaskan butiran dalaman objek, iaitu di mana komposisi berguna.
Perbezaan antara komposisi dan warisan
Pendekatan
Walaupun kedua -dua warisan dan komposisi mempromosikan kebolehgunaan semula kod dalam sistem berorientasikan objek dengan mewujudkan hubungan antara kelas dan mereka menyediakan fungsi yang setara dengan banyak cara, mereka menggunakan pendekatan yang berbeza. Dengan warisan, anda boleh membuat kelas yang memperoleh atribut mereka dari kelas yang sedia ada sehingga semasa menggunakan warisan untuk membuat kelas, anda boleh mengembangkan kelas yang ada. Sebaliknya, menggunakan objek dalam objek lain dikenali sebagai komposisi. Komposisi Objek adalah alternatif kepada warisan kelas. Sekiranya ciri -ciri satu objek perlu menjadi sebahagian daripada objek lain, hubungan itu memerlukan komposisi.
Hubungan
Dalam warisan, anda mengkhususkan diri kelas untuk mewujudkan hubungan "is-a" antara kelas yang menghasilkan gandingan yang kuat antara kelas dan kelas yang diperolehi. Ia membolehkan hierarki kelas direka dan hierarki bermula dengan kelas yang paling umum dan bergerak ke kelas yang lebih spesifik. Dengan melaksanakan warisan, fungsi ahli dari satu kelas menjadi sifat kelas lain tanpa mengodkannya secara eksplisit dalam kelas. Dalam komposisi, anda menggunakan objek di dalam kelas dan sebarang permintaan ke objek dihantar ke objek. Butiran dalaman tidak terdedah antara satu sama lain dalam komposisi, jadi itu adalah hubungan "has-a".
Pelaksanaan
Warisan kelas ditakrifkan pada masa kompilasi, jadi anda tidak dapat mengubah pelaksanaan yang diwarisi dari kelas induk pada waktu larian. Kerana warisan mendedahkan subclass ke butiran pelaksanaan induknya, ia sering memecahkan enkapsulasi. Sebarang perubahan dalam kelas induk akan mencerminkan subkelas yang boleh menimbulkan masalah apabila anda cuba menggunakan semula subclass. Komposisi objek, sebaliknya, ditakrifkan secara dinamik pada masa larian melalui objek yang memperoleh rujukan kepada objek lain. Dan kerana objek diakses semata -mata melalui antara muka mereka, ia tidak akan memecahkan enkapsulasi. Mana-mana objek boleh diganti pada masa larian oleh objek lain selagi ia mempunyai jenis yang sama.
Komposisi vs. Warisan: Carta Perbandingan
Ringkasan Komposisi vs. Warisan
Pada banyak kesempatan, anda ingin menggunakan objek sebagai medan dalam kelas lain kerana kelas kompleks lebih mudah untuk membuat menggunakan kelas yang ditulis sebelumnya, yang direka dengan baik. Di sinilah anda menggunakan komposisi. Warisan menyediakan cara untuk menggunakan semula kod dengan memperluaskan kelas dengan usaha yang minimum, inilah sebabnya warisan adalah alat yang berharga dalam mewujudkan hubungan antara kelas. Secara umum, lebih baik menggunakan komposisi kerana ia menyediakan cara untuk menggunakan objek tanpa menjejaskan butiran dalaman objek yang mana komposisi berguna. Warisan bukan tanpa masalah, tetapi seperti warisan, komposisi objek menimbulkan kebimbangan prestasi yang sama berkenaan dengan penciptaan objek dan kemusnahan.