Амалияи интерфейсҳо дар ООП дар PHP

Биёед татбиқи интерфейсҳоро дар амал озмоем. Масъалаи шаклҳоро аз дарси гузашта ҳал мекунем, аммо акнун бо истифодаи интерфейсҳо, на синфҳои абстрактӣ.

Пас, акнун мо интерфейси Figure-ро дорем:

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

Биёед синфи Quadrate-ро нависем, ки методҳои ин интерфейсро амалӣ мекунад:

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;
    }
  }
?>

Чӣ тавр кор мекунад: агар ягон методро, ки дар интерфейс тавсиф шудааст, амалӣ кардан фаромӯш кунем, PHP ба мо хатогии фаталӣ медиҳад. Биёед инчунин синфи Rectangle-ро амалӣ кунем:

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

Синфи Disk-ро созед, ки интерфейси Figure-ро амалӣ мекунад.