Perbezaan antara warisan dan kontena

Perbezaan antara warisan dan kontena

Warisan vs kontena

Warisan dan kontena adalah dua konsep penting yang terdapat di OOP (contoh pengaturcaraan berorientasikan objek: C ++). Secara ringkas, kedua -dua kontena dan warisan berurusan dengan menyediakan sifat atau tingkah laku tambahan ke kelas. Warisan adalah keupayaan untuk kelas mewarisi sifat dan tingkah laku dari kelas induk dengan memperluaskannya. Sebaliknya, kontena adalah keupayaan kelas untuk mengandungi objek kelas yang berbeza sebagai data ahli.

Apa itu warisan?

Seperti yang disebutkan di atas, warisan adalah keupayaan untuk kelas mewarisi sifat dan tingkah laku dari kelas induk dengan memperluaskannya. Warisan pada dasarnya menyediakan penggunaan semula kod dengan membenarkan sifat dan tingkah laku yang meluaskan kelas yang sedia ada oleh kelas yang baru ditakrifkan. Jika Kelas A meluas B, maka Kelas B dipanggil kelas induk (atau kelas super) dan Kelas A dipanggil kelas kanak -kanak (atau kelas/kelas sub). Dalam contoh senario ini, Kelas A akan mewarisi semua atribut dan kaedah yang dilindungi oleh orang ramai dan dilindungi (B). Subclass secara pilihan boleh menimpa (menyediakan fungsi baru atau lanjutan kepada kaedah) tingkah laku yang diwarisi dari kelas induk. Warisan mewakili hubungan "is-a" di OOP. Ini pada dasarnya bermakna bahawa A juga b. Dalam erti kata lain, B boleh menjadi kelas dengan penerangan umum entiti dunia sebenar tetapi menentukan pengkhususan tertentu. Dalam masalah pengaturcaraan dunia sebenar, kelas orang boleh diperluaskan untuk membuat kelas pekerja. Ini dipanggil pengkhususan. Tetapi anda juga boleh membuat kelas pekerja terlebih dahulu dan kemudian menyebarkannya kepada kelas seseorang juga (i.e. generalisasi). Dalam contoh ini, pekerja akan mempunyai semua sifat dan tingkah laku orang (i.e. Pekerja juga seorang) dan mungkin mengandungi beberapa fungsi tambahan (jadi, bukan pekerja) juga.

Apa itu kontena?

Containership adalah keupayaan kelas untuk mengandungi objek kelas yang berbeza sebagai data ahli. Sebagai contoh, Kelas A boleh mengandungi objek Kelas B sebagai ahli. Di sini, semua kaedah awam (atau fungsi) yang ditakrifkan dalam B boleh dilaksanakan dalam Kelas A. Kelas A menjadi bekas, manakala Kelas B menjadi kelas yang terkandung. Containership juga dirujuk sebagai komposisi. Dalam contoh ini, boleh dikatakan bahawa Kelas A terdiri daripada Kelas B. Di OOP, kontena mewakili hubungan "has-a". Adalah penting untuk diperhatikan bahawa, walaupun bekas mempunyai akses untuk melaksanakan semua kaedah awam kelas yang terkandung, ia tidak dapat mengubah atau menyediakan fungsi tambahan. Apabila ia datang kepada masalah pengaturcaraan dunia sebenar, objek kotak teks kelas mungkin terkandung dalam bentuk kelas, dan dengan itu dapat dikatakan bahawa bentuk mengandungi kotak teks (atau secara alternatif, bentuk terdiri daripada kotak teks).

Perbezaan antara warisan dan kontena

Walaupun warisan dan kontena adalah dua konsep OOP, mereka agak berbeza dalam apa yang mereka membenarkan pengaturcara mencapai. Warisan adalah keupayaan untuk kelas mewarisi sifat dan tingkah laku dari kelas induk dengan memperluaskannya, sementara kontena adalah keupayaan kelas untuk mengandungi objek kelas yang berbeza sebagai data ahli. Sekiranya kelas dilanjutkan, ia mewarisi semua sifat/tingkah laku awam dan dilindungi dan tingkah laku tersebut boleh ditindih oleh subkelas. Tetapi jika kelas terkandung di dalam yang lain, bekas itu tidak mendapat keupayaan untuk menukar atau menambah tingkah laku yang terkandung. Warisan mewakili hubungan "IS-A" di OOP, sementara kontena mewakili hubungan "has-a".