PHP-তে OOP-তে বিমূর্ত পদ্ধতি

বিমূর্ত ক্লাসগুলিতে বিমূর্ত পদ্ধতিও থাকতে পারে। এই ধরনের পদ্ধতির বাস্তবায়ন থাকা উচিত নয়, বরং সেগুলি সন্তান ক্লাসগুলিতে এই পদ্ধতিগুলি থাকা আবশ্যক তা নির্দেশ করার জন্য প্রয়োজন। এবং প্রকৃতপক্ষে এই পদ্ধতিগুলির বাস্তবায়ন সন্তান ক্লাসগুলির দায়িত্ব।

একটি পদ্ধতিকে বিমূর্ত হিসাবে ঘোষণা করার জন্য, এটির ঘোষণার সময় abstract কীওয়ার্ডটি লিখতে হবে।

চলুন অনুশীলনে চেষ্টা করি। ধরা যাক User ক্লাসের সমস্ত সন্তান ক্লাসের increaseRevenue পদ্ধতি থাকা আবশ্যক।

এই পদ্ধতিটি ব্যবহারকারীর বর্তমান আয় নেবে এবং এটিকে একটি প্যারামিটার হিসেবে প্রেরিত নির্দিষ্ট পরিমাণ দ্বারা বৃদ্ধি করবে।

User ক্লাস নিজেই জানে না কোন নির্দিষ্ট আয় উত্তরাধিকারী পাবে -毕竟 একজন কর্মচারীর জন্য এটি বেতন, আর একজন শিক্ষার্থীর জন্য - বৃত্তি। তাই প্রতিটি সন্তান ক্লাস এই পদ্ধতিটি তাদের নিজস্বভাবে বাস্তবায়ন করবে।

এখানে মূল বিষয় হল যে User ক্লাসের বিমূর্ত পদ্ধতি প্রোগ্রামারকে সন্তান ক্লাসগুলিতে এই পদ্ধতিটি বাস্তবায়ন করতে বাধ্য করে, অন্যথায় PHP একটি ত্রুটি দেবে। এইভাবে আপনি, বা অন্য কোন প্রোগ্রামার, যিনি আপনার কোড নিয়ে কাজ করছেন, কোনভাবেই একটি সন্তান ক্লাসে প্রয়োজনীয় পদ্ধতি বাস্তবায়ন করতে ভুলবেন না।

সুতরাং, চলুন অনুশীলনে চেষ্টা করি। User ক্লাসে increaseRevenue বিমূর্ত পদ্ধতিটি যোগ করি:

User.php<?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 একটি ত্রুটি দেবে।

চলুন এখন Employee ক্লাসে increaseRevenue পদ্ধতির বাস্তবায়ন লিখি:

Employee.php<?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;
    }
  }
?>

আসুন আমাদের ক্লাসের কাজ পরীক্ষা করি:

index.php<?php
  $employee = new Employee;
  $employee->setName('john');
  $employee->setSalary(1000);
  $employee->increaseRevenue(100);
  
  echo $employee->getSalary();
?>

increaseRevenue পদ্ধতিটি Student ক্লাসেও বাস্তবায়ন করি। শুধুমাত্র এখন আমাদের পদ্ধতিটি বৃত্তি বৃদ্ধি করবে:

Student.php<?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;
    }
  }
?>
Задание 1

আপনার User ক্লাসে একই বিমূর্ত পদ্ধতি increaseRevenue যোগ করুন। Employee এবং Student ক্লাসে এই পদ্ধতির বাস্তবায়ন লিখুন।

Задание 2

Figure ক্লাসে চিত্রের ক্ষেত্রফল এবং পরিধি পাওয়ার জন্য বিমূর্ত পদ্ধতি তৈরি করুন।