Typowanie polimorficzne z interfejsami

Założenie: Pokażemy, jak używać interfejsów w PHP do osiągnięcia polimorfizmu, czyli możliwości traktowania obiektów różnych klas w jednolity sposób.

Krok po kroku:

  1. Definicja interfejsu: Zdefiniujmy interfejs Shape z metodą getArea(), która będzie zwracać pole powierzchni figury.
  2. 
    interface Shape {
      public function getArea(): float;
    }
    				
  3. Implementacja interfejsu w klasach: Stwórzmy dwie klasy: Circle i Rectangle, które będą implementować interfejs Shape.
  4. 
    class Circle implements Shape {
      private float $radius;
      public function __construct(float $radius) { $this->radius = $radius; }
      public function getArea(): float { return pi() * $this->radius * $this->radius; }
    }
    
    class Rectangle implements Shape {
      private float $width;
      private float $height;
      public function __construct(float $width, float $height) { $this->width = $width; $this->height = $height; }
      public function getArea(): float { return $this->width * $this->height; }
    }
    				
  5. Użycie interfejsu jako typu zmiennej: Zadeklarujmy zmienną typu Shape i przypiszmy do niej obiekty klas Circle i Rectangle.
  6. 
    $shape1 = new Circle(5);
    $shape2 = new Rectangle(4, 6);
    
    echo "Pole koła: " . $shape1->getArea() . "
    "; echo "Pole prostokąta: " . $shape2->getArea();
  7. Wyjaśnienie: Kod działa poprawnie, ponieważ obie klasy implementują interfejs Shape i definiują metodę getArea(). Zmienna $shape może przechowywać obiekty różnych klas, o ile implementują one ten sam interfejs.

Ten przykład pokazuje podstawy typowania polimorficznego z użyciem interfejsów w PHP. Zachęcamy do dalszego zgłębiania tematu programowania obiektowego!

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *