⊗ppOpIfSII 73 of 107 menu

PHPдеги ООПде бир нече интерфейс

PHPде көп мурас жок - ар бир класстын бир гана ата-энеси боло алат. Бирок интерфейстер менен иш башкача: ар бир класс каалаган канча интерфейсти ишке ашыра алат. Бул үчүн интерфейстердин аттарын implements ачкыч сөзүнөн кийин үтүр менен тизмелеш керек.

Бул интерфейстердин абстракттуу класстардан дагы бир айырмасы - бир нече интерфейсти ишке ашырууга болот, бирок бир нече абстракттуу класстан мурастоого болбойт.

Келгиле, иш жүзүндө сынап көрөлү. Айталы iFigure интерфейсинен тышкары бизде iTetragon интерфейси бар болсун. Бул интерфейстин методу Quadrate жана Rectangle класстары ишке ашырат, анткени алардын 4 капталы бар, бирок Disk класстын эмес.

iTetragon интерфейси төрт бурчтуктун бардык төрт капталы үчүн геттерлерди сүрөттөсүн:

<?php interface iTetragon { public function getA(); public function getB(); public function getC(); public function getD(); } ?>

Ошондой эле бизде мурун жасаган iFigure интерфейси бар болсун:

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

Quadrate классы эки интерфейсти ишке ашырсын. Бул үчүн эки интерфейсти тең implements ачкыч сөзүнөн кийин үтүр менен тизмелейбиз:

<?php class Quadrate implements iFigure, iTetragon { // бул жерде ишке ашыруу болот } ?>

Азыр Quadrate класстын iTetragon интерфейсин ишке ашыруу үчүн өнүктүрөлү. Түшүнүктүү, биздин квадрат төрт бурчтуктун өзгөчө учуру, себеби квадраттын бардык капталдары барабар. Ошондуктан жаңы методдордун баары бир эле нерсени кайтарат - квадраттын туурасын:

<?php class Quadrate implements iFigure, iTetragon { private $a; public function __construct($a) { $this->a = $a; } public function getA() { return $this->a; } public function getB() { return $this->a; } public function getC() { return $this->a; } public function getD() { return $this->a; } public function getSquare() { return $this->a * $this->a; } public function getPerimeter() { return 4 * $this->a; } } ?>

Тик бурчтукта бардык капталдар бирдей эмес, бир гана карама-каршы капталдары. Бул учурда жаңы методдор бир аз айырмаланып калат. Жөн эле, кандайдыр бир трапецияда бардык 4 капталы ар башка болот.

Бирок, кандай фигураны карап жатканыбыз маанилүү эмес - маанилүүсү, бул фигуралардын бардыгы сүрөттөлгөн методдорго ээ болот (кээ бир фигуралар өзгөчө болсо да) жана бирдей иштейт.

Rectangle класстары дагы эки интерфейсти ишке ашырсын: жана iFigure, жана iTetragon.

getRadius жана getDiameter методдору менен iCircle интерфейсин жасаңыз.

Disk класстары дагы эки интерфейсти ишке ашырсын: жана iFigure, жана iCircle.

Кыргызча
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어LietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Биз сайттин иштөөсү, аналитика жана персонализация үчүн cookie файлдарын колдонобуз. Маалыматтарды иштетүү Маалыматты коргоо саясаты боюнча жүргүзүлөт.
баарын кабыл алуу ыңгайлаштыруу четке кагуу