PHP OOP හි අමුරුවන්න ගණයන්
ඔබට User ගණයක් ඇතැයි සිතන්න,
එයින් Employee සහ Student ගණ
උරුමකර ගන්නවා.
මෙහිදී අපේක්ෂා කරන්නේ ඔබ Employee සහ
Student ගණවල වස්තූන් සාදන බවයි,
නමුත් User ගණයේ වස්තූන් - සාදන්නේ නැත,
මක්නිසාද යත් මෙම ගණය භාවිතා කරන්නේ එහි
උරුමකරුවන්ගේ පොදු ගුණාංග සහ ක්රම සමූහගත
කිරීම සඳහා පමණකි.
මෙම අවස්ථාවේදී, User ගණයේ වස්තූන්
සෑදීම බලහත්කාරයෙන් තහනම් කළ හැකිය, එවිට
ඔබට හෝ වෙනත් කි්රයාවටකරුවෙකුට කොතැනකවත්
අහම්බෙන් ඒවා සෑදීම සිදු නොවේ.
මේ සඳහා අමුරුවන්න (abstract) ගණ යනුවෙන් හඳුන්වනු ලබන ගණ ඇත. අමුරුවන්න ගණ පිළිබඳව උරුමකර ගැනීම සඳහා අරමුණු කරන ලද ගණ වේ. මෙවැනි ගණවල වස්තූන් සෑදිය නොහැක.
ගණයක් අමුරුවන්න ලෙස ප්රකාශයට පත් කිරීම සඳහා,
එය ප්රකාශයට පත් කිරීමේදී abstract යන
මූලික වචනය ලිවිය යුතුය:
<?php
abstract class User
{
}
?>
එහෙනම්, අපි අමුරුවන්න ගණය User හි
සැබෑ කිරීම (implementation) ලියමු. එහි පුද්ගලික
(Private) ගුණාංගයක් name තිබිය යුතුයි,
තවද ඒ සඳහා ගෙටර් සහ සෙටර් ද තිබිය යුතුයි:
<?php
abstract class User
{
private $name;
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
}
}
?>
User ගණයේ වස්තුවක් සෑදීමට උත්සාහ කිරීම
දෝෂයක් ඇති කරයි:
<?php
$user = new User; // දෝෂයක් ලබා දෙයි
?>
නමුත් අපගේ ගණයෙන් උරුමකර ගැනීම හැකි වනු ඇත.
අපගේ අමුරුවන්න ගණය User වෙතින් උරුමකර
ගන්නා Employee ගණයක් සාදමු:
<?php
class Employee extends User
{
private $salary;
public function getSalary()
{
return $this->salary;
}
public function setSalary($salary)
{
$this->salary = $salary;
}
}
?>
Employee ගණයේ වස්තුවක් සාදමු -
සියල්ල සාර්ථකව ක්රියාත්මක වනු ඇත:
<?php
$employee = new Employee;
$employee->setName('john'); // මාපිය ගණයේ ක්රමය, එනම් User ගණයේ
$employee->setSalary(1000); // තමන්ගේම ක්රමය, එනම් Employee ගණයේ
echo $employee->getName(); // 'john' ප්රතිදානය කරයි
echo $employee->getSalary(); // 1000 ප්රතිදානය කරයි
?>
අමුරුවන්න ගණයක් Figure සාදන්න,
එය ජ්යාමිතික රුපයක් නිරූපණය කරයි.