⊗ppOpFnMt 64 of 107 menu

PHPде ООПдо абстракттык методдор

Абстракттык класстар абстракттык методдорду да камтый алат. Мындай методдордун ишке ашырылышы болбошу керек, алар мураскорлордо кандай методдор болушу керек экенин көрсөтүү үчүн керек. Ал эми бул методдорду ишке ашыруу мураскорлордун милдети.

Методду абстракттык деп жарыялоо үчүн, анын жарыяланган жеринде abstract деген ачкыч сөзүн жазуу керек.

Келгиле, практикада сынап көрөлү. User класcынын бардык мураскорлору increaseRevenue методуна ээ болушу керек деп эсептейли.

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

User класcынын өзү мурасчынын кандай киреше аларын билбейт - анткени кызматкер үчүн бул эмгек акы, ал эми студент үчүн - стипендия. Ошондуктан ар бир мураскор бул методду өзүнчө ишке ашырат.

Бул жердеги маани, User класcынын абстракттык методу программачыны бул методду мураскорлордо ишке ашырууга мажбурлайт, антпесе PHP ката берет. Ошентип сиз же сиздин код менен иштеген башка программачы керектүү методду мурасчыда ишке ашырууну эч качан унутуп кала албайсыз.

Ошентип, келгиле практикада сынап көрөлү. User класcына increaseRevenue абстракттык методун кошолу:

<?php abstract class User { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } // Денесиз абстракттык метод: abstract public function increaseRevenue($value); } ?>

Employee класcыбыз өзгөрүлбөй калсын. Бул учурда, эгерде Employee класcынын объектисин түзбөсө да, жөн гана биздин класстар аныкталган коду иштетсек, - PHP ката берет.

Эми келгиле, Employee класcында increaseRevenue методунун ишке ашырылышын жазалы:

<?php class Employee extends User { private $salary; public function getSalary() { return $this->salary; } public function setSalary($salary) { $this->salary = $salary; } // Методдун ишке ашырылышын жазабыз: public function increaseRevenue($value) { $this->salary = $this->salary + $value; } } ?>

Класcыбыздын иштешин текшеребиз:

<?php $employee = new Employee; $employee->setName('john'); $employee->setSalary(1000); $employee->increaseRevenue(100); echo $employee->getSalary(); ?>

increaseRevenue методун Student класcында да ишке ашыралы. Бирок бул жолу биздин метод стипендияны көбөйтөт:

<?php class Student extends User { private $scholarship; // стипендия public function getScholarship() { return $this->scholarship; } public function setScholarship($scholarship) { $this->scholarship = $scholarship; } // Метод стипендияны көбөйтөт: public function increaseRevenue($value) { $this->scholarship = $this->scholarship + $value; } } ?>

User класcыңызга ушул сыяктуу абстракттык increaseRevenue методун кошуңуз. Бул методдун ишке ашырылышын Employee жана Student класстарында жазыңыз.

Figure класcында фигуранын аянтын жана периметрин алуу үчүн абстракттык методдорду жасаңыз.

Кыргызча
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 файлдарын колдонобуз. Маалыматтарды иштетүү Маалыматты коргоо саясаты боюнча жүргүзүлөт.
баарын кабыл алуу ыңгайлаштыруу четке кагуу