#1 Belajar Konsep OOP (Object Oriented Programming) : Polymorphism dan Contoh Penerapannya dalam Bahasa Kotlin
Hello gaes.., ini merupakan artikel kedua yang saya tulis di medium. Sebelum masuk ke materi, saya ingin menyampaikan terlebih dahulu alasan mengapa saya ingin menulis artikel tentang OOP yang ini mungkin juga akan menjadi salah satu alasan mengapa anda harus belajar dasar OOP lagi. Saya rasa semua Software Engineer wajib menguasai konsep ini.
Jadi saya pernah mendapat undangan interview disuatu startup unicorn di Indonesia dan salah satu dari banyak pertanyaan yang dilontarkan adalah konsep Polymorphism di OOP. Sebenarnya ini pertanyaan yang mudah, tetapi karena saya waktu itu tidak ada persiapan sama sekali jadi jawaban saya ya apa adanya. Disitulah saya merasa malu mengaku sebagai software engineer kok ditanya konsep Polymorphism kok tidak bisa ??? itulah yang mungkin interviewer pikirkan heheh. Inilah yang menurut saya yang menjadikan belajar Dasar/Konsep kembali itu penting, seringkali konsep itulah yang akan menentukan apa teknologi terbaik yang sebaiknya kita gunakan. Belajar teknologi terbaru itu penting, tetapi alangkah lebih baik kita kuasai dulu konsep konsep dasar yang ada kemudian baru kita belajar teknologi terbaru.
Oke… Lanjut kemateri yaa… Sebelum kita kenalan dengan Polymorhism alangkah lebih baik kita kenalan dengan OOP terlebih dahulu.
OOP (Object Oriented Programming) merupakan paradigma pemrograman dimana kita menggunakan objek di bahasa pemrograman. Sebagi contoh kita memliki objek Pria dimana setiap pria memiliki nama, umur, tinggi badan. pria juga bisa berjalan, bisa makan, bisa bekerja dll. Ada beberapa konsep yang terdapat di OOP diantaranya ada Polymorphism, Inheritance, Encapsulation, Abstraction, Class dan Object.
Kali ini saya akan mencoba menjelaskan sedikit tentang konsep Polymorphism pada OOP.
Jadi pada dasarnya Polymorphism berasal dari kata Poly yang berarti banyak dan morphism yang berarti bentuk. Menurut pernyataan tersebut berarti polymorphism diartikan banyak bentuk. Sebagai contoh kita telah membuat objek Pria diamana Pria juga memiliki banyak bentuk misalnya Pria bisa menjadi seorang Mahasiswa, Karyawan, Ayah dll.
Inilah yang disebut dengan polymorphism consept dalam pemrograman berorientasi objek. Untuk lebih jelasnya saya sudah membuatkan contoh kodingan yang menerapkan konsep Polymorphism.
Apabila anda masih bingung jangan khawatir yaa berarti anda memang benar benar sedang belajar heheh. Anda bisa mengulang membaca kembali konsepnya dan hubungkan dengan kodingan sampai bisa mengerti yang dimaksud seperti apa.
Oke lanjut….
Disisi lain Polymorhism juga bisa diartikan sebagi metode untuk membedakan suatu entitas dengan nama yang sama agar menjadi efektif.
Dalam mengefektifkan suatu nama diOOP disini ada dua istilah yang harus anda ketahui yaitu Overloading dan Overriding.
- Overloading : Kita membuat suatu fungsi dengan nama yang sama tetapi berbeda diparameternya. Entah berbeda di type parameter, jumlah parameter ataupun letak parameternya.
berikut ini merupakan contoh kodingan yang menerapkan Overloading.
Hasil Output dari program diatas adalah
7
10
8.25
5.5
Dari kode diatas dapat kita simpulkan secara otomatis kotlin akan mengetahui fungsi yang dijalankannya meskipun memiliki nama yang sama. dari mana bisa tahu? tentu dari parameternya entah itu jumlah parameter, tipe parameter maupun letak parameter. Biasanya metode ini berjalan pada saat melakukan compile.
2. Overriding: Kita membuat fungsi dengan nama yang sama di parrent class dan child class. Sehingga bisa jadi hasil dari fungsi yang yang diimplementasikan bisa berbeda dikelas turunannya.
Sebagai contoh saya punya objek Animal dimana bisa memliki beberapa bentuk seperti Ayam, Kambing, Kucing dll. Misalnya pada Animal itu dia bisa makan. ayam, kambing dan kucing juga sama sama bisa makan tetapi mungkin bisa jadi cara makannya atau makan dia berbeda satu sama lain.
Berikut ini merupakan contoh kodingan yang menerapkan Overriding:
Hasil Keluaranya adalah
Binatang sedang makan!
Kucing makan wiskas!Ayam makan konsentrat!
Hmmmmm… kenapa hasil keluaran di kucing dan ayam berbeda yaa? Jika dilihat pada class Kucing di fungsi makan() dia memangil juga fungsi super.makan() sehingga fungsi makan() pada parrent class akan dijalankan juga.
override fun makan() {
super.makan()
println("Kucing makan wiskas!")
}
Sebalikya pada class Ayam di fungsi makan() dia tidak memangil fungsi super.makan() sehingga dia tidak memangil fungsi makan() yang ada pada parent classnya dan cenderung akan menggatikan fungsi tersebut. Biasanya metode ini berjalan pada runtime / saat program telah dijalankan.
override fun makan() {
println("Ayam makan konsentrat!")
}
Kesimpulannya adalah Polymorhism dapat diartikan suatu entitas yang bisa memiliki banyak bentuk / metode untuk membedakan suatu entitas dengan nama yang sama agar menjadi efektif. Polymorhism terdapat 2 jenis yaitu:
- overload : nama fungsi sama tetapi memili perbedaan di parameternya
- Override: nama fungsi sama yang terdapat di kelasparent (utama) dan kelas child (implementasinya)
Mungkin itu saja yang bisa saya sampaikan pada artikel kali ini apabila ada yang ingin didiskusikan atau ada yang masih kurang dalam penjelaasan saya anda bisa menuliskan dikolom komentar yaa. Pada artikel berikutnya saya ingin membahas tentang konsep inheritance (pewarisan sifat) pada OOP.
Semoga bermanfaat ;)
Sumber:
- website geeksforgeeks.org
- youtube channel edureka!
- youtube channel The Coding Train