Yani’s Weblog

it’s all about software engineering…

The Problem of Multiple Inheritance

Ya, meskipun konsep multiple inheritance itu diperlukan, ternyata ada masalah untuk diimplementasikan. Sesuai dengan konsepnya, inheritance memungkinkan kita mengakses data (atribut/data slot) atau meng-invoke method pada suatu objek yang tidak didefinisikan pada kelas objek tsb. Compiler akan mencarikannya di kelas-kelas ancestor-nya. Pada single inheritance, algoritme pencarian data atau method tsb tidak terlalu sulit. Compiler tinggal mencari ke definisi kelas parent-nya. Jika tidak ada, terus dicari ke kelas parent dari parent-nya, dst-nya sampai ketemu atau sampai di ujung inheritance-chain (akan ada pesan error jika tidak ketemu).

Nah, pada multiple inheritance, algoritma pencarian menjadi lebih rumit, karena parent sebuah kelas bisa lebih dari satu. Kemana compiler harus mulai mencari, ke parent A-kah atau parent B dulu ? Perlu backtrack jika di satu path tidak ketemu. Belum lagi jika ada shared-parent, masalah bertambah lagi. Atau jika ada lebih dari satu data slot atau method dengan nama yang sama, hingga terjadi clash…

Beberapa bahasa pemrograman berorientasi objek menggunakan pendekatan yang berbeda-beda untuk penanganan masalah-masalah tersebut. Akan tetapi, dari beberapa literatur dinyatakan bahwa penanganan masalah ini belum dianggap mature…

Yang perlu diperhatikan adalah, dengan adanya perbedaan pendekatan dan penanganan di berbagai bahasa, berhati-hatilah jika akan berpindah bahasa. Pastikan bahwa hasil optimal yang sudah dicapai di suatu bahasa tidak jadi salah setelah program anda di-porting ke bahasa yang lain.

Gunakan multiple inherintance hanya jika benar-benar dibutuhkan saja. Hindari jika bisa…

February 26, 2009 - Posted by yaniwid | oop | | 6 Comments

6 Comments »

  1. rasanya sekarang sedikit bahasa yang mengenable fitur multiple inheritance
    untuk melindungi programmer dari kebingungan dan compiler dari kesulitan dalam tracking
    :D
    lagipula jarang ada solusi yang harus benar-benar menggunakan multiple inheritance

    Comment by petra | February 26, 2009

  2. Hingga saat ini memang belum sempat sampai menggunakan konsep ini secara nyata, atau mungkin karena memang jam terbang yang masih sedikit,. :P

    Comment by dwinanto | February 26, 2009

  3. Ya Petra, memang sedikit. Beberapa bahasa menerapkan alternatif lain untuk support ’semacam’ multiple inheritance tapi lebih praktis, seperti perspective, interface, delegation, mixin class…
    Buat para ‘pengembang bahasa’ tentunya implementasi multiple inheritance ini jadi tantangan tersendiri, karena kalo berhasil, akan sangat menguntungkan programmer.

    Ya Dwinanto, tugas-tugas di kuliah mungkin belum terlalu kompleks ya…

    Comment by yaniwid | February 27, 2009

  4. entah sih ya,
    menurut pendapat saya multiple inheritance itu lebih banyak resikonya daripada keuntungannya, Bu….

    Comment by petra | February 27, 2009

  5. “Utamakan komposisi dibandingkan inheritance”, hehe..
    Aduh, itu kata-kata bijak masih teringat.. :p

    Comment by Arie | March 2, 2009

  6. Ya Petra, untuk sementara ini sebaiknya hindari multiple inheritance…

    Arie, design principles ini banyak disebut-sebut saat membahas design pattern ya…
    Jadi, dari pengalaman para expert, ternyata memang sebaiknya melakukan komposisi daripada inheritance. Tapi tentu ada banyak kasus yang sebaiknya diselesaikan dengan inheritance…

    Comment by yaniwid | March 2, 2009


Leave a comment