⊗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 калит сўзидан кейин иккиala интерфейсни вергул билан кўрсатамиз:

<?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çeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш