Apa itu polymorphism?

Polymorphism (Polimorfisme) adalah konsep populer dalam pemrograman berorientasi objek (OOP), yang merujuk pada gagasan bahwa sebuah entitas dalam kode seperti variabel, fungsi, atau objek bisa punya lebih dari satu bentuk. Kata polymorphism berasal dari bahasa Yunani yang berarti “memiliki banyak bentuk.” Selain dalam pemrograman komputer, ide polimorfisme ini juga ada di dunia nyata seperti dalam biologi, kimia, dan pengembangan obat.

Polimorfisme adalah salah satu konsep paling penting dalam OOP. Ini menggambarkan kemampuan suatu entitas untuk memiliki atau ditampilkan dalam lebih dari satu bentuk. Bentuk-bentuk yang berbeda ini muncul karena entitas tersebut bisa diberikan makna yang berbeda dan digunakan dalam berbagai cara di berbagai konteks.

Banyak bahasa pemrograman yang mendukung atau memungkinkan polimorfisme, termasuk Java, Ruby, C++, PHP, dan Python. Dalam bahasa-bahasa ini, polimorfisme memungkinkan objek class yang berada dalam struktur tree yang sama untuk berperilaku berbeda, walaupun punya fungsi dengan nama yang sama. Misalnya dalam PHP, jika B adalah turunan dari A dan sebuah fungsi bisa menerima A sebagai parameter, maka fungsi itu juga bisa menerima B.

Variabel dan fungsi bernama dalam polimorfisme dan OOP

Saat polimorfisme didukung, sebuah variabel dengan nama tertentu bisa punya bentuk yang berbeda. Program dapat menentukan bentuk mana yang akan digunakan saat waktu eksekusi.

Dalam program yang mendukung polimorfisme, sebuah fungsi bernama juga bisa bervariasi tergantung dari parameter yang diberikan. Misalnya, jika diberikan variabel bertipe integer, maka fungsi akan mencari kecocokan dengan daftar nomor karyawan. Tapi jika parameter berupa string teks, fungsi akan mencari kecocokan dengan daftar nama. Dalam dua kasus ini, fungsi tersebut tetap punya nama yang sama.

Sebagai contoh, variabel bernama `USERID` bisa saja bertipe integer (bilangan bulat) atau string. Keduanya bisa didukung karena program memungkinkan pengguna untuk memasukkan ID, yang bisa berupa angka atau nama. Polimorfisme memberikan kemampuan ke program untuk membedakan input tersebut, sehingga keduanya bisa dikenali dan diproses.

Jenis-jenis polimorfisme

Dalam pemrograman komputer, ada dua jenis utama polimorfisme:

  • Polimorfisme waktu kompilasi. Juga dikenal sebagai polimorfisme statis, compile time polymorphism umum ditemukan di bahasa OOP seperti Java. Ini menggunakan method overloading untuk membuat beberapa metode dengan nama yang sama dalam satu class, tapi dengan jumlah parameter berbeda. Bisa juga dengan parameter yang punya tipe data berbeda.
  • Polimorfisme waktu runtime. Juga dikenal sebagai polimorfisme dinamis, runtime polymorphism menggunakan method overriding untuk membolehkan class anak mendefinisikan ulang metode milik class induk. Jenis polimorfisme ini sering dikaitkan dengan upcasting, yaitu saat class induk menunjuk ke instance milik class anak.

Polimorfisme juga bisa diimplementasikan dengan cara lain dalam OOP, termasuk:

  • Polimorfisme ad-hoc. Fungsi yang diterapkan ke argumen berbeda dan beroperasi secara berbeda tergantung tipe argumen tersebut.
  • Polimorfisme parametrik. Programmer bisa menulis fungsi generik yang memperlakukan nilai-nilai dalam data set dengan cara yang sama, tanpa memperdulikan tipe datanya.
  • Polimorfisme subtyping. Programmer bisa membuat beberapa fungsi atau subrutin yang bisa beroperasi pada class supertype maupun subtypenya.
  • Polimorfisme baris (row polymorphism). Programmer bisa membuat program yang hanya beroperasi pada bagian tertentu dari record database, misalnya satu baris saja.
  • Politypism. Programmer menggunakan ini untuk membuat algoritma di mana tipe bisa disediakan sebagai parameter saat algoritma diinstansiasi.

Polimorfisme dalam C++

Bahasa pemrograman C++ memberikan contoh yang bagus tentang polimorfisme. Dalam bahasa ini, tanda plus (+) adalah sebuah operator sekaligus fungsi bernama. Tanda ini bisa digunakan untuk menjumlahkan dua objek, dan juga bisa melakukan pencarian Boolean. Dalam konteks kedua ini, tanda + berarti logika “dan”.

