⊗ppOpIfCD 70 of 107 menu

Konstruktorun interfeysdə elanı OOP-də PHP-də

Interfeysdə həmçinin sinif konstruktorunu elan etmək olar. Bir nümunəyə baxaq. Tutaq ki, biz Rectangle sinifi yaratmaq qərarına gəldik, onda sahəni, perimetri tapmaq üçün metodlar, həmçinin iki parametr qəbul edən konstruktor olacaq. Gəlin sinifimizi interfeys vasitəsilə təsvir edək:

<?php interface iRectangle { public function __construct($a, $b); // iki parametrli konstruktor public function getSquare(); public function getPerimeter(); } ?>

Gəlin iRectangle interfeysimizin realizasiyasını yazaq:

<?php class Rectangle implements iRectangle { 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); } } ?>

Konstruktoru interfeysdə elan etmək bizə nə verdi? Birincisi, biz sinifdə konstruktoru realizə etməyi unutmayacayıq. Ikincisi, interfeys aydın şəkildə göstərir ki, sinif konstruktoru iki parametr qəbul etməlidir: çox deyil, az deyil. Bu da bizi təsadüfi səhvdən qoruyacaq.

Niyə biz ayrı iRectangle interfeysi yaratdıq, konstruktoru isə Figure interfeysinə əlavə etmədik? Çünki bütün fiqurların müxtəlif sayda tərəfləri var və müvafiq olaraq, konstruktorda müxtəlif sayda parametrləri var. Ona görə də biz düzbucaqlılar üçün xüsusi olaraq ayrı, daha dəqiq bir interfeys yaratmalı olduq.

iCube interfeysini hazırlayın, hansı ki, Kub fiqurunu təsvir edəcək. Qoy interfeysiniz kubun tərəfini parametr kimi qəbul edən konstruktoru, həmçinin kubun həcmini və səth sahəsini almaq üçün metodları təsvir etsin.

iCube interfeysini realizə edən Cube sinifini hazırlayın.

Istifadəçini təsvir edəcək iUser interfeysini hazırlayın. Güman edilir ki, istifadəçinin adı və yaşı olacaq və bu sahələr konstruktorun parametrləri kimi ötürüləcək. Qoy interfeysiniz həm də istifadəçi üçün ad və yaş üçün getterlərin (ancaq setterlərin deyil) olacağını təyin etsin.

iUser interfeysini realizə edən User sinifini hazırlayın.

azbydeenesfrkakkptruuz