Warisan vs Kapal Kontainer
Inheritance dan Containership adalah dua konsep penting yang ditemukan di OOP (Contoh Pemrograman Berorientasi Objek: C++). Secara sederhana, baik Containership maupun Inheritance berurusan dengan penyediaan properti atau perilaku tambahan ke kelas. Warisan adalah kemampuan kelas untuk mewarisi properti dan perilaku dari kelas induk dengan memperluasnya. Di sisi lain, Containership adalah kemampuan sebuah kelas untuk memuat objek dari kelas yang berbeda sebagai data anggota.
Apa itu Warisan?
Seperti disebutkan di atas, Warisan adalah kemampuan kelas untuk mewarisi properti dan perilaku dari kelas induk dengan memperluasnya. Warisan pada dasarnya menyediakan penggunaan kembali kode dengan mengizinkan perluasan properti dan perilaku kelas yang ada oleh kelas yang baru ditentukan. Jika kelas A memperluas 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 terproteksi dari kelas super (B). Subkelas dapat secara opsional menimpa (menyediakan fungsionalitas baru atau yang diperluas ke metode) perilaku yang diwarisi dari kelas induk. Warisan mewakili hubungan "is-a" di OOP. Ini pada dasarnya berarti bahwa A juga merupakan B. Dengan kata lain, B dapat menjadi kelas dengan deskripsi umum dari 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 terlebih dahulu membuat kelas Karyawan dan kemudian menggeneralisasikannya ke kelas Person juga (mis.e. generalisasi). Dalam contoh ini, Karyawan akan memiliki semua properti dan perilaku Orang (yaitu Karyawan juga merupakan Orang) dan mungkin berisi beberapa fungsi tambahan (jadi, Orang bukan Karyawan) juga.
Apa itu Kapal Kontainer?
Containership adalah kemampuan kelas untuk memuat objek dari kelas yang berbeda sebagai data anggota. Misalnya, kelas A dapat berisi objek kelas B sebagai anggota. Di sini, semua metode (atau fungsi) publik yang didefinisikan dalam B dapat dieksekusi di dalam kelas A. Kelas A menjadi wadah, sedangkan kelas B menjadi kelas yang terkandung. Containership juga disebut sebagai Komposisi. Dalam contoh ini, dapat dikatakan bahwa kelas A terdiri dari kelas B. Dalam OOP, Containership merepresentasikan hubungan “has-a”. Penting untuk dicatat bahwa, meskipun wadah memiliki akses untuk mengeksekusi semua metode publik dari kelas yang terkandung, ia tidak dapat mengubah atau menyediakan fungsionalitas tambahan. Ketika datang ke masalah pemrograman dunia nyata, objek kelas TextBox dapat terkandung di dalam kelas Form, dan dengan demikian dapat dikatakan bahwa Form berisi TextBox (atau sebagai alternatif, Form terdiri dari TextBox).
Perbedaan antara Inheritance dan Containership
Meskipun Inheritance dan Containership adalah dua konsep OOP, keduanya sangat berbeda dalam hal apa yang mereka izinkan untuk dicapai oleh programmer. Warisan adalah kemampuan kelas untuk mewarisi properti dan perilaku dari kelas induk dengan memperluasnya, sedangkan Containership adalah kemampuan kelas untuk memuat objek dari kelas yang berbeda sebagai data anggota. Jika sebuah kelas diperluas, ia mewarisi semua properti/perilaku publik dan yang dilindungi dan perilaku tersebut dapat ditimpa oleh subkelas. Tetapi jika suatu kelas terkandung di dalam yang lain, wadah tidak mendapatkan kemampuan untuk mengubah atau menambahkan perilaku ke yang dikandungnya. Inheritance merepresentasikan hubungan “is-a” di OOP, sedangkan Containership merepresentasikan hubungan “has-a”.