⊗ppOpIfCD 70 of 107 menu

Konstruktorin määrittely rajapinnassa OOP:ssa PHP:ssä

Rajapinnassa voidaan myös määritellä luokan konstruktori. Katsotaan esimerkkiä. Oletetaan, että päätimme tehdä luokan Rectangle, jossa on menetelmät pinta-alan ja kehän löytämiseksi, sekä konstruktori, joka ottaa kaksi parametria. Kuvataan luokkamme rajapinnan avulla:

<?php interface iRectangle { public function __construct($a, $b); // konstruktori kahdella parametrilla public function getSquare(); public function getPerimeter(); } ?>

Kirjoitetaan rajapintamme iRectangle toteutus:

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

Mitä konstruktorin määrittely rajapinnassa antoi meille? Ensinnäkin, emme unohda toteuttaa konstruktoria luokassa. Toiseksi, rajapinta osoittaa nimenomaisesti, että luokan konstruktorin on otettava vastaan kaksi parametria: ei enempää eikä vähempää. Tämä myös suojaa meitä vahingollisilta virheiltä.

Miksi loimme erillisen rajapinnan iRectangle, emmekä lisänneet konstruktoria rajapintaan Figure? Koska kaikilla kuvioilla on eri määrä sivuja ja vastaavasti eri määrä parametreja konstruktorissa. Siksi meidän piti luoda erillinen, tarkempi rajapinta nimenomaan suorakulmioille.

Tee rajapinta iCube, joka kuvailee Kuution muotoa. Olkoon rajapintasi kuvailemassa konstruktoria, joka parametrina ottaa kuution sivun, sekä menetelmiä kuution tilavuuden ja pinta-alan saamiseksi.

Tee luokka Cube, joka toteuttaa rajapinnan iCube.

Tee rajapinta iUser, joka kuvailee käyttäjää. Oletetaan, että käyttäjällä on nimi ja ikä ja nämä kentät annetaan konstruktorin parametreina. Olkoon rajapintasi määrittelemässä myös sen, että käyttäjälle tehdään getterit (mutta ei settereitä) nimelle ja iälle.

Tee luokka User, joka toteuttaa rajapinnan iUser.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää