Mbinu za Abstract katika OOP kwenye PHP
Madarasa ya abstract pia yanaweza kuwa na mbinu za abstract. Mbinu kama hizi haipaswi kuwa na utekelezaji, na zinahitajika ili kuonyesha kuwa mbinu kama hizi zinapaswa kuwa kwenye wanaodhalilisha. Na kwa kweli utekelezaji wa mbinu kama hizi - ni kazi ya wanaodhalilisha.
Ili kutangaza mbinu kuwa abstract,
wakati wa kutangaza yake unapaswa kuandika neno kuu
abstract.
Tujaribu kwenye mazoezi. Hebu tuchukulie,
kuwa wanaodhalilisha wote wa darasa User wanapaswa
kuwa na mbinu increaseRevenue.
Mbinu hii inapaswa kuchukua mapato ya sasa ya mtumiaji na kuwaongeza kwa kiwango fulani, kilichopitishwa kama parameta.
Darasa User lenyewe halijui ni mapato gani
haswa atakayopata mrithi - maana kwa mfanyakazi
hii ni mshahara, lakini kwa mwanafunzi - ni ufadhili. Kwa hivyo
kila mrithi atatekeleza mbinu hii
kwa njia yake mwenyewe.
Kiini hapa ni kwamba, mbinu ya abstract ya darasa
User inamlazimu programu
kutekeleza mbinu hii kwenye wanaodhalilisha, vinginevyo PHP itatoa hitilafu.
Kwa hivyo wewe, au programu mwingine,
anayefanya kazi na code yako,
hataweza kusahau kutekeleza mbinu inayohitajika
kwenye mrithi.
Basi, tujaribu kwenye mazoezi. Ongeza
mbinu ya abstract increaseRevenue
kwenye darasa User:
<?php
abstract class User
{
private $name;
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
}
// Mbinu ya Abstract bila mwili:
abstract public function increaseRevenue($value);
}
?>
Hebu darasa letu Employee libaki
bila mabadiliko. Katika kesi hii, hata kama
hutaunda kitu cha darasa Employee,
lakini ukizindua code tu, ambayo inafafanua
madarasa yetu, - PHP itatoa hitilafu.
Sasa tuandaye utekelezaji wa mbinu
increaseRevenue kwenye darasa
Employee:
<?php
class Employee extends User
{
private $salary;
public function getSalary()
{
return $this->salary;
}
public function setSalary($salary)
{
$this->salary = $salary;
}
// Tuandaye utekelezaji wa mbinu:
public function increaseRevenue($value)
{
$this->salary = $this->salary + $value;
}
}
?>
Tukague kazi ya darasa letu:
<?php
$employee = new Employee;
$employee->setName('john');
$employee->setSalary(1000);
$employee->increaseRevenue(100);
echo $employee->getSalary();
?>
Tekeleze mbinu increaseRevenue pia
kwenye darasa Student. Lakini sasa
mbinu yetu itaongeza tayari ufadhili:
<?php
class Student extends User
{
private $scholarship; // ufadhili
public function getScholarship()
{
return $this->scholarship;
}
public function setScholarship($scholarship)
{
$this->scholarship = $scholarship;
}
// Mbinu inaongeza ufadhili:
public function increaseRevenue($value)
{
$this->scholarship = $this->scholarship + $value;
}
}
?>
Ongeza kwenye darasa lako User mbinu
ya abstract ileile increaseRevenue.
Andaa utekelezaji wa mbinu hii kwenye madarasa
Employee na Student.
Kwenye darasa Figure fanya mbinu za abstract
za kupata eneo na mzingo wa umbo.