Bag. 17 : Pengertian Polimorfisme dalam Pemrograman Objek PHP
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 bentuk. Polimorfisme berarti banyak bentuk (wikipedia).
Di dalam pemrograman objek, polimorfisme adalah konsep dimana terdapat banyak class yang memiliki signature method yang sama. Implementasi dari method-method tersebut diserahkan kepada tiap class, akan tetapi cara pemanggilan method harus sama. Agar kita dapat ‘memaksakan’ signature method yang sama pada banyak class, class tersebut harus diturunkan dari sebuah abstract class atau object interface.
Sebagai contoh, berikut adalah kode PHP yang mengimplementasikan konsep polimorfisme:
<?php
//
buat abstract class
abstract
class komputer{
// buat abstract method
abstract public function booting_os();
}
class
laptop extends komputer{
public function booting_os(){
return "Proses Booting Sistem Operasi
Laptop";
}
}
class
pc extends komputer{
public function booting_os(){
return "Proses Booting Sistem Operasi
PC";
}
}
class
chromebook extends komputer{
public
function booting_os(){
return "Proses Booting Sistem Operasi
Chromebook";
}
}
//
buat objek dari class diatas
$laptop_baru
= new laptop();
$pc_baru
= new pc();
$chromebook_baru
= new chromebook();
//
buat fungsi untuk memproses objek
function
booting_os_komputer($objek_komputer){
return $objek_komputer->booting_os();
}
//
jalankan fungsi
echo
booting_os_komputer($laptop_baru);
echo
"<br />";
echo
booting_os_komputer($pc_baru);
echo
"<br />";
echo
booting_os_komputer($chromebook_baru);
?>
Contoh kode diatas cukup panjang, namun jika anda mengikuti
tutorial OOP PHP sebelumnya (tentang abstract class), maka kode diatas akan
bisa dipahami dengan baik.
Pada awal program, saya membuat abstract class komputer yang kemudian diturunkan kedalam 3 class lain, yakni: class laptop, class pc dan class chromebook. Abstract class komputer memiliki abstract method booting_os(), yang harus diimplementasikan ulang pada tiap class yang diturunkan dari class komputer. Setelah pendefenisian class, saya membuat 3 objek dari masing-masing class.
Perhatikan bahwa setelah pembuatan objek dari masing-masing class, saya membuat fungsi booting_os_komputer(). Fungsi ini berperan untuk memanggil method-method dari setiap class.
Konsep polimorfisme dari contoh diatas adalah, fungsi
booting_os_komputer() akan selalu berhasil dijalankan, selama argumen yang
diberikan berasal dari class yang diturunkan dari class abstract komputer.
Peran Abstract Class dan Interface dalam Polimorfisme
Baik abstract class maupun interface bisa digunakan untuk membuat banyak class dengan method yang sama. Bahkan keduanya sering digunakan secara bersama-sama.
Berikut adalah revisi kode program kita sebelumnya dengan
menggunakan abstract class dan interface:
<?php
//
buat abstract class
abstract
class komputer{
// buat abstract method
abstract public function booting_os();
}
interface
mouse{
public function double_klik();
}
class
laptop extends komputer implements mouse{
public function booting_os(){
return "Proses Booting Sistem Operasi
Laptop";
}
public function double_klik(){
return "Double Klik Mouse
Laptop";
}
}
class
pc extends komputer implements mouse{
public function booting_os(){
return "Proses Booting Sistem Operasi
PC";
}
public function double_klik(){
return "Double Klik Mouse PC";
}
}
class
chromebook extends komputer implements mouse{
public function booting_os(){
return "Proses Booting Sistem Operasi
Chromebook";
}
public function double_klik(){
return "Double Klik Mouse
Chromebook";
}
}
//
buat objek dari class diatas
$laptop_baru
= new laptop();
$pc_baru
= new pc();
$chromebook_baru
= new chromebook();
//
buat fungsi untuk memproses objek
function
booting_os_komputer($objek_komputer){
return $objek_komputer->booting_os();
}
function
double_klik_komputer($objek_komputer){
return $objek_komputer->double_klik();
}
//
jalankan fungsi
echo
booting_os_komputer($laptop_baru);
echo
"<br />";
echo
double_klik_komputer($laptop_baru);
echo
"<br />";
echo
"<br />";
echo
booting_os_komputer($pc_baru);
echo
"<br />";
echo
double_klik_komputer($pc_baru);
echo
"<br />";
echo
"<br />";
echo
booting_os_komputer($chromebook_baru);
echo
"<br />";
echo
double_klik_komputer($chromebook_baru);
?>
Pada kode program diatas, saya membuat 1 abstract class: komputer, dan 1 interface: mouse. Keduanya kemudian di turunkan kepada 3 class: class laptop, class pc, dan class chromebook.
Selama sebuah class diturunkan dari abstract class komputer, dan menggunakan interface mouse, fungsi booting_os_komputer() dan fungsi double_klik_komputer() akan selalu berhasil di jalankan, terlepas dari apapun nama objek dan implementasi method yang digunakan.
Konsep polimorfisme yang kita bahas dalam tutorial ini bertujuan untuk membuat struktur pola dari class dan turunannya. Lebih jauh lagi, polimorfisme menekankan alur kode program yang terorganisir untuk mengurangi adanya perulangan kode program.
Post a Comment