Abstract Class dan Object Interfaces yang kita pelajari pada 2 panduan sebelum ini adalah sebuah implementasi dari konsep pemrograman dengan objek yang dinamakan Polimorfisme. Pada panduan OOP PHP kali ini, kita akan membahas pengertian polimorfisme dalam pemrograman objek PHP, disertai contoh penggunaannya.
Pengertian Polimorfisme
Dari segi bahasa, Polimorfisme (bahasa inggris: Polymorphism) berasal dari dua kata bahasa latin yakni poly dan morph. Poly berarti banyak, dan morph berarti format. Polimorfisme berarti banyak format (wikipedia).
Di pada pemrograman objek, polimorfisme ialah konsep dimana terdapat banyak class yang mempunyai signature method yang sama. Implementasi dari method-method tersebut diserahkan kepada tiap class, akan tetapi cara pemanggilan method mesti sama. Agar kita dapat ‘memaksakan’ signature method yang sama di banyak class, class tersebut mesti diturunkan dari sebuah abstract class atau object interface.
Selaku contoh, berikut ialah kode PHP yang mengimplementasikan konsep polimorfisme:
1 |
<?php<br/>// bikin abstract class<br/>abstract class komputer{<br/> // bikin abstract method<br/> abstract public function booting_os();<br/>}<br/> <br/>class laptop extends komputer{<br/> public function booting_os(){<br/> return Proses Booting Aplikasi Operasi Laptop;<br/> }<br/>}<br/> <br/>class komputer extends komputer{<br/> public function booting_os(){<br/> return Proses Booting Aplikasi Operasi PC;<br/> }<br/>}<br/> <br/>class chromebook extends komputer{<br/>public function booting_os(){<br/> return Proses Booting Aplikasi Operasi Chromebook;<br/> }<br/>}<br/> <br/> <br/>// bikin objek dari class diatas<br/>$laptop_baru = new laptop();<br/>$pc_baru = new komputer();<br/>$chromebook_baru = new chromebook();<br/> <br/>// bikin guna bagi memproses objek<br/>function booting_os_komputer($objek_komputer){<br/> return $objek_komputer->booting_os();<br/>}<br/> <br/>// jalankan guna<br/>echo booting_os_komputer($laptop_baru);<br/>echo <br />;<br/>echo booting_os_komputer($pc_baru);<br/>echo <br />;<br/>echo booting_os_komputer($chromebook_baru);<br/>?> |
Contoh kode diatas lumayan panjang, namun kalau kamu mengikuti panduan OOP PHP sebelumnya (mengenai abstract class), karenanya kode diatas akan dapat dimengerti dengan bagus.
Di awal program, saya membangun abstract class komputer yang kemudian diturunkan kedalam 3 class lain, yakni: class laptop, class komputer dan class chromebook. Abstract class komputer mempunyai abstract method booting_os(), yang mesti diimplementasikan ulang di tiap class yang diturunkan dari class komputer. Setelah pendefenisian class, saya membangun 3 objek dari masing-masing class.
Perhatikan bahwa setelah perancangan objek dari masing-masing class, saya membangun guna booting_os_komputer(). Manfaat ini berperan bagi memanggil method-method dari setiap class.
Konsep polimorfisme dari contoh diatas ialah, guna booting_os_komputer() akan selalu berhasil dijalankan, dalam kurun waktu argumen yang diberikan berasal dari class yang diturunkan dari class abstract komputer.
Peran Abstract Class dan Interface pada Polimorfisme
Bagus abstract class maupun interface dapat digunakan bagi membangun banyak class dengan method yang sama. Pun keduanya sering digunakan secara bersama-sama.
Berikut ialah revisi kode program kita sebelumnya dengan menggunakan abstract class dan interface:
1 |
<?php<br/>// bikin abstract class<br/>abstract class komputer{<br/> // bikin abstract method<br/> abstract public function booting_os();<br/>}<br/> <br/>interface mouse{<br/> public function double_klik();<br/>}<br/> <br/>class laptop extends komputer implements mouse{<br/> public function booting_os(){<br/> return Proses Booting Aplikasi Operasi Laptop;<br/> }<br/> public function double_klik(){<br/> return Double Klik Mouse Laptop;<br/> }<br/>}<br/> <br/>class komputer extends komputer implements mouse{<br/> public function booting_os(){<br/> return Proses Booting Aplikasi Operasi PC;<br/> }<br/> public function double_klik(){<br/> return Double Klik Mouse PC;<br/> }<br/>}<br/> <br/>class chromebook extends komputer implements mouse{<br/> public function booting_os(){<br/> return Proses Booting Aplikasi Operasi Chromebook;<br/> }<br/> public function double_klik(){<br/> return Double Klik Mouse Chromebook;<br/> }<br/>}<br/> <br/>// bikin objek dari class diatas<br/>$laptop_baru = new laptop();<br/>$pc_baru = new komputer();<br/>$chromebook_baru = new chromebook();<br/> <br/>// bikin guna bagi memproses objek<br/>function booting_os_komputer($objek_komputer){<br/> return $objek_komputer->booting_os();<br/>}<br/> <br/>function double_klik_komputer($objek_komputer){<br/> return $objek_komputer->double_klik();<br/>}<br/> <br/>// jalankan guna<br/>echo booting_os_komputer($laptop_baru);<br/>echo <br />;<br/>echo double_klik_komputer($laptop_baru);<br/>echo <br />;<br/>echo <br />;<br/> <br/>echo booting_os_komputer($pc_baru);<br/>echo <br />;<br/>echo double_klik_komputer($pc_baru);<br/>echo <br />;<br/>echo <br />;<br/> <br/>echo booting_os_komputer($chromebook_baru);<br/>echo <br />;<br/>echo double_klik_komputer($chromebook_baru);<br/>?> |
Di kode program diatas, saya membangun 1 abstract class: komputer, dan 1 interface: mouse. Keduanya kemudian di turunkan kepada 3 class: class laptop, class komputer, dan class chromebook.
Dalam kurun waktu sebuah class diturunkan dari abstract class komputer, dan menggunakan interface mouse, guna booting_os_komputer() dan guna double_klik_komputer() akan selalu berhasil di jalankan, terlepas dari apapun nama objek dan implementasi method yang digunakan.
Konsep polimorfisme yang kita bahas pada panduan ini bertujuan bagi membangun struktur pola dari class dan turunannya. Lebih jauh lagi, polimorfisme menekankan alur kode program yang terorganisir bagi mengurangi adanya perulangan kode program.
Sumber https://www.duniailkom.com/