Kamis, 02 Juni 2022

3.8.3 MEMBUAT KODE PROGRAM APLIKASI BERORIENTASI OBYEK YANG MENERAPKAN INTERFACE


Cara Membuat Interface dalam PHP

Untuk membuat Interface di dalam PHP, kita menulisnya mirip seperti membuat class, tetapi menggunakan keyword interface, seperti contoh berikut:

1
2
3
4
5
6
<?php
interface mouse
{
   //...isi dari interface mouse
}
?>

Isi dari interface adalah signature method (nama dan parameter method):

1
2
3
4
5
6
7
8
<?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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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 interfacemethod yang berasal dari interface juga harus memiliki hak akses public. Kita tidak bisa mengubahnya menjadi protected atau private.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?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:

1
2
3
4
5
6
7
8
9
10
<?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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?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.

0 komentar:

Posting Komentar