Language

Pengantar

Bagi mahasiswa yang mengambil jurusan yang berkaitan dengan komputer mungkin tidak asing dengan istilah polymorphisme. Pada pemrograman berorientasi objek, konsep polymorphisme merupakan konsep penting yang harus dipahami. Pada artikel kali ini kita akan membahas sedikit mengenai konsep polymorphisme yang mana semoga dapat memberikan tambahan wawasan dan pengetahuan khususnya di bidang pemrograman berorientasi objek. Baiklah, pertama sekali ada baiknya kita pahami dulu maksud dari polymorphisme.

Konsep Polymorphisme

Secara sederhana, polymorphisme dapat diartikan dengan dapat memiliki banyak bentuk. Dalam bidang pemrograman, bentuk disini dapat kita korelasikan dengan data atau proses yang dimiliki oleh sebuah objek. Dengan menggunakan konsep polymorphisme kita dapat menghasilkan beberapa objek yang berbeda dari kelas yang sama.

Sebagai contoh sederhana, sebuah perusahaan memiliki karyawan yang mana terbagi menjadi dua kategori yaitu karyawan tetap dan karyawan tidak tetap. Pada pemrograman konvensional, kita dapat membuat dua buah class terpisah untuk masing - masing kategori pegawai. Jika terdapat data atau atribut yang sama yang dimiliki oleh kedua kategori karyawan seperti ID karyawan, nama, alamat, dsb, maka atribut - atribut tersebut harus dibuat pada masing - masing class.

Hal ini tentu saja akan menyebabkan pemborosan dan tidak efisien. Belum lagi jika terdapat method atau proses yang sama antara kedua kategori tersebut, maka metod atau proses tersebut harus dibuat di masing - masing class. Untuk meningkatkan efisiensi penggunaan objek yang berbeda namun masih dalam ruang lingkup class yang sama seperti kasus inilah maka muncullah konsep polymorphisme.

Pada pemrograman berorientasi objek, polymorphisme dapat diterapkan dengan dua cara yaitu :

  1. Inheritance atau pewarisan
  2. Interface
Polymorphisme Inheritance

Dalam inheritance, kita dapat mengambil sifat dari satu kelas ke kelas lainnya. Polymorphism dengan inheritance mengacu pada kemampuan objek untuk memperlihatkan perilaku yang berbeda sesuai dengan kelas turunan atau kelas yang mewarisi sifat dari kelas induknya. Sebagai contoh dari kasus kategori karyawan diatas, kita dapat mengaplikasikan polymorphisme sebagai berikut :

Pada contoh diatas, kita menyediakan sebuah class karyawan yang memiliki atribut - atribut umum yang dimiliki oleh semua kategori karyawan beserta method nya. Menggunakan class karyawan sebagai dasarnya, kemudian kita membuat class untuk masing - masing kategori karyawan yaitu class KarTetap dan class KarTidakTetap yang mewarisi class Karyawan sehingga atribut umum karyawan secara otomatis dimiliki oleh class KarTetap dan class KarTidakTetap yang kemudian masing - masing class cukup melakukan override pada method GaPok untuk dapat menghasilkan nilai gaji pokok untuk masing - masing kategori karyawan.

Cara diatas lebih efisien dibandingkan jika kita membuat class untuk masing - masing kategori secara terpisah. Jika dimasa yang akan datang terdapat penambahan data atribut atau method untuk karyawan atau penambahan jenis kategori karyawan maka perubahan yang dilakukan akan jauh lebih sederhana dibandingkan jika harus merubah semua class kategori karyawan satu per satu.

 

Polymorphisme Interface

Polymorphism dengan interface memungkinkan kita untuk membuat kelas-kelas yang dapat digunakan secara umum, tanpa harus bergantung pada implementasi spesifik dari kelas-kelas tersebut. Interface menyediakan sebuah kerangka yang harus diikuti oleh kelas-kelas yang mengimplementasikannya, sehingga membuat kelas-kelas tersebut memiliki perilaku atau method yang sama walaupun isi atau proses yang dimiliki oleh method - method tersebut boleh saja berbeda.

interface berbeda dengan inheritance, dimana interface menyediakan abstraksi untuk konstanta dan method yang dapat digunakan oleh class lainnya. Konsep interface akan kita bahas lebih dalam pada artikel lainnya. Pada contoh diatas, objek Budi dan Andi merupakan hasil dari polymorphisme dimana berasal dari class yang sama namun memiliki bentuk yang berbeda, dimana pada contoh diatas perbedaan bentuk yang dapat kita lihat terletak dari isi proses dari method GaPok().

Penutup

Setelah kita membahas konsep dari polymorphisme diatas maka sebenarnya konsep ini tidaklah serumit yang dibayangkan, hanya saja terkadang sulit untuk mengilustrasikannya dalam kasus nyata. Adapun keuntungan dari aplikasi polymorphism antara lain:

  1. Mengurangi kode yang duplikat: Dengan menggunakan polimorfisme, kita dapat mengurangi kode yang duplikat di dalam aplikasi. Misalnya, dalam kasus inheritance, kita dapat mewarisi sifat dari satu kelas ke kelas lainnya sehingga kita tidak perlu menuliskan kembali kode yang sama di setiap kelas.

  2. Meningkatkan fleksibilitas: Dengan polimorfisme, kita dapat membuat kelas-kelas yang dapat digunakan secara umum dan dapat diimplementasikan dalam berbagai situasi yang berbeda.

  3. Meningkatkan maintainability: Dalam aplikasi yang menggunakan polimorfisme, perubahan pada kelas-kelas yang mendasar dapat dilakukan tanpa harus mempengaruhi kelas-kelas turunannya. Hal ini dapat memudahkan proses pemeliharaan aplikasi.