Menjumlahkan objek adalah bentuk paling umum dari operasi tanda +. Dalam pencarian Boolean, kata-kata yang dipisahkan dengan operator + harus ada semuanya supaya hasil seperti kutipan bisa ditampilkan. Dalam konteks lain lagi, tanda + bisa digunakan untuk menggabungkan dua objek atau string huruf.

Lebih jauh lagi, operator yang ada bisa digabungkan dengan operator lain untuk menghasilkan makna yang berbeda. Dalam C++, operator + bisa digabungkan menjadi ++. Ketika ++ mengikuti sebuah variabel, artinya adalah “tambahkan nilai ini dengan 1.”

Pada akhirnya, makna sebuah operator ditentukan dalam definisi class di dalam bahasa tersebut. Karena programmer bisa membuat class sendiri, maka mereka juga bisa menentukan bagaimana operator bekerja terhadap objek dalam class itu. Dengan kata lain, mereka bisa seperti “mendefinisikan ulang” bahasa tersebut untuk disesuaikan dengan kebutuhan atau tujuan spesifik. Nah, hal ini bisa dilakukan karena adanya polimorfisme.

Pentingnya polimorfisme dalam OOP

Polimorfisme memungkinkan programmer untuk melakukan satu aksi dalam berbagai cara, serta mendefinisikan banyak bentuk dari satu objek, variabel, atau metode. Ini juga meningkatkan keterbacaan dan skalabilitas kode karena kode lama bisa digunakan ulang dan dikembangkan sesuai kebutuhan setelah ditulis, diuji, dan dijalankan. Penggunaan ulang kode ini juga menghemat banyak waktu dan mempercepat proses pengembangan.

Keuntungan lain dari polimorfisme adalah mempermudah pencarian variabel dan proses eksekusi, serta proses debugging kode. Polimorfisme sangat berguna saat program butuh satu nama metode saja untuk secara otomatis memanggil metode yang tepat tergantung class-nya. Selain itu, polimorfisme juga memungkinkan programmer untuk menggantikan pernyataan kondisional dengan switch statement yang bisa menentukan bagian kode mana yang dijalankan berdasarkan parameter pertama yang diterima.

Area lain aplikasi polimorfisme

Selain dalam pemrograman komputer, polimorfisme juga ada di berbagai bidang dunia nyata lainnya.

Machine learning

Dalam machine learning, polymorphism bisa berarti tipe data “apa saja” (*any*). Artinya, sebuah fungsi bisa memproses sebuah list tanpa peduli jenis data apa pun yang ada di dalamnya. Misalnya, kalau sebuah model punya fungsi yang hanya menentukan panjang sebuah list, maka jenis data di dalam list tersebut nggak akan berpengaruh. List-nya tetap bisa diproses dan menghasilkan output.

Biologi

Dalam bidang biologi dan studi genetik, polymorphism merujuk pada situasi di mana dua atau lebih kemungkinan dari sebuah sifat (trait) ditemukan dalam satu gen. Contohnya, jaguar dan cheetah punya warna kulit yang dua nada karena mereka memiliki *morph* atau variasi sifat warna kulit yang berbeda. Karena spesies hewan ini punya lebih dari satu bentuk dari suatu sifat, maka mereka dikatakan menunjukkan *polymorphism*.

Kimia dan ilmu material

Polymorphism juga ditemukan dalam kimia dan ilmu material, dan punya peran penting dalam berbagai bidang, seperti agrokimia, obat-obatan, makanan, pigmen, bahkan bahan peledak.

Dalam semua bidang ini, polymorphism merujuk pada gagasan bahwa suatu material atau zat kimia — bisa berupa elemen atau senyawa — bisa eksis dalam lebih dari satu bentuk kristal. Contohnya, karbon adalah salah satu contoh polymorph paling terkenal. Karbon bisa muncul sebagai grafit atau berlian, yang membuatnya bernilai tinggi dalam pembuatan berbagai benda, seperti pensil, baterai, inti reaktor nuklir, hingga perhiasan.

Farmasi

Polymorphism juga merupakan konsep umum dan penting dalam dunia farmasi dan pengembangan obat. Konsep ini memungkinkan perusahaan farmasi mengembangkan bentuk *polymorph* dari suatu obat yang lebih efektif dan lebih aman untuk dikonsumsi manusia dibandingkan *polymorph* lainnya.

Bukan hal yang aneh kalau suatu obat mendapatkan paten dan/atau persetujuan regulasi hanya untuk satu bentuk *polymorph*-nya, tapi tidak untuk bentuk lainnya. Obat analgesik acetaminophen, obat anti-inflamasi aspirin, obat penurun kolesterol atorvastatin, dan obat HIV ritonavir adalah contoh-contoh obat yang eksis dalam bentuk polymorphic.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *