1. Capaian Pembelajaran
Setelah mengikuti pertemuan ini, mahasiswa diharapkan mampu:
- Memahami konsep abstraksi dalam OOP.
- Menjelaskan dan menggunakan abstract class di PHP.
- Menjelaskan dan menggunakan abstract method.
- Memahami dan menggunakan interface.
- Menjelaskan perbedaan abstract class dan interface.
- Mengimplementasikan abstraksi pada studi kasus Shape (Bangun Datar).
2. Konsep Abstraksi dalam OOP
2.1 Pengertian Abstraksi
Abstraksi adalah konsep OOP yang menyembunyikan detail implementasi dan hanya menampilkan fitur penting kepada pengguna.
Contoh dalam kehidupan nyata:
- Saat menggunakan remote TV, kita hanya tahu tombol ON/OFF, tanpa perlu tahu rangkaian elektronik di dalamnya.
Dalam pemrograman:
- Kita mendefinisikan apa yang harus dilakukan, bukan bagaimana caranya.
3. Abstract Class di PHP
3.1 Pengertian Abstract Class
Abstract class adalah class yang tidak dapat diinstansiasi langsung dan digunakan sebagai class induk.
Ciri-ciri abstract class:
- Menggunakan keyword
abstract - Dapat memiliki method abstract dan non-abstract
- Digunakan sebagai kerangka dasar (template)
3.2 Contoh Abstract Class
<?php
abstract class Kendaraan {
public $merk;
abstract public function jalan();
public function info() {
echo "Ini adalah kendaraan bermotor";
}
}
?>
4. Abstract Method
4.1 Pengertian Abstract Method
Abstract method adalah method yang tidak memiliki isi (body) dan harus diimplementasikan oleh class turunan.
Ciri-ciri:
- Hanya boleh ada di abstract class
- Tidak memiliki isi
{} - Wajib di-override di subclass
4.2 Contoh Abstract Method
abstract public function jalan();
Class turunan:
class Motor extends Kendaraan {
public function jalan() {
echo "Motor berjalan menggunakan dua roda";
}
}
5. Interface di PHP
5.1 Pengertian Interface
Interface adalah kontrak yang berisi daftar method tanpa implementasi.
Ciri-ciri interface:
- Menggunakan keyword
interface - Semua method bersifat
public - Class dapat mengimplementasikan lebih dari satu interface
5.2 Contoh Interface
<?php
interface BisaTerbang {
public function terbang();
}
class Burung implements BisaTerbang {
public function terbang() {
echo "Burung terbang menggunakan sayap";
}
}
?>
6. Perbedaan Abstract Class dan Interface di PHP
| Abstract Class | Interface |
|---|---|
Menggunakan abstract class | Menggunakan interface |
| Bisa punya method dengan isi | Tidak boleh punya method dengan isi |
| Bisa punya property | Tidak boleh punya property |
| Hanya bisa extends satu class | Bisa implements banyak interface |
| Method bisa protected/private | Semua method public |
7. Praktik: Abstract Class Shape
7.1 Studi Kasus
Buat abstract class Shape dengan method abstract luas().
Class turunan:
PersegiLingkaran
7.2 Abstract Class Shape
<?php
abstract class Shape {
abstract public function luas();
}
?>
7.3 Class Persegi
<?php
class Persegi extends Shape {
private $sisi;
public function __construct($sisi) {
$this->sisi = $sisi;
}
public function luas() {
return $this->sisi * $this->sisi;
}
}
?>
7.4 Class Lingkaran
<?php
class Lingkaran extends Shape {
private $jari;
public function __construct($jari) {
$this->jari = $jari;
}
public function luas() {
return 3.14 * $this->jari * $this->jari;
}
}
?>
7.5 Implementasi Program
<?php
$persegi = new Persegi(5);
$lingkaran = new Lingkaran(7);
echo "Luas Persegi: " . $persegi->luas() . "<br>";
echo "Luas Lingkaran: " . $lingkaran->luas();
?>
Penjelasan:
Shapetidak bisa dibuat objekPersegidanLingkaranwajib mengimplementasikan methodluas()
8. Kesalahan Umum Mahasiswa
- Mencoba menginstansiasi abstract class
- Lupa mengimplementasikan method abstract
- Salah menggunakan
implementsdanextends - Mengubah visibilitas method abstract
9. Latihan Mandiri
- Tambahkan class
Segitiga - Tambahkan abstract method
keliling() - Buat interface
Printabledengan methodcetak() - Implementasikan interface tersebut pada class bangun datar
10. Rangkuman
- Abstraksi menyederhanakan kompleksitas program
- Abstract class menyediakan kerangka dasar
- Interface adalah kontrak perilaku class
- Abstraksi meningkatkan konsistensi dan skalabilitas program