এই তিনটি ধারণা অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (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-এর মূল স্তম্ভ এবং সফটওয়্যার ডেভেলপমেন্টে কার্যকারিতা এবং কোডের মান উন্নত করতে সহায়তা করে।
Read more