Աբստրակտ մեթոդները OOP-ում PHP-ում
Աբստրակտ դասերը կարող են պարունակել նաև աբստրակտ մեթոդներ: Նման մեթոդները չպետք է ունենան իրականացում, այլ անհրաժեշտ են նշելու համար, որ նման մեթոդներ պետք է ունենան ժառանգները: Իսկ հենց նման մեթոդների իրականացումը արդեն ժառանգների խնդիրն է:
Մեթոդը աբստրակտ հայտարարելու համար,
դրա հայտարարության ժամանակ պետք է գրել abstract
բանալի բառը:
Եկեք փորձենք գործնականում: Ենթադրենք, որ
User դասի բոլոր ժառանգները պետք է
ունենան increaseRevenue մեթոդը:
Այս մեթոդը պետք է վերցնի օգտագործողի ընթացիկ եկամուտը և ավելացնի այն որոշակի չափով, որը փոխանցվում է պարամետրով:
User դասն ինքը չգիտի, թե կոնկրետ
ինչ եկամուտ կստանա ժառանգը - քանի որ աշխատողի
դեպքում դա աշխատավարձ է, իսկ ուսանողի դեպքում` կրթաթոշակ: Ուստի
յուրաքանչյուր ժառանգ կիրականացնի այս մեթոդը
իրեն հատուկ ձևով:
Այստեղ իմաստը կայանում է նրանում, որ դասի աբստրակտ մեթոդը
User ստիպում է ծրագրավորողին իրականացնել
այս մեթոդը ժառանգներում, հակառակ դեպքում PHP կտա սխալ:
Այսպիսով դուք, կամ ձեր կոդով աշխատող մեկ այլ ծրագրավորող,
ոչ մի կերպ չի կարողանա
մոռանալ իրականացնել անհրաժեշտ մեթոդը
ժառանգում:
Այսպիսով, եկեք փորձենք գործնականում: Ավելացնենք
increaseRevenue աբստրակտ մեթոդը
User դասում:
<?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 դասը մնում է
անփոփոխ: Այս դեպքում, նույնիսկ եթե չստեղծվեն
Employee դասի օբյեկտներ,
բայց պարզապես գործարկվի կոդը, որում սահմանվում են
մեր դասերը, - PHP կտա սխալ:
Հիմա գրենք increaseRevenue մեթոդի
իրականացումը Employee դասում:
<?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;
}
}
?>
Ստուգենք մեր դասի աշխատանքը:
<?php
$employee = new Employee;
$employee->setName('john');
$employee->setSalary(1000);
$employee->increaseRevenue(100);
echo $employee->getSalary();
?>
Իրականացնենք increaseRevenue մեթոդը
նաև Student դասում: Միայն այս անգամ մեր
մեթոդը կավելացնի արդեն կրթաթոշակը:
<?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 դասին նույն
increaseRevenue աբստրակտ մեթոդը:
Գրեք այս մեթոդի իրականացումը Employee և
Student դասերում:
Figure դասում ստեղծեք աբստրակտ
մեթոդներ նկարի մակերեսը և պարագիծը ստանալու համար: