B. MENDEKLARASIKAN CLASS

Tujuan Pembelajaran

Setelah menyelesaikan materi ini, mahasiswa diharapkan mampu:

  1. Memahami konsep dasar dalam mendeklarasikan class pada PHP.
  2. Mendeklarasikan method, property, dan constant dalam sebuah class.
  3. Menerapkan konsep inheritance, interface, dan trait dalam pemrograman berbasis objek.
  4. Menggunakan abstract method, constructor, dan destructor untuk mengelola perilaku object.
1. MENDEKLARASIKAN METHOD

Metode adalah fungsi yang didefinisikan di dalam sebuah kelas. Meskipun PHP tidak memberlakukan batasan khusus, sebagian besar metode hanya beroperasi pada data dalam objek tempat metode tersebut berada.

```
Aturan Penamaan Methods

Method yang diawali dengan dua garis bawah (__) mungkin akan digunakan oleh PHP di masa depan. Saat ini, beberapa method dengan awalan tersebut sudah digunakan dalam proses serialisasi objek, seperti __sleep() dan __wakeup(). Oleh karena itu, disarankan untuk tidak menggunakan awalan __ pada method buatan sendiri, kecuali untuk method bawaan PHP.

Menggunakan $this dalam Method

Di dalam sebuah method, variabel $this mengacu pada objek yang memanggil method tersebut. Misalnya, jika kita memanggil $mobil->nyalakanMesin(), maka di dalam method nyalakanMesin(), $this merujuk pada objek $mobil. Method menggunakan $this untuk mengakses properti dari objek saat ini dan untuk memanggil method lain dalam objek yang sama. Berikut adalah contoh class Mobil yang menunjukkan bagaimana $this digunakan:

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
class Mobil {
    public $merk = '';

    function getMerk() {
        return $this->merk;
    }

    function setMerk($merkBaru) {
        $this->merk = $merkBaru;
    }
}

$mobil = new Mobil();
$mobil->setMerk('Toyota');
echo $mobil->getMerk();

Pada contoh di atas, method getMerk() dan setMerk() menggunakan $this untuk mengakses dan mengubah properti $merk pada objek yang sedang digunakan.

Method Statis

Untuk mendeklarasikan method sebagai method statis, gunakan kata kunci static. Di dalam method statis, variabel $this tidak dapat digunakan karena method ini tidak terkait dengan instance tertentu dari sebuah class.

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
class PembantuMatematika {
    static function kuadrat($angka) {
        return $angka * $angka;
    }

    static function kubus($angka) {
        return $angka * $angka * $angka;
    }
}

// Memanggil method statis tanpa membuat objek
echo PembantuMatematika::kuadrat(4); 
echo PembantuMatematika::kubus(3);

Method kuadrat() dan kubus() dideklarasikan sebagai method statis dan dapat langsung dipanggil dengan PembantuMatematika::kuadrat(4) tanpa perlu membuat objek terlebih dahulu.

Method Final

Jika sebuah method dideklarasikan dengan kata kunci final, maka method tersebut tidak dapat ditimpa (override) oleh class turunannya.

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
class Hewan {
    public $nama;

    final function getNama() {
        return $this->nama;
    }
}

class Anjing extends Hewan {
    function getNama() {
        return "Ini adalah anjing bernama " . $this->nama;
    }
}

Dalam contoh ini, method getNama() di dalam class Hewan dideklarasikan sebagai final, sehingga class Anjing tidak diperbolehkan untuk menggantinya (override).

```
Modifier Akses (Public, Private, Protected)

Dalam pemrograman berorientasi objek, penting untuk mengontrol akses terhadap properti dan method dalam class. Untuk itulah PHP menyediakan modifier akses: public, protected, dan private yang digunakan untuk menentukan sejauh mana anggota class (property dan method) bisa diakses dari luar:

  • Public: Dapat diakses dari mana saja, baik dari dalam class maupun luar.
  • Protected: Hanya dapat diakses oleh class itu sendiri dan class turunannya.
  • Private: Hanya dapat diakses oleh class itu sendiri, tidak dapat diakses dari luar atau subclass.

Agar lebih mudah dipahami, perhatikan ilustrasi berikut yang menggambarkan perbedaan ketiga jenis akses tersebut.

Gambar 4 Ilustrasi Akses Modifier: Public, Protected, dan Private

Gambar 4 Ilustrasi Akses Modifier: Public, Protected, dan Private

Gambar tersebut menunjukkan analogi akses modifier sebagai jenis β€œpintu akses” dalam sistem OOP:

  • Public diibaratkan sebagai pintu terbuka yang bisa dilalui siapa saja.
  • Protected digambarkan sebagai akses terbatas, hanya bisa dilalui oleh "keluarga" (class induk dan turunannya).
  • Private digambarkan seperti ruang pribadi yang hanya bisa diakses oleh pemiliknya sendiri, yaitu class tempat property atau method itu didefinisikan.

Dengan memahami gambar ini, kita dapat menyadari bahwa pemilihan akses modifier sangat penting dalam menjaga keamanan data dan struktur kode yang rapi. Contoh penggunaan modifier akses:

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
class RekeningBank {
    public $saldo = 0;

    public function setor($jumlah) {
        $this->saldo += $jumlah;
        $this->catatTransaksi();
    }

    protected function tarik($jumlah) {
        if ($jumlah <= $this->saldo) {
            $this->saldo -= $jumlah;
            $this->catatTransaksi();
        } else {
            echo "Saldo tidak cukup!";
        }
    }

    private function catatTransaksi() {
        echo "Transaksi berhasil. Saldo saat ini: {$this->saldo}\n";
    }
}

$rekening = new RekeningBank();
$rekening->setor(1000);
// $rekening->tarik(500); // Tidak dapat dipanggil karena bersifat protected
// $rekening->catatTransaksi(); // Tidak dapat dipanggil karena bersifat private

Pada contoh di atas:

  • setor() bersifat public sehingga dapat diakses di luar class.
  • tarik() bersifat protected hanya bisa dipanggil dari dalam class atau subclass.
  • catatTransaksi() bersifat private sehingga hanya bisa dipanggil di dalam class RekeningBank.
```
Type Hinting dalam Parameter Method

PHP mendukung type hinting untuk memastikan parameter yang diterima oleh sebuah method sesuai dengan tipe data yang diharapkan. Contoh:

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
class Karyawan {
    function berikanTugas(Tugas $tugas) {
        echo "Tugas diberikan: {$tugas->deskripsi}\n";
    }
}

class Tugas {
    public $deskripsi;
    
    function __construct($deskripsi) {
        $this->deskripsi = $deskripsi;
    }
}

$tugas = new Tugas("Menganalisis data keuangan");
$karyawan = new Karyawan();
$karyawan->berikanTugas($tugas);

Dalam contoh ini, method berikanTugas() hanya menerima objek dari class Tugas, sehingga pemanggilan dengan tipe data lain akan menyebabkan error.

```
Type Hinting dalam Return Type Method

Kita juga dapat menentukan tipe data yang akan dikembalikan oleh suatu method dengan menambahkan tanda : diikuti tipe data setelah deklarasi parameter. Contoh:

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
class Perpustakaan {
    function ambilBuku(): Buku {
        return new Buku("Pemrograman PHP");
    }
}

class Buku {
    public $judul;

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

$perpustakaan = new Perpustakaan();
$buku = $perpustakaan->ambilBuku();
echo "Buku yang diperoleh: " . $buku->judul;

Di sini, method ambilBuku() harus mengembalikan objek dari class Buku. Jika method ini mengembalikan tipe data lain, PHP akan menghasilkan error.

LATIHAN

Untuk menguji pemahamanmu tentang mendeklarasikan methods dalam PHP, susunlah baris-baris kode berikut agar menjadi program PHP yang benar!

Petunjuk: Perhatikan posisi tanda }. Soal ini memiliki dua tanda penutup kurung kurawal: satu untuk method dan satu untuk class. Perhatikan komentar di samping baris } agar kamu bisa menyusunnya dengan tepat.

    ```