কম্পিউটার

পিএইচপি ক্লাস অ্যাবস্ট্রাকশন


পরিচয়

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-এ, একটি বিমূর্ত শ্রেণী হল এমন একটি যা তাৎক্ষণিকভাবে করা যেতে পারে, অর্থাৎ এই ধরনের ক্লাসের অবজেক্ট ঘোষণা করা সম্ভব নয়। PHP সংস্করণ 5.0

থেকে বিমূর্ত শ্রেণীর ধারণা সমর্থন করে

বিমূর্ত কীওয়ার্ড দিয়ে সংজ্ঞায়িত একটি ক্লাস একটি বিমূর্ত শ্রেণীতে পরিণত হয়। আরও, যে কোনো ক্লাস যাতে অন্তত একটি বিমূর্ত পদ্ধতি থাকে তাকেও বিমূর্ত বলে গণ্য করা হয়।

সিনট্যাক্স

<?php
class testclass{
   //
}
?>

যদি আমরা এই ক্লাসের একটি অবজেক্ট তৈরি করার চেষ্টা করি, পিএইচপি পার্সার নিম্নরূপ ত্রুটি থ্রো করে -

$a=new testclass();
PHP Fatal error: Uncaught Error: Cannot instantiate abstract class testclass

বিমূর্ত পদ্ধতি

বিমূর্ত পদ্ধতি শুধুমাত্র তার স্বাক্ষর ঘোষণা করে যেমন এর দৃশ্যমানতা, আর্গুমেন্ট এবং রিটার্ন টাইপ টাইপ ইঙ্গিত সহ এবং কোন কার্যকারিতা নেই। একটি শ্রেণী যে এই ধরনের একটি বিমূর্ত শ্রেণী উত্তরাধিকারসূত্রে প্রাপ্ত হয় তাকে অবশ্যই সমস্ত বিমূর্ত পদ্ধতি ওভাররাইড (সংজ্ঞা প্রদান) করতে হবে। শিশু শ্রেণিতে সংশ্লিষ্ট পদ্ধতিতে অভিভাবক শ্রেণির মতো একই স্বাক্ষর বহন করতে হবে। যদি চাইল্ড ক্লাস এই শর্তটি পূরণ না করে, পিএইচপি পার্সার ব্যতিক্রম নিক্ষেপ করে। একটি ক্লাস যা একটি বিমূর্ত শ্রেণীকে প্রসারিত করে তা এখন তাৎক্ষণিকভাবে করা যেতে পারে, তাই একে কংক্রিট ক্লাস বলা হয়

নিম্নলিখিত উদাহরণে, অভিভাবক শ্রেণীর দুটি বিমূর্ত পদ্ধতি রয়েছে, যার মধ্যে শুধুমাত্র একটি শিশু শ্রেণিতে পুনরায় সংজ্ঞায়িত করা হয়েছে। এর ফলে নিম্নরূপ ত্রুটি দেখা দেয় -

উদাহরণ

<?php
abstract class testclass{
   abstract function test1();
   abstract function hello();
}
class myclass extends testclass{
   function test1(){
      echo "Overrides parent test method";
   }
}
$a=new myclass();
?>

আউটপুট

নিম্নলিখিত ত্রুটি বার্তা

PHP Fatal error: Class myclass contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (testclass::hello)

আর্গুমেন্ট সহ বিমূর্ত পদ্ধতি

যখন বিমূর্ত পদ্ধতিকে আর্গুমেন্ট দিয়ে সংজ্ঞায়িত করা হয়, তখন এটি অবশ্যই চাইল্ড ক্লাসে একই সংখ্যক আর্গুমেন্ট সহ ওভাররাইড করা উচিত

নিম্নলিখিত উদাহরণে, প্যারেন্ট ক্লাসে বিমূর্ত পদ্ধতিতে দুটি আর্গুমেন্ট রয়েছে। চাইল্ড ক্লাস একই ফাংশনকে দুটি আর্গুমেন্ট দিয়ে সংজ্ঞায়িত করে

উদাহরণ

<?php
abstract class testclass{
   abstract function hello($name, $age);
}
class myclass extends testclass{
   function hello($name, $age){
      echo "My name is $name and my age is $age";
   }
}
$a=new myclass();
$a->hello("Ravi",20);
?>

আউটপুট

এটি নিম্নলিখিত আউটপুট তৈরি করবে -

My name is Ravi and my age is 20

  1. PHP-তে get_class_methods() ফাংশন

  2. PHP-তে class_exists() ফাংশন

  3. C# এ বিমূর্ততা কি?

  4. জাভাতে বিমূর্ত ক্লাস