⊗ppOpIhPPP 33 of 107 menu

පීඑච්පී OOP හි උරුමකම ලබන අවස්ථාවේ පෞද්ගලික ගුණාංගවල ඇති ගැටලුව

පෞද්ගලික ගුණාංග උරුම නොවන බව, නොපෙන්වන ගැටලුවකට හේතු විය හැක. අපි උදාහරණයක් බලමු. පෞද්ගලික ගුණාංගයක් සහිත පහත දක්වන මව්-ක්‍රමය ඇතැයි සිතමු:

<?php class User { private $age; public function setAge($age) { $this->age = $age; } public function getAge() { return $this->age; } } ?>

උපක්‍රමය තුළ අපි වයස එකකින් වැඩි කරන ක්‍රමයක් සාදා ගැනීමට තීරණය කළා යැයි සිතමු. නමුත්, මව්-ක්‍රමයේ පෞද්ගලික ගුණාංගය වෙනස් කිරීමට උත්සාහ කිරීම දෝෂයකට හේතු වේ:

<?php class Student extends User { public function incAge() { $this->age++; // දෝෂය } } ?>

උපක්‍රමය තුළ පෞද්ගලික ගුණාංගය $age ප්‍රකාශයට පත් කළහොත් දෝෂය අතුරුදහන් වේ:

<?php class Student extends User { private $age; public function incAge() { $this->age++; } } ?>

මෙහිදී අපව උගුලට හසු කරනු ලබයි! ඇත්තටම අපි පෞද්ගලික ගුණාංග දෙකක් සාදා ඇත: එකක් මව්-ක්‍රමයේ සහ එකක් උපක්‍රමයේ. ඒවා ක්‍රියා කරන්නේ සම්පූර්ණයෙන්ම ස්වාධීනව. මෙයින් අදහස් කරන්නේ, මව්-ක්‍රමයේ ක්‍රම තමන්ගේම ගුණාංගය වෙනස් කරන අතර, උපක්‍රමයේ ක්‍රම - තමන්ගේ ගුණාංග වෙනස් කරන බවයි.

මෙම ගැටලුවට ඇත්තටම විසඳුමක් ඇත. ඒ සඳහා මව්-ක්‍රමයේ පෞද්ගලික ගුණාංග එම මව්-ක්‍රමයේම ක්‍රම හරහා හසුරුවා ගත යුතුය. අපි අපගේ කේතය මෙයට අනුව නැවත ලියමු:

<?php class Student extends User { public function incAge() { $age = $this->getAge(); $age++; $this->setAge($age); } } ?>

සරල කළ හැකිය:

<?php class Student extends User { public function incAge() { $this->setAge($this->getAge() + 1); } } ?>

පහත කේතයේ උපක්‍රමය තුළ මව්-ක්‍රමයේ ක්‍රමය ප්‍රතිලිඛිත කර ඇත. මෙම කේතයේ ඇති ගැටලු නිරාකරණය කරන්න:

<?php class User { private $name; public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } } class Employee extends User { public function setName($name) { if (strlen($name) > 0) { $this->name = $name; // දෝෂය } } } ?>
සිංහල
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
අපි වෙබ් අඩවිය ක්‍රියාත්මක කිරීම, විශ්ලේෂණය සහ පුද්ගලීකරණය සඳහා කුකී භාවිතා කරමු. දත්ත සැකසීම සිදුකරනු ලබන්නේ ගෝපනීයතා ප්‍රතිපත්තිය අනුව ය.
සියල්ල පිළිගන්න කොන්දේසි ප්‍රතික්ෂේප කරන්න