Perbedaan antara warisan dan komposisi

Perbedaan antara warisan dan komposisi

Komposisi warisan vs

Warisan dan komposisi adalah dua konsep penting yang ditemukan dalam OOP (pemrograman berorientasi objek). Secara sederhana, baik komposisi maupun warisan berurusan dengan memberikan sifat atau perilaku tambahan untuk suatu kelas. Warisan adalah kemampuan kelas untuk mewarisi sifat dan perilaku dari kelas induk dengan memperluasnya. Di sisi lain, komposisi adalah kemampuan kelas untuk berisi objek dari kelas yang berbeda sebagai data anggota.

Apa itu warisan?

Seperti disebutkan di atas, warisan adalah kemampuan kelas untuk mewarisi sifat dan perilaku dari kelas orang tua dengan memperluasnya. Warisan pada dasarnya memberikan penggunaan kembali kode dengan memungkinkan memperluas properti dan perilaku kelas yang sudah ada oleh kelas yang baru didefinisikan. Jika kelas A meluas, maka kelas B disebut kelas induk (atau kelas super) dan kelas A disebut kelas anak (atau kelas turunan kelas/sub kelas). Dalam contoh ini skenario, kelas A akan mewarisi semua atribut publik dan terlindungi dan metode kelas super (b). Subkelas dapat secara opsional override (menyediakan fungsionalitas baru atau diperluas untuk metode) perilaku yang diwarisi dari kelas induk.

Warisan mewakili hubungan "is-a" di oop. Ini pada dasarnya berarti bahwa A juga b. Dengan kata lain, B dapat menjadi kelas dengan deskripsi umum entitas dunia nyata tertentu tetapi A menentukan spesialisasi tertentu. Dalam masalah pemrograman dunia nyata, kelas orang dapat diperluas untuk membuat kelas karyawan. Ini disebut spesialisasi. Tetapi Anda juga bisa membuat kelas karyawan terlebih dahulu dan kemudian menggeneralisasikannya ke kelas seseorang juga (saya.e. generalisasi). Dalam contoh ini, karyawan akan memiliki semua properti dan perilaku orang tersebut (i.e. Karyawan juga seseorang) dan mungkin berisi beberapa fungsi tambahan (jadi, orang bukan karyawan) juga.

Apa itu komposisi?

Komposisi adalah kemampuan kelas untuk berisi objek dari kelas yang berbeda sebagai data anggota. Misalnya, Kelas A dapat berisi objek Kelas B sebagai anggota. Di sini, semua metode publik (atau fungsi) yang didefinisikan dalam B dapat dieksekusi dalam kelas a. Kelas A menjadi wadah, sedangkan Kelas B menjadi kelas yang terkandung. Komposisi juga disebut sebagai containership. Dalam contoh ini, dapat dikatakan bahwa Kelas A terdiri dari Kelas B. Dalam oop, komposisi mewakili hubungan "has-a". Penting untuk dicatat bahwa, meskipun wadah memiliki akses untuk melaksanakan semua metode publik dari kelas yang terkandung, ia tidak dapat mengubah atau memberikan fungsionalitas tambahan. Ketika datang ke masalah pemrograman dunia nyata, objek kotak teks kelas dapat terkandung dalam bentuk kelas, dan dengan demikian dapat dikatakan bahwa formulir berisi kotak teks (atau sebagai alternatif, suatu bentuk terdiri dari kotak teks).

Apa perbedaan antara warisan dan komposisi?

Meskipun warisan dan komposisi adalah dua konsep OOP, mereka sangat berbeda dalam apa yang memungkinkan programmer untuk mencapai. Warisan adalah kemampuan untuk kelas untuk mewarisi sifat dan perilaku dari kelas induk dengan memperluasnya, sedangkan komposisi adalah kemampuan kelas untuk berisi objek dari kelas yang berbeda sebagai data anggota. Jika suatu kelas diperpanjang, ia mewarisi semua sifat/perilaku publik dan yang dilindungi dan perilaku tersebut dapat ditimpa oleh subkelas. Tetapi jika suatu kelas terkandung dalam yang lain, wadah tidak mendapatkan kemampuan untuk mengubah atau menambah perilaku ke yang terkandung. Warisan mewakili hubungan "is-a" dalam oop, sedangkan komposisi mewakili hubungan "has-a".