Inheritance, Polymorphism, এবং Encapsulation গাইড ও নোট

Computer Programming - প্যাসক্যাল (Pascal) - Object-Oriented Programming in Pascal (অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং)
247

এই তিনটি ধারণা অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর মৌলিক স্তম্ভ। OOP-এর মাধ্যমে কোডের পুনঃব্যবহারযোগ্যতা, সুনির্দিষ্টতা এবং মোডুলারিটি অর্জন করা যায়। নিচে এই তিনটি মূল ধারণা বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে।


১. ইনহেরিটেন্স (Inheritance)

ইনহেরিটেন্স হলো এমন একটি বৈশিষ্ট্য, যার মাধ্যমে একটি ক্লাস (subclass বা derived class) আরেকটি ক্লাস (superclass বা base class) এর গুণাবলী (properties) এবং আচরণ (methods) উত্তরাধিকারসূত্রে লাভ করতে পারে। এটি কোড পুনঃব্যবহার (code reusability) নিশ্চিত করে এবং সহজেই নতুন ফিচার যোগ করার সুবিধা দেয়।

উদাহরণ:

program InheritanceExample;

type
  // সুপার ক্লাস (Base Class)
  Animal = class
    procedure Speak;
  end;

  // সাব ক্লাস (Derived Class)
  Dog = class(Animal)
    procedure Speak; override;
  end;

// সুপার ক্লাসের মেথড
procedure Animal.Speak;
begin
  writeln('Animal makes a sound');
end;

// সাব ক্লাসের মেথড (এটি সুপার ক্লাসের Speak মেথডকে ওভাররাইড করেছে)
procedure Dog.Speak;
begin
  writeln('Dog barks');
end;

var
  myAnimal: Animal;
  myDog: Dog;
begin
  myAnimal := Animal.Create;
  myDog := Dog.Create;

  myAnimal.Speak;  // Output: Animal makes a sound
  myDog.Speak;     // Output: Dog barks

  myAnimal.Free;
  myDog.Free;
end.

এখানে:

  • Animal হলো সুপার ক্লাস, এবং Dog হলো সাব ক্লাস যা Animal ক্লাস থেকে ইনহেরিট করেছে।
  • Dog ক্লাসে Speak মেথডটি সুপার ক্লাসের মেথডকে ওভাররাইড করেছে।

২. পলিমর্ফিজম (Polymorphism)

পলিমর্ফিজম হলো এমন একটি বৈশিষ্ট্য, যার মাধ্যমে একাধিক অবজেক্ট একই মেথড ব্যবহার করলেও তাদের আচরণ ভিন্ন হতে পারে। এই ধারণা ইনহেরিটেন্স এবং মেথড ওভাররাইডিংয়ের মাধ্যমে অর্জিত হয়। মূলত, এটি "one interface, many implementations" এর মত কাজ করে।

উদাহরণ:

program PolymorphismExample;

type
  // সুপার ক্লাস
  Animal = class
    procedure Speak; virtual;
  end;

  // সাব ক্লাস
  Dog = class(Animal)
    procedure Speak; override;
  end;

  Cat = class(Animal)
    procedure Speak; override;
  end;

// সুপার ক্লাসের মেথড
procedure Animal.Speak;
begin
  writeln('Animal makes a sound');
end;

// ডগ ক্লাসের মেথড
procedure Dog.Speak;
begin
  writeln('Dog barks');
end;

// ক্যাট ক্লাসের মেথড
procedure Cat.Speak;
begin
  writeln('Cat meows');
end;

var
  myAnimal: Animal;
  myDog: Dog;
  myCat: Cat;
begin
  myAnimal := Animal.Create;
  myDog := Dog.Create;
  myCat := Cat.Create;

  myAnimal.Speak;  // Output: Animal makes a sound
  myDog.Speak;     // Output: Dog barks
  myCat.Speak;     // Output: Cat meows

  myAnimal.Free;
  myDog.Free;
  myCat.Free;
end.

এখানে:

  • Speak মেথডটি তিনটি ভিন্ন ক্লাসে (Animal, Dog, Cat) আছে, তবে একই নামের মেথড হলেও তাদের আচরণ ভিন্ন।
  • এটি পলিমর্ফিজম। একে dynamic polymorphism বলা হয় কারণ মেথডের আচরণ তখনই নির্ধারিত হয় যখন সেই মেথড কল করা হয়।

৩. এনক্যাপসুলেশন (Encapsulation)

এনক্যাপসুলেশন হলো একটি অবজেক্টের অভ্যন্তরীণ অবস্থা এবং আচরণকে একটি ক্লাসের মধ্যে আবদ্ধ করে রাখা, যাতে বাইরের কোড বা ক্লাসগুলো সরাসরি ঐ অভ্যন্তরীণ অবস্থা পরিবর্তন না করতে পারে। এটি ডেটার নিরাপত্তা নিশ্চিত করে এবং অবজেক্টের ডেটার উপর নিয়ন্ত্রণ রাখে।

উদাহরণ:

program EncapsulationExample;

type
  BankAccount = class
  private
    balance: Integer;  // private field
  public
    procedure Deposit(amount: Integer);
    procedure Withdraw(amount: Integer);
    function GetBalance: Integer;
  end;

procedure BankAccount.Deposit(amount: Integer);
begin
  balance := balance + amount;
end;

procedure BankAccount.Withdraw(amount: Integer);
begin
  if balance >= amount then
    balance := balance - amount
  else
    writeln('Insufficient funds');
end;

function BankAccount.GetBalance: Integer;
begin
  Result := balance;
end;

var
  myAccount: BankAccount;
begin
  myAccount := BankAccount.Create;
  myAccount.Deposit(1000);
  myAccount.Withdraw(500);
  writeln('Current Balance: ', myAccount.GetBalance);  // Output: Current Balance: 500
  myAccount.Free;
end.

এখানে:

  • balance ফিল্ডটি private যা বাইরে থেকে অ্যাক্সেস করা যায় না।
  • Deposit, Withdraw, এবং GetBalance মেথডগুলি পাবলিক, যা অবজেক্টের ভেতরের balance ফিল্ডের সাথে কাজ করে।
  • বাইরের কোড সরাসরি balance অ্যাক্সেস করতে পারে না, কিন্তু মেথডের মাধ্যমে এই ডেটা নিয়ন্ত্রণ করা হয়, এটি এনক্যাপসুলেশনের উদাহরণ।

সারাংশ

  • ইনহেরিটেন্স: এক ক্লাস অন্য ক্লাসের গুণাবলী এবং আচরণ উত্তরাধিকারসূত্রে লাভ করে।
  • পলিমর্ফিজম: এক নামের মেথডের বিভিন্ন বাস্তবায়ন (implementation) থাকতে পারে, যা একাধিক ক্লাসে ব্যবহৃত হতে পারে।
  • এনক্যাপসুলেশন: একটি ক্লাসের অভ্যন্তরীণ ডেটা এবং আচরণ আবদ্ধ রাখা, যাতে বাইরের কোড সরাসরি এই ডেটা অ্যাক্সেস বা পরিবর্তন করতে না পারে।

এই তিনটি ধারণা OOP-এর মূল স্তম্ভ এবং সফটওয়্যার ডেভেলপমেন্টে কার্যকারিতা এবং কোডের মান উন্নত করতে সহায়তা করে।

Content added By
Promotion

Are you sure to start over?

Loading...