Bag. 16 : Pengertian Object Interface Dalam Pemrograman Berbasis Objek
Pengertian Object Interface
Secara sederhana, Object Interface adalah sebuah ‘kontrak’ atau
perjanjian implementasi method. Bagi
class yang menggunakan object interface, class tersebut harus
mengimplementasikan ulang seluruh method yang ada di dalam interface. Dalam
pemrograman objek, penyebutan object interface sering disingkan dengan
‘Interface’ saja.
Jika anda telah mempelajari abstract class, maka interface bisa
dikatakan sebagai bentuk lain dari abstract class. Walaupun secara konsep
teoritis dan tujuan penggunaannya berbeda.
Sama seperti abstract class, interface juga hanya berisi signature
dari method, yakni hanya nama method dan parameternya saja (jika ada). Isi dari
method akan dibuat ulang di dalam class yang menggunakan interface.
Jika kita menganggap abstract class sebagai ‘kerangka’ atau ‘blue
print’ dari class-class lain, maka interface adalah implementasi method yang
harus ‘tersedia’ dalam sebuah objek. Interface tidak bisa disebut sebagai
‘kerangka’ class.
Menyambung analogi kita tentang class komputer, interface bisa
dicontohkan dengan ‘mouse’, atau ‘keyboard’. Di dalam interface mouse, kita
bisa membuat method seperti klik_kiri(), klik_kanan(), dan double_klik(). Jika
class laptop ‘menggunakan’ interface mouse, maka class tersebut harus membuat
ulang method klik_kiri(), klik_kanan(), dan double_klik().
Cara Membuat Interface dalam PHP
Untuk membuat Interface di dalam PHP, kita menulisnya mirip
seperti membuat class, tetapi menggunakan keyword interface, seperti contoh
berikut:
<?php
interface
mouse
{
//...isi dari interface mouse
}
?>
Isi dari interface adalah signature method (nama dan parameter
method):
<?php
interface
mouse{
public function klik_kanan();
public function klik_kiri();
public function scroll();
public function double_klik();
}
?>
Untuk menggunakan method kedalam class, kita menggunakan keyword
implements, seperti contoh berikut:
<?php
interface
mouse{
public function klik_kanan();
public function klik_kiri();
}
class
laptop implements mouse{
//... isi dari class laptop
}
class
pc implements mouse{
//... isi dari class pc
}
?>
Interface adalah ‘perjanjian method’, dimana jika sebuah class
menggunakan interface, maka di dalam class tersebut harus tersedia implementasi
dari method tersebut.
Jika di dalam interface mouse terdapat signature method
klik_kanan(), maka di dalam class laptop yang menggunakan interface mouse,
harus terdapat method klik_kanan(). Berikut contoh kode PHPnya:
<?php
interface
mouse{
public function klik_kanan();
public function klik_kiri();
}
class
laptop implements mouse{
public function klik_kanan(){
return "Klik Kanan...";
}
public function klik_kiri(){
return "Klik Kiri...";
}
}
$laptop_baru
= new laptop();
echo
$laptop_baru->klik_kanan();
//
Klik Kanan...
?>
Apabila kita tidak membuat ulang salah satu method yang ada di
interface, PHP akan mengeluarkan error:
<?php
interface
mouse{
public function klik_kanan();
public function klik_kiri();
}
class
laptop implements mouse{
public function klik_kanan(){
return "Klik Kanan...";
}
}
$laptop_baru
= new laptop();
//
Fatal error: Class laptop contains 1 abstract method
//
and must therefore be declared abstract
//
or implement the remaining methods (mouse::klik_kiri)
?>
Method
Interface Harus di set Sebagai Public
Sesuai dengan tujuannya untuk membuat interface/antar muka bagi
class, method di dalam perancangan interface harus memiliki hak akses public,
atau tidak ditulis sama sekali (dimana PHP akan menganggapnya sebagai public).
Jika kita mengubah hak akses method di dalam interface menjadi private atau
protected, PHP akan mengeluarkan error:
<?php
interface
mouse{
public function klik_kanan();
protected function klik_kiri();
}
class
laptop implements mouse{
public function klik_kanan(){
return "Klik Kanan...";
}
public function klik_kiri(){
return "Klik Kiri...";
}
}
$laptop_baru
= new laptop();
//
Fatal error: Access type for interface
//
method mouse::klik_kiri() must be omitted
?>
Di dalam class yang menggunakan interface, method yang berasal
dari interface juga harus memiliki hak akses public. Kita tidak bisa
mengubahnya menjadi protected atau private.
<?php
interface
mouse{
public function klik_kanan();
public function klik_kiri();
}
class
laptop implements mouse{
public function klik_kanan(){
return "Klik Kanan...";
}
protected function klik_kiri(){
return "Klik Kiri...";
}
}
$laptop_baru
= new laptop();
//
Fatal error: Access level to laptop::klik_kiri()
//
must be public (as in class mouse)
?>
Dalam contoh diatas, saya mengubah hak akses method klik_kiri() menjadi
protected di dalam class laptop. Hal ini akan menghasilkan error.
Interface bisa di Turunkan (Inherit)
Di dalam PHP, interface bisa diturunkan kedalam interface lain.
Prosesnya mirip dengan penurunan class, yakni dengan menggunakan kata kunci
extends:
<?php
interface
mouse{
public function klik_kanan();
public function klik_kiri();
}
interface
mouse_gaming extends mouse{
public function ubah_dpi();
}
class
laptop implements mouse_gaming{
public function klik_kanan(){
return "Klik Kanan...";
}
public function klik_kiri(){
return "Klik Kiri...";
}
public function ubah_dpi(){
return "Ubah settingan DPI
mouse";
}
}
$laptop_baru
= new laptop();
echo
$laptop_baru->ubah_dpi();
//
Ubah settingan DPI mouse
?>
Interface
Bisa Memiliki Konstanta
Dalam PHP, Interface bisa memiliki konstanta . Berikut adalah
contoh penggunaan konstanta di dalam interface:
<?php
interface
mouse{
const JENIS = "Laser Mouse";
public function klik_kanan();
public function klik_kiri();
}
echo
mouse::JENIS;
//
Laser Mouse
?>
Untuk mengakses konstanta dari interface, kita menggunakan
perintah nama_interface::nama_konstanta.
Interface Tidak Bisa Memiliki Method ‘normal’
Salah satu yang membedakan interface dengan abstract class adalah
kita tidak bisa membuat method biasa di dalam Interface. Contoh berikut akan
menghasilkan error:
<?php
interface
mouse{
public function klik_kanan();
public function klik_kiri(){
return "Klik Kiri...";
}
}
class
laptop implements mouse{
public function klik_kanan(){
return "Klik Kanan...";
}
}
$laptop_baru
= new laptop();
//
Fatal error: Interface function
//
mouse::klik_kiri() cannot contain body
?>
Sebuah
Class Bisa Menggunakan Banyak Interface
Perbedaan lain antara Interface dengan Abstract Class adalah:
Sebuah class bisa menggunakan lebih dari 1 interface, sedangkan untuk abstract
class, kita hanya bisa menggunakan 1 abstract class dalam sekali penurunan
class.
Untuk menggunakan lebih dari 1 interface, kita tinggal menuliskan
semua interface setelah keyword implements. Setiap nama interface dipisahkan
dengan tanda koma. Berikut contoh penggunaan 2 buah interface di dalam PHP:
<?php
interface
mouse{
public function klik_kanan();
public function klik_kiri();
}
interface
keyboard{
public function tekan_enter();
}
class
laptop implements mouse, keyboard{
public function klik_kanan(){
return "Klik Kanan...";
}
public function klik_kiri(){
return "Klik Kiri...";
}
public function tekan_enter(){
return "Tekan Tombol Enter...";
}
}
$laptop_baru
= new laptop();
echo
$laptop_baru->tekan_enter();
//
Tekan Tombol Enter...
?>
Dalam contoh diatas saya membuat dua buah interface, yakni mouse
dan keyboard. Kedua interface ini kemudian digunakan oleh class laptop.
Fungsi Interface dalam Pemrograman Objek
Jika anda telah mempelajari abstract class dalam tutorial kita
sebelumnya, sedikit banyak kita bisa memahami fungsi interface jika
dibandingkan dengan fungsi abstract class. Kedua konsep ini sering membuat
bingung karena mirip dalam implementasinya.

Post a Comment