Namun, ada juga beberapa kerugian dari penggunaan polimorfisme, di antaranya:

  1. Memerlukan pengaturan yang kompleks: Dalam aplikasi yang kompleks, penggunaan polimorfisme dapat memerlukan pengaturan yang kompleks dan sulit untuk dipahami. Hal ini dapat meningkatkan kompleksitas aplikasi dan membuatnya sulit untuk diatur dan dipelihara.

  2. Performa yang lebih lambat: Dalam beberapa kasus, penggunaan polimorfisme dapat mengakibatkan penurunan performa aplikasi. Hal ini terjadi karena polimorfisme memerlukan mekanisme pemrosesan yang lebih kompleks dibandingkan dengan metode pemrosesan yang sederhana.

  3. Kesulitan dalam debugging: Dalam aplikasi yang menggunakan polimorfisme, debugging dapat menjadi lebih sulit karena objek dapat memiliki beberapa bentuk dan perilaku yang berbeda. Hal ini dapat membuat kesulitan dalam menemukan dan memperbaiki kesalahan yang terjadi.

Dalam penggunaan polimorfisme, kita perlu mempertimbangkan keuntungan dan kerugian yang terkait dengan aplikasi yang sedang kita kembangkan, sehingga kita dapat memilih pendekatan yang paling sesuai untuk memenuhi kebutuhan aplikasi tersebut. Sekian dulu artikel kali ini, semoga bermanfaat bagi kita semua 😉

No comments

Leave your comment

In reply to Some User
Related Articles
  • Caesar Chiper
    Caesar Chiper
    Information
    1 year(s) 5 month(s) 4 day(s) ago
    Caesar Cipher adalah salah satu metode enkripsi sederhana yang digunakan untuk mengamankan pesan rahasia. Metode ini ditemukan oleh Julius Caesar pada abad ke-1 SM dan masih digunakan hingga saat ini.
  • Sekilas Kriptografi
    Sekilas Kriptografi
    Information
    1 year(s) 5 month(s) 28 day(s) ago
    Kriptografi adalah ilmu dan seni melindungi informasi dengan mengubah teks asli menjadi bentuk yang tidak dapat dibaca atau dimengerti oleh pihak yang tidak berwenang. Tujuan utama kriptografi adalah menjaga kerahasiaan dan keamanan informasi, serta memastikan bahwa hanya orang yang berhak memiliki akses ke informasi tersebut.
  • Enkapsulasi Pada Object Oriented Programming
    Enkapsulasi Pada Object Oriented Programming
    Information
    1 year(s) 6 month(s) 4 day(s) ago
    Enkapsulasi adalah konsep dalam pemrograman berorientasi objek yang memungkinkan penempatan data dan fungsi yang bekerja pada data tersebut di dalam sebuah kelas. Dalam konsep enkapsulasi, data dan fungsi yang berkaitan dengan data tersebut dibungkus atau dikapsulasi dalam sebuah objek atau kelas sehingga data tidak dapat diakses atau dimodifikasi secara langsung dari luar kelas tersebut.
  • Pengantar Pemrograman Berorientasi Objek
    Pengantar Pemrograman Berorientasi Objek
    Information
    2 year(s) 6 month(s) 12 day(s) ago
    Pemrograman Berorientasi Objek memiliki banyak definisi. Pemrograman berorientasi objek dapat dikatakan sebagai paradigma atau mekanisme yang digunakan dalam pemrograman yang didasarkan oleh konsep objek dan kelas. Pada definisi lain, pemrograman berorientasi objek dapat dikatakan sebagai model pemrograman yang membangun perangkat lunak menggunakan pendekatan data atau objek dibandingkan dengan fungsi dan logika. Kedua definisi tersebut secara konsep menyatakan bahwa pemrograman berorientasi objek merupakan pemrograman yang berfokus pada struktur data dalam bentuk objek.
  • Video Single Linkage Clustering
    Video Single Linkage Clustering
    Information
    2 year(s) 6 month(s) 14 day(s) ago
    Single Linkage Clustering merupakan salah satu metode clustering yang tergolong kedalam agglomerative clustering, dimana proses clustering diawali dengan setiap individu sebagai cluster awal yang kemudian seiring dengan berjalannya proses clustering akan membentuk k buah cluster yang di-inginkan.
  • Video Euclidean Distance
    Video Euclidean Distance
    Information
    2 year(s) 6 month(s) 14 day(s) ago
    Euclidean Distance merupakan formula untuk menghitung jarak antara dua titik atau objek berdasarkan nilai fitur yang dimiliki oleh kedua titik atau objek tersebut. Pada video ini akan disimulasikan bagaimana jarak euclidean distance dihitung dan digunakan sebagai nilai yang menyatakan ketidaksamaan antar objek sehingga dapat digunakan dalam proses pengelompokkan ataupun klasifikasi.