AYO PAHAMI!


Petunjuk:

  1. Perhatikan kode program PHP yang ditampilkan di kotak sebelah kiri.
  2. Ketik ulang seluruh baris kode tersebut ke dalam editor di sebelah kanan.
  3. Pastikan setiap baris dan struktur penulisan sesuai dengan contoh (termasuk titik koma, kurung, dll).
  4. Tekan tombol RUN di dalam editor untuk menjalankan program.
  5. Perhatikan hasil keluaran di bawah editor. Apa yang ditampilkan?
<?php
trait BisaDikendarai {
    abstract function getIdentitas();

    public function bandingkanKecepatan($object) {
        return ($object->getIdentitas() < $this->getIdentitas()) ? -1 : 1;
    }
}

class Sepeda {
    use BisaDikendarai;
    private $id;

    public function __construct($id) {
        $this->id = $id;
    }

    public function getIdentitas() {
        return "Sepeda-{$this->id}";
    }
}

// Kesalahan: Class tidak mengimplementasikan method abstract
class Bus {
    use BisaDikendarai;
}

$sepeda = new Sepeda(101);
$bus = new Bus(); // Akan menyebabkan error karena `Bus` tidak mengimplementasikan `getIdentitas()`

$hasilPerbandingan = $sepeda->bandingkanKecepatan($bus);
?>

Trait BisaDikendarai mendeklarasikan abstract method getIdentitas(). Class Sepeda menggunakan trait ini dan mengimplementasikan method getIdentitas() sesuai kontrak. Namun, class Bus juga menggunakan trait tetapi tidak mengimplementasikan getIdentitas(), sehingga akan menyebabkan error. Hal ini menegaskan bahwa setiap class yang menggunakan trait dengan method abstract wajib mendefinisikan method tersebut secara eksplisit.

⬅ Kembali ke Halaman Sebelumnya