⊗ppOpIfCD 70 of 107 menu

Deklaracija konstruktorja v vmesniku v OOP v PHP

V vmesniku je mogoče tudi deklarirati konstruktor razreda. Poglejmo si na primeru. Recimo, da smo se odločili narediti razred Rectangle, v katerem bojo metode za iskanje površine, obsega, pa tudi konstruktor, ki sprejme dva parametra. Opišimo naš razred z vmesnikom:

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

Napišimo implementacijo našega vmesnika iRectangle:

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

Kaj nam je dala deklaracija konstruktorja v vmesniku? Prvič, ne bomo pozabili implementirati konstruktorja v razredu. Drugič, vmesnik eksplicitno določa, da mora konstruktor razreda sprejeti dva parametra: niti več, niti manj. To nas tudi ščiti pred naključno napako.

Zakaj smo ustvarili ločen vmesnik iRectangle, namesto da bi dodali konstruktor v vmesnik Figure? Ker imajo vse figure različno število stran in s tem različno število parametrov v konstruktorju. Zato smo morali ustvariti ločen, natančnejši vmesnik natančno za pravokotnike.

Naredite vmesnik iCube, ki bo opisoval figuro Kocka. Naj vaš vmesnik opiše konstruktor, ki kot parameter sprejme stran kocke, ter metode za pridobitev prostornine kocke in površine.

Naredite razred Cube, ki implementira vmesnik iCube.

Naredite vmesnik iUser, ki bo opisoval uporabnika. Predvideva se, da ima uporabnik ime in starost in da bosta ti polji posredovani kot parametri konstruktorja. Naj vaš vmesnik določa tudi, da bo uporabnik imel getterje (ne pa setterjev) za ime in starost.

Naredite razred User, ki implementira vmesnik iUser.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni