[email protected] +62818-738-628

Memahami Inheritance dan Abstract Class pada OOP PHP

  • Admin
  • OOP PHP

Pengertian OOP PHP

Object Oriented Programming (OOP) pada PHP adalah suatu paradigma pemrograman yang memungkinkan penggunaan objek-objek dalam kode program. Dalam OOP, objek merupakan representasi nyata dari suatu objek dalam dunia nyata yang memiliki atribut dan method yang dapat digunakan. PHP mendukung penggunaan OOP sejak versi 5.

Inheritance

Inheritance pada OOP PHP adalah konsep dimana sebuah class dapat menggunakan semua properti dan method yang dimiliki oleh class induk atau parent class. Dengan menggunakan konsep inheritance, kita dapat membuat class baru yang memiliki atribut dan method yang sama dengan class induknya.

Konsep inheritance pada OOP PHP memungkinkan kita untuk menghemat waktu dan usaha dalam membuat kode program. Dalam inheritance, kita dapat menggunakan kembali kode program yang sudah ada tanpa perlu menuliskannya kembali. Selain itu, inheritance juga dapat memudahkan dalam memelihara kode program, karena jika terdapat kesalahan pada parent class, maka akan otomatis mempengaruhi semua class turunan atau child class.

Contoh penggunaan

Contoh penggunaan inheritance pada OOP PHP adalah sebagai berikut :

class Person {
  protected $name;
  protected $age;
  
  public function __construct($name, $age) {
    $this->name = $name;
    $this->age = $age;
  }
  
  public function greeting() {
    return "Hello, my name is ".$this->name." and I am ".$this->age." years old.";
  }
}

class Student extends Person {
  protected $studentId;
  
  public function __construct($name, $age, $studentId) {
    parent::__construct($name, $age);
    $this->studentId = $studentId;
  }
  
  public function getStudentId() {
    return $this->studentId;
  }
}

$student1 = new Student("John Doe", 20, "123456");
echo $student1->greeting();
echo $student1->getStudentId();

Dalam contoh di atas, class Student merupakan child class dari class Person. Dalam class Student, kita menggunakan method greeting yang didefinisikan pada class Person. Selain itu, class Student juga memiliki atribut $studentId yang tidak ada pada class Person.

Jenis-jenis inheritance

Dalam OOP PHP, terdapat beberapa jenis inheritance, yaitu :

  1. Single Inheritance, yaitu konsep dimana sebuah class hanya memiliki satu parent class.
  2. Multiple Inheritance, yaitu konsep dimana sebuah class memiliki lebih dari satu parent class.
  3. Hierarchical Inheritance, yaitu konsep dimana beberapa class memiliki parent class yang sama.
  4. Multilevel Inheritance, yaitu konsep dimana sebuah class menjadi parent class untuk class lainnya.

Abstract Class

Abstract Class pada OOP PHP adalah class yang tidak dapat diinstansiasi secara langsung, namun digunakan sebagai parent class untuk class-class turunannya. Abstract class biasanya berisi method-method yang tidak memiliki implementasi, yang kemudian harus diimplementasikan oleh class turunannya.

Penggunaan abstract class pada OOP PHP memungkinkan kita untuk mengimplementasikan pola desain (design pattern) yang lebih kompleks dan fleksibel dalam kode program. Selain itu, abstract class juga dapat digunakan untuk memaksakan konsistensi dalam implementasi method pada class turunannya.

Contoh penggunaan

Contoh penggunaan abstract class pada OOP PHP adalah sebagai berikut :

abstract class Shape {
  protected $color;
  
  public function __construct($color = "red") {
    $this->color = $color;
  }
  
  abstract public function getArea();
}

class Circle extends Shape {
  protected $radius;
  
  public function __construct($radius, $color) {
    parent::__construct($color);
    $this->radius = $radius;
  }
  
  public function getArea() {
    return pi() * pow($this->radius, 2);
  }
}

class Rectangle extends Shape {
  protected $width;
  protected $height;
  
  public function __construct($width, $height, $color) {
    parent::__construct($color);
    $this->width = $width;
    $this->height = $height;
  }
  
  public function getArea() {
    return $this->width * $this->height;
  }
}

$circle = new Circle(5, "blue");
echo $circle->getArea();

$rectangle = new Rectangle(3, 4, "green");
echo $rectangle->getArea();

Dalam contoh di atas, class Shape merupakan abstract class yang memiliki method abstract getArea(). Class Circle dan Rectangle merupakan child class dari class Shape yang harus mengimplementasikan method getArea() sesuai dengan bentuk objek yang diwakili.

Perbedaan antara Abstract Class dan Interface

Meskipun abstract class dan interface memiliki fungsi yang sama, yaitu sebagai blueprint atau template untuk class turunannya, namun terdapat beberapa perbedaan antara keduanya. Perbedaan utama antara abstract class dan interface adalah sebagai berikut :

  1. Abstract class dapat memiliki method yang memiliki implementasi atau tanpa implementasi, sedangkan interface hanya memiliki method yang tidak memiliki implementasi.
  2. Class turunan dapat mewarisi dari satu abstract class, sedangkan dapat mengimplementasikan beberapa interface sekaligus.
  3. Abstract class dapat memiliki property, sedangkan interface tidak dapat memiliki property.

Implementasi inheritance pada OOP PHP memungkinkan class turunan untuk menggunakan semua properti dan method yang dimiliki oleh parent class. Sedangkan implementasi abstract class pada OOP PHP memungkinkan class turunan untuk mengimplementasikan method-method yang telah didefinisikan pada parent class. Dalam artikel ini, kita telah membahas tentang Inheritance dan Abstract Class pada OOP PHP. Inheritance memungkinkan class turunan untuk menggunakan properti dan method dari parent class, sementara abstract class digunakan sebagai blueprint atau template untuk class turunannya. Manfaat penggunaan Inheritance dan Abstract Class pada OOP PHP sangatlah penting karena dapat mempermudah dalam pembuatan dan pengelolaan kode program. Dalam implementasinya, inheritance dan abstract class dapat digunakan secara bersama-sama atau terpisah tergantung dari kebutuhan dan kompleksitas program yang dibuat. Untuk dapat memaksimalkan penggunaan inheritance dan abstract class pada OOP PHP, disarankan untuk mempelajari lebih dalam tentang konsep-konsep dasar OOP seperti encapsulation, polymorphism, dan inheritance. Selain itu, juga disarankan untuk memahami prinsip-prinsip SOLID (Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, dan Dependency Inversion) dalam pengembangan kode program agar kode yang dihasilkan lebih mudah dipelihara dan diperbaharui di masa depan.

Referensi

  1. "PHP Object Oriented Programming (OOP): Inheritance". W3schools. https://www.w3schools.com/php/php_oop_inheritance.asp
  2. "PHP Object Oriented Programming (OOP): Abstract Classes". W3schools. https://www.w3schools.com/php/php_oop_abstract.asp
  3. "Inheritance and Abstract Classes in PHP". GeeksforGeeks. https://www.geeksforgeeks.org/inheritance-and-abstract-classes-in-php/
  4. "SOLID Principles of Object Oriented Design Explained Simply". Medium. https://medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898