Warisan vs Komposisi
Warisan dan Komposisi adalah dua konsep penting yang ditemukan dalam OOP (Pemrograman Berorientasi Objek). Dalam istilah sederhana, baik Komposisi maupun Inheritance berhubungan dengan penyediaan properti atau perilaku tambahan untuk sebuah kelas. Warisan adalah kemampuan suatu kelas untuk mewarisi sifat dan perilaku dari kelas induk dengan memperluasnya. Di sisi lain, Komposisi adalah kemampuan suatu kelas untuk memuat objek dari berbagai kelas sebagai data anggota.
Apa itu Warisan??
Seperti disebutkan di atas, Warisan adalah kemampuan suatu kelas untuk mewarisi properti dan perilaku dari kelas induk dengan memperluasnya. Inheritance pada dasarnya menyediakan penggunaan kembali kode dengan membolehkan perluasan properti dan perilaku kelas yang ada oleh kelas yang baru didefinisikan. Jika kelas A meluas B, maka kelas B disebut kelas induk (atau kelas super) dan kelas A disebut kelas anak (atau kelas turunan / sub kelas). Dalam skenario contoh ini, kelas A akan mewarisi semua atribut dan metode publik dan terlindungi dari kelas super (B). Subclass secara opsional dapat menimpa (menyediakan fungsionalitas baru atau diperluas untuk metode) perilaku yang diwarisi dari kelas induk.
Warisan merupakan hubungan "is-a" di OOP. Ini pada dasarnya berarti bahwa A juga merupakan B. Dengan kata lain, B dapat menjadi kelas dengan deskripsi umum tentang entitas dunia nyata tertentu tetapi A menentukan spesialisasi tertentu. Dalam masalah pemrograman dunia nyata, kelas Person dapat diperluas untuk membuat kelas Karyawan. Ini disebut spesialisasi. Tetapi Anda juga bisa membuat kelas Karyawan terlebih dahulu dan kemudian menggeneralisasinya ke kelas Orang juga (yaitu generalisasi). Dalam contoh ini, Karyawan akan memiliki semua properti dan perilaku Orang (yaitu Karyawan juga Orang) dan mungkin berisi beberapa fungsi tambahan (jadi, Orang bukan Karyawan) juga.
Apa itu Komposisi?
Komposisi adalah kemampuan suatu kelas untuk memuat objek-objek dari kelas yang berbeda sebagai data anggota. Misalnya, kelas A bisa 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, sementara kelas B menjadi kelas yang terkandung. Komposisi ini juga disebut sebagai Containership. Dalam contoh ini, dapat dikatakan bahwa kelas A terdiri dari kelas B. Dalam OOP, Komposisi mewakili hubungan "memiliki-a". Penting untuk dicatat bahwa, meskipun wadah memiliki akses untuk mengeksekusi semua metode publik dari kelas yang terkandung, itu tidak dapat mengubah atau menyediakan fungsionalitas tambahan. Ketika datang ke masalah pemrograman dunia nyata, objek kelas TextBox dapat terkandung dalam Formulir kelas, dan dengan demikian dapat dikatakan bahwa Formulir berisi TextBox (atau sebagai alternatif, Formulir terdiri dari TextBox).
Apa perbedaan antara Warisan dan Komposisi?
Meskipun Warisan dan Komposisi adalah dua konsep OOP, mereka sangat berbeda dalam apa yang mereka memungkinkan untuk dicapai oleh programmer. Warisan adalah kemampuan suatu kelas untuk mewarisi sifat dan perilaku dari kelas induk dengan memperluasnya, sedangkan Komposisi adalah kemampuan suatu kelas untuk memuat objek dari kelas yang berbeda sebagai data anggota. Jika suatu kelas diperluas, ia mewarisi semua properti / perilaku publik dan yang dilindungi dan perilaku tersebut dapat diganti oleh subclass. Tetapi jika suatu kelas terkandung dalam yang lain, wadah tidak mendapatkan kemampuan untuk mengubah atau menambah perilaku ke dalamnya. Warisan mewakili hubungan "is-a" di OOP, sementara Komposisi mewakili hubungan "has-a".