Mengenal Polymorphism Konsep OOP bagi Programmer

Web & Development

Pada dasarnya, konsep OOP seperti Polymorphism merupakan salah satu istilah yang harus dipahami oleh programmer pemula. Istilah ini menjadi bagian penting dalam mempelajari dan memahami berbagai soal coding seperti Java, C++, dan Python.

Penting untuk diketahui, ada beberapa jenis pemrograman yang berorientasi pada objek. Pemrograman ini sering disebut sebagai OOP atau Object Oriented Programming. Lantas, mengapa Polymorphism menjadi salah satu aspek penting untuk dipelajari? Simak pembahasannya sebagai berikut.

Pengertian Polymorphism

Polymorphism berasal dari bahasa Yunani yang berarti “banyak bentuk”. Dalam dunia pemrograman, istilah ini mengacu pada kemampuan suatu objek untuk merespons dengan cara berbeda terhadap pemanggilan metode yang sama. Konsep ini memungkinkan pengembang menulis kode yang lebih fleksibel, efisien, dan mudah digunakan kembali.

OOP atau Object Oriented Programming membawa beberapa pilar yang penting seperti class, object, method, dan inheritance. Konsep pemrograman ini membawa istilah Polymorphism sebagai bagian yang berkaitan erat dengan salah satu pilar tersebut.

Secara khusus, polymorphism memungkinkan objek dari kelas turunan digunakan seolah-olah objek tersebut merupakan bagian dari kelas induknya. Selain itu, metode dengan nama yang sama dapat berperilaku berbeda tergantung pada objek yang memanggilnya. Melalui polymorphism, satu antarmuka tunggal dapat mewakili berbagai tipe objek yang berbeda.

Polymorphism sangat erat kaitannya dengan konsep pewarisan (inheritance) dalam pemrograman berorientasi objek (OOP). Kelas turunan dapat mewarisi metode dari kelas induk, lalu menimpa (override) atau menambahkan perilaku baru sesuai kebutuhan.

Dalam praktiknya, polymorphism membantu pengembang untuk menulis kode yang lebih abstrak, mengurangi duplikasi, serta meningkatkan fleksibilitas dan kemudahan pemeliharaan dalam jangka panjang. Dengan memahami dan menerapkannya, Anda dapat membangun sistem perangkat lunak yang lebih modular, terstruktur, dan mudah dikembangkan.

Baca juga: Mengenal Asynchronous Konsep Penting Pemrograman Modern

Sejarah Polymorphism

Sebenarnya, konsep Polymorphism tidak muncul begitu saja dalam dunia pemrograman dan sains komputer. Namun, konsep ini muncul melalui proses riset dari contributor yang cukup berpengaruh. Pada era 1960-an, Polymorphism pertama dikembangkan secara signifikan sebagai tipe sistem dan implementasi. Dalam praktiknya, konsep Polymorphism sendiri mulai muncul pada akhir tahun 1970-an.

Type system tersebut merupakan sistem logika yang terdiri dari kumpulan aturan dalam daftar property. Tipe semacam ini dipergunakan untuk mengkonstruksi berbagai macam program komputer seperti variable, expression, fungsi, dan module.

Dua tipe dalam konsep OOP yang menjadi awal dari sistem Polymorphism ini adalah Ad Hoc Polymorphism dan Parametric Polymorphism. Kedua tipe tersebut dinotasikan dan dijelaskan pada lecture notes Fundamental Concepts in Programming Languages. Christopher Strachey menjadi nama utama yang menotasikan tipe tersebut.

Saat itu, Ad Hoc Polymorphism digunakan dalam bahasa pemrograman Algol 68. Sementara itu, Parametric Polymorphism digunakan dalam bahasa pemrograman ML atau Meta Language. 

Pada tahun 1985, dua tokoh yakni Peter Wagner dan Luca Cardelli memperkenalkan term yang disebut sebagai Inclusion Polymorphism, Term ini diperkenalkan untuk memodelkan konsep Subtypers dan Inheritance yang diimplementasikan pertama kali pada bahasa pemrograman Simula.

Dua Aspek Implementasi Polymorphism

Polymorphism

Secara umum, ada dua aspek implementasi dalam Polymorphism, yakni Static Polymorphism dan Dynamic Polymorphism. Static Polymorphism sendiri merupakan Polymorphism yang dilakukan saat compile atau recompile time. Sementara itu, Dynamic Polymorphism merupakan Polymorphism yang dilakukan pada saat berjalannya program atau runtime. Dalam konsep OOP, Static Polymorphism bekerja lebih cepat. Namun, sistem ini membutuhkan bantuan compiler tambahan.

Lain halnya dengan Dynamic Polymorphism yang lebih flexible. Contohnya, di mana objek dioperasikan tanpa mengetahui tipe dari objek tersebut secara penuh. Namun, penting untuk diingat bahwa Dynamic Polymorphism bekerja lebih lambat dibandingkan dengan Static Polymorphism.

