⊗ppOpIfCD 70 of 107 menu

Deklarisanje konstruktora u interfejsu u OOP u PHP-u

U interfejsu se takođe može deklarisati konstruktor klase. Pogledajmo na primeru. Pretpostavimo da smo odlučili da napravimo klasu Rectangle, u kojoj će biti metode za pronalaženje površine, obima, kao i konstruktor koji prihvata dva parametra. Hajde da opišemo našu klasu pomoću interfejsa:

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

Hajde da napišemo implementaciju našeg interfejsa 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); } } ?>

Šta nam je dato deklarisanjem konstruktora u interfejsu? Kao prvo, nećemo zaboraviti da implementiramo konstruktor u klasi. Kao drugo, interfejs eksplicitno ukazuje, da konstruktor klase treba da prihvati dva parametra: ni više, ni manje. Ovo takođe će nas zaštititi od slučajne greške.

Zašto smo kreirali poseban interfejs iRectangle, a nismo dodali konstruktor u interfejs Figure? Zato što sve figure imaju različiti broj stranica i, shodno tome, različiti broj parametara u konstruktoru. Zato smo morali da kreiramo poseban, precizniji interfejs konkretno za pravougaonike.

Napravite interfejs iCube, koji će opisivati figuru Kocka. Neka vaš interfejs opisuje konstruktor, koji kao parametar prima stranu kocke, kao i metode za dobijanje zapremine kocke i površine.

Napravite klasu Cube, koja implementira interfejs iCube.

Napravite interfejs iUser, koji će opisivati korisnika. Pretpostavlja se da korisnik ima ime i godine i da će ova polja biti prosledjena parametrima konstruktora. Neka vaš interfejs takođe zadaje to da korisnik ima getere (ali ne i setere) za ime i godine.

Napravite klasu User, koja implementira interfejs iUser.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij