Inheritance
Inheritance atau dalam bahasa Indonesianya disebut sebagai pewarisan adalah suatu cara untuk membuat sebuah kelas yang baru dengan menggunakan kelas lain yang sebelumnya sudah dibuat. Kelas lain yang sudah dibuat sebelumnya ini disebut sebagai kelas orang tua (parent class), sedangkan kelas yang baru dibuat dengan menggunakan kelas orang tua disebut sebagai kelas anak (parent class).

Tujuan utama dari pewarisan ini adalah untuk bisa menggunakan kembali (reuse) kode yang telah dibuat ditambah dengan atribut dan method baru. Contoh yang paling umum dalam konsep pewarisan adalah konsep makhluk hidup yang beranak pinak. Di mana anak yang dilahirkan akan mirip dengan orang tuanya karena si anak mewarisi sejumlah karakteristik orang tuanya. Perhatikan bagan sederhana berikut untuk lebih jelasnya lagi mengenai konsep pewarisan :



Pada gambar sederhana di atas, seorang anak akan memiliki bentuk fisik dan sifat yang mirip dengan orang tuanya. Misalkan jika orang tuanya bermata sipit maka anaknya pun akan mewarisi mata sipit. Seperti itulah konsep sederhana dari pewarisan ini. Sama seperti anak dan orang tua. Seorang anak sudah pasti mewarisi sejumlah karakteristik orang tuanya, namun seiring berjalannya waktu seorang anak pun kelak akan mempunyai sejumlah karakteristik lain yang berbeda dengan orang tuanya. Misal orang tua si anak berminat olah raga sedangkan anaknya tidak.

Sekarang mari kita buat dua buah kelas sederhana, sebuah kelas bernama OrangTua dan sebuah kelas bernama Anak:

PHP Code:

<?php

class OrangTua {
  public function helloOrangTua() {
    echo "Ini adalah kelas OrangTua...<br>";
  }
}

class Anak extends OrangTua {
  public function helloAnak() {
    echo "Ini adalah kelas Anak...<br>";
  }
}

$objekAnak = new Anak();
$objekAnak->helloOrangTua();
$objekAnak->helloAnak();

?>


Ketika kode di jalankan maka anda akan melihat pesan "ini adalah kelas OrangTua" dan "ini adalah kelas Anak". Padahal anda hanya membuat sebuah objek dari kelas Anak. Hal ini terjadi karena kelas anak mewarisi karakteristik dari kelas OrangTua. Mirip seperti konsep seorang anak yang mewakili sejumlah karakteristik dari orang tuanya. Selain itu seorang anak pun memiliki karakteristik lain. Untuk membuat sebuah kelas yang mewarisi karakteristik kelas lain, maka anda harus menggunakan kata kunci extends. Berikut adalah sintaksis dalam penggunaan extends ini:

child_class extends parent_class

Analogi makhluk hidup ini menurut saya hanya memberikan gambaran kasar seperti apa konsep pewarisan pada pemrograman berorientasi objek. Namun tidak memberikan pemahaman bagaimana penggunaan konsep pewarisan secara konkrit ketika membuat program. Oleh karena itu mari kita buat sebuah contoh kasus. Misalkan anda akan membuat sebuah toko online yang bergerak di bidang penjualan mobil. Pada halaman web penjualan mobil, minimal harus bisa melakukan tugas transaksi penjualan mobil. Disamping itu juga konsumen dapat melihat-lihat informasi produk mobil apa saja yang dijual pada toko tersebut seperti spesifikasi mesin dan harga mobil.

Dari contoh kasus ini, bisa diambil kesimpulan tidak perduli apa yang dijual, semua mobil ini memiliki beberapa hal yang sama, yaitu nama, deskripsi, harga, dan foto. Sehingga bisa kita buat sebuah kelas yang menampung hal-hal tersebut, katakanlah kelas tersebut adalah kelas produk. Sehingga kode kelas produk akan terlihat sebagai berikut:

PHP Code:

<?php

class Produk {
  private $nama;
  private $harga;
  private $foto;
  private $deskripsi;

  public function setNama($inputNama) {
    $this->nama = $inputNama;
  }

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

  public function setHarga($inputHarga) {
    $this->harga = $inputHarga;
  }

  public function getHarga() {
    return $this->harga;
  }

  public function setFoto($inputFoto) {
    $this->foto = $inputFoto;
  }

  public function getFoto() {
    return $this->foto;
  }

  public function setDeskripsi($inputDeskripsi) {
    $this->deskripsi = $inputDeskripsi;
  }

  public function getDeskripsi() {
    return $this->deskripsi;
  }
}

?>


Kemudian misalkan toko yang bergerak di bidang penjualan ini menjual mobil dan sparepart mobil. Maka bisa kita andaikan setiap mobil akan memiliki nama, harga, foto, dan deskripsi pada katalognya dan begitu juga dengan setiap spare-part mobil. Sehingga kita bisa membuat kelas mobil dan kelas spare-part mewarisi karakteristik dari kelas produk.

Dengan membuat kelas yang mewarisi karakteristik dari kelas produk, maka kita tidak perlu lagi membuat kode-kode yang sudah ada pada produk sebelumnya. Kita cukup menambahkan atribut dan method tambahan. Sehingga kerangka dasarnya bisa terlihat sebagai berikut:

PHP Code:

<?php

class Produk {
  private $nama;
  private $harga;
  private $foto;
  private $deskripsi;

  public function setNama($inputNama) {
    $this->nama = $inputNama;
  }

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

  public function setHarga($inputHarga) {
    $this->harga = $inputHarga;
  }

  public function getHarga() {
    return $this->harga;
  }

  public function setFoto($inputFoto) {
    $this->foto = $inputFoto;
  }

  public function getFoto() {
    return $this->foto;
  }

  public function setDeskripsi($inputDeskripsi) {
    $this->deskripsi = $inputDeskripsi;
  }

  public function getDeskripsi() {
    return $this->deskripsi;
  }
}

class mobil extends produk {}
class SparePart extends produk {}

?>


Setiap mobil selain memiliki nama, harga, foto, dan penjelasan, sudah pasti memiliki model tertentu begitu juga dengan spare-part mobil. Sehingga kita rancang kelas mobil dan kelas spare-part ini selain mewarisi karakterstik dari kelas produk, juga memiliki atribut model. Sehingga kode akan terlihat sebagai berikut:

PHP Code:

<?php

class Produk {
  private $nama;
  private $harga;
  private $foto;
  private $deskripsi;

  public function setNama($inputNama) {
    $this->nama = $inputNama;
  }

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

  public function setHarga($inputHarga) {
    $this->harga = $inputHarga;
  }

  public function getHarga() {
    return $this->harga;
  }

  public function setFoto($inputFoto) {
    $this->foto = $inputFoto;
  }

  public function getFoto() {
    return $this->foto;
  }

  public function setDeskripsi($inputDeskripsi) {
    $this->deskripsi = $inputDeskripsi;
  }

  public function getDeskripsi() {
    return $this->deskripsi;
  }
}

class Mobil extends Produk {
  private $model;

  public function setModel($inputModel) {
    $this->model = $inputModel;
  }

  public function getModel() {
    return $this->model;
  }
}

class SparePart extends Produk {
  private $model;

  public function setModel($inputModel) {
    $this->model = $inputModel;
  }

  public function getModel() {
    return $this->model;
  }
}

?>








 *.:。✿ Don't forget to come back again ✿.。.:*






Visit Wahyudi Blog !