Beberapa contoh Static Polymorphism dalam suatu class adalah Static Binding, Compile-Time Binding, Early Binding, dan Method Overloading. Sementara itu, contoh dalam Dynamic Polymorphism mencakup Dynamic Binding, Run-Time Binding, Late Binding, dan Method Overriding pada class-class yang berbeda.

Baca juga: Apa Itu Compiling? Fungsi & Contoh dalam Bahasa Pemrograman

Tipe-tipe Polymorphism

Secara umum, Polymorphism melibatkan beberapa tipe dalam aspek implementasinya. Berikut penjelasan dari masing-masing tipe dalam konsep Polymorphism tersebut.

Ad Hoc Polymorphism

Tipe Ad Hoc Polymorphism merupakan sistem Polymorphism yang diperkenalkan oleh seseorang bernama Christopher Strachey. Tipe dalam konsep OOP ini melibatkan fungsi yang dapat diaplikasikan dengan berbagai argumen atau parameter berbeda.

Secara keseluruhan, tipe Ad Hoc Polymorphism memungkinkan suatu aksi fungsi diimplementasikan dengan berbeda-beda. Hal ini didasarkan atas argumen atau parameter apa yang dimasukkan pada fungsi tersebut.

Parametric Polymorphism

Tipe Parametric Polymorphism memungkinkan suatu fungsi atau data yang dituliskan secara general maupun umum. Dengan demikian, proses nilai bisa dilakukan secara seragam tanpa memperhatikan tipe yang digunakan. Sebagai contoh, penggunaan Parametric Polymorphism pada Templates dalam bahasa pemrograman C++. Selain itu, sistem ini juga bisa diterapkan dalam Generics pada bahasa pemrograman C# dan Java.

Subtype Polymorphism

Umumnya, tipe Subtype Polymorphism atau Inclusion Polymorphism digunakan saat individu menggunakan Inheritance dan Interface. Tipe ini memungkinkan fungsi dari base class atau interface bisa diimplementasikan dengan sama maupun berbeda dengan base class pada suatu children class.

Row Polymorphism

Tipe Row Polymorphism membawa konsep yang hampir mirip dengan Subtyping. Hanya saja, konsep OOP ini lebih berurusan pada structural types.

Tipe Row Polymorphism bisa digunakan untuk melakukan operasi hanya pada bagian dari record atau data. Misalnya, sebuah fungsi transform2D : {x: Float, y : Float, p}. Fungsi tersebut mentransformasikan titik dua dimensi, dimana p adalah class/type yang memiliki attribute float x dan float y.

Secara keseluruhan, tipe transform 2D Tersebut bisa digunakan pada setiap class atau tipe yang memiliki attribute, seperti float x dan float y. Dengan demikian, individu bisa memiliki titik tiga dimensi atau lebih untuk menggunakan fungsi transform 2D tersebut.

Polytypism

Konsep OOP Polytypism merupakan penggunaan umum yang mirip dengan Polymorphism. Tipe ini bertujuan untuk menyediakan definisi general pada fungsi dengan menggunakan induksi dalam struktur yang di sebuah type. Misalnya, General Haskell yang merupakan bagian dari ekstensi bahasa Haskell.

Contoh Implementasi Polymorphism

Implementasi Polymorphism bisa dilihat dalam contoh sederhana, bagaimana seekor hewan bisa bersuara. Seperti yang diketahui bahwa setiap hewan dapat mengeluarkan suara, baik secara jelas maupun tidak.

Meskipun begitu, pada intinya hewan sudah pasti mengeluarkan suara. Jika dikonsepkan sebagai fungsi, tentu fungsi ini akan diimplementasikan oleh makhluk hidup dalam kategori hewan yang berbeda-beda.

Sebagai contoh, kucing mengimplementasikan suara “Meong”, anjing mengimplementasikan suara “Guk guk”, dan ular mengimplementasikan suara “Hshshshss”. Perbedaan dalam implementasi fungsi tersebut yang akhirnya menjadi salah satu contoh penerapan sederhana dalam Polymorphism.

Baca juga: Apa Itu Parser? Fungsi dan Perannya dalam Bahasa Pemrograman

Penutup

Secara keseluruhan, Polymorphism merupakan salah satu istilah yang harus dipahami oleh programmer pemula. Konsep ini membawa beberapa pilar penting seperti class, object, method, dan inheritance.

Konsep OOP dalam Polymorphism diperkenalkan pada era tahun 1960-an yang akhirnya muncul akhir tahun 1970-an. Tipe dalam konsep ini mencakup lima hal yakni Ad Hoc Polymorphism, Parametric Polymorphism, Subtype Polymorphism, Row Polymorphism, dan Polytypism.

Selain itu, Anda bisa gunakan layanan Cloud VPS IDCloudHost yang andal dan scalable, sehingga proses coding hingga deployment berjalan mulus tanpa hambatan.