PHP-də OOP-də interfeyslerin tetbiqi praktikası

Gəlin interfeyslərin tetbiqini praktikada sınayaq. Əvvəlki dərsdən olan fiqurlar məsələsini həll edək, amma artıq abstrakt siniflər yox, interfeyslərdən istifadə edərək.

Beləliklə, indi bizə Figure interfeysi verilib:

Figure.php<?php
  interface Figure
  {
    public function getSquare();
    public function getPerimeter();
  }
?>

Gəlin bu interfeysin metodlarını həyata keçirəcək Quadrate sinifini yazaq:

Quadrate.php<?php
  class Quadrate implements Figure
  {
    private $a;
    
    public function __construct($a)
    {
      $this->a = $a;
    }
    
    public function getSquare()
    {
      return $this->a * $this->a;
    }
    
    public function getPerimeter()
    {
      return 4 * $this->a;
    }
  }
?>

Bu necə işləyir: əgər interfeysdə təsvir olunan hər hansı bir metodu həyata keçirməyi unutsaq, PHP bizə fatal xəta verəcək. Gəlin Rectangle sinifini də həyata keçirək:

Rectangle.php<?php
  class Rectangle implements Figure
  {
    private $a;
    private $b;
    
    public function __construct($a, $b)
    {
      $this->a = $a;
      $this->b = $b;
    }
    
    public function getSquare()
    {
      return $this->a * $this->b;
    }
    
    public function getPerimeter()
    {
      return 2 * ($this->a + $this->b);
    }
  }
?>
Задание 1

Figure interfeysini həyata keçirən Disk sinifi yaradın.