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

প্যাসক্যাল (Pascal) - Computer Programming

206

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

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


OOP এর মৌলিক ধারণাগুলি

  1. ক্লাস (Class):
    • ক্লাস হলো একটি টেমপ্লেট বা ব্লুপ্রিন্ট যা অবজেক্ট তৈরি করার জন্য ব্যবহৃত হয়। এটি একটি নতুন ডেটা টাইপ তৈরি করে যা বিভিন্ন বৈশিষ্ট্য এবং পদ্ধতি ধারণ করে।
  2. অবজেক্ট (Object):
    • অবজেক্ট হলো একটি ক্লাসের একটি ইনস্ট্যান্স বা উদাহরণ। এটি ক্লাসের বৈশিষ্ট্য এবং পদ্ধতির মূল উপাদান হিসেবে কাজ করে।
  3. ইনহেরিটেন্স (Inheritance):
    • ইনহেরিটেন্স হল একটি ক্লাসের বৈশিষ্ট্য ও পদ্ধতি অন্য একটি ক্লাস দ্বারা পাওয়ার প্রক্রিয়া। একটি ক্লাস অন্য ক্লাসের বৈশিষ্ট্য এবং কার্যকলাপকে উত্তরাধিকারসূত্রে পেতে পারে।
  4. পলিমরফিজম (Polymorphism):
    • পলিমরফিজম হলো একটি ফাংশন বা পদ্ধতির বিভিন্ন বাস্তবায়ন। এক বা একাধিক অবজেক্ট একে অপরের পদ্ধতি ব্যবহার করতে পারে।
  5. এনক্যাপসুলেশন (Encapsulation):
    • এনক্যাপসুলেশন হলো ডেটা এবং ফাংশনগুলিকে একটি একক ইউনিটে লুকানো। এটি কোডের নিরাপত্তা এবং আচ্ছাদন তৈরি করতে সাহায্য করে।

প্যাসক্যালের মধ্যে OOP বাস্তবায়ন

প্যাসক্যালের মধ্যে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং বাস্তবায়িত করতে class এবং object কীওয়ার্ড ব্যবহার করা হয়।

উদাহরণ: একটি ক্লাস তৈরি করা

program OOPExample;

type
  // ক্লাস ডেফিনিশন
  TPerson = class
    name: string;
    age: Integer;
    
    // মেথড
    procedure Greet;
    function GetAge: Integer;
  end;

procedure TPerson.Greet;
begin
  writeln('Hello, my name is ', name);
end;

function TPerson.GetAge: Integer;
begin
  GetAge := age;
end;

var
  person1: TPerson;

begin
  // অবজেক্ট তৈরি
  person1 := TPerson.Create;
  person1.name := 'Alice';
  person1.age := 25;

  // মেথড কল করা
  person1.Greet;
  writeln('Age: ', person1.GetAge);
  
  // অবজেক্ট ডিলিট করা
  person1.Free;
end.

এখানে যা ঘটছে:

  • TPerson একটি ক্লাস যা দুটি প্রপার্টি (name এবং age) এবং দুটি মেথড (Greet এবং GetAge) ধারণ করে।
  • person1 হলো TPerson ক্লাসের একটি অবজেক্ট, যা Create মেথড ব্যবহার করে তৈরি হয়।
  • Greet মেথডের মাধ্যমে একটি ব্যক্তিগত পরিচয় প্রিন্ট করা হয়, এবং GetAge মেথডের মাধ্যমে বয়স প্রিন্ট করা হয়।
  • অবজেক্টটি ব্যবহারের পরে Free মেথডের মাধ্যমে ডিলিট করা হয়।

ইনহেরিটেন্স উদাহরণ

প্যাসক্যালের মধ্যে একটি ক্লাস অন্য একটি ক্লাস থেকে বৈশিষ্ট্য এবং মেথড উত্তরাধিকারসূত্রে নিতে পারে।

program InheritanceExample;

type
  // সুপার ক্লাস
  TPerson = class
    name: string;
    age: Integer;

    procedure Greet;
  end;

  procedure TPerson.Greet;
  begin
    writeln('Hello, my name is ', name);
  end;

  // সাব ক্লাস (Inherits TPerson)
  TEmployee = class(TPerson)
    jobTitle: string;

    procedure ShowJob;
  end;

  procedure TEmployee.ShowJob;
  begin
    writeln('I am a ', jobTitle);
  end;

var
  employee1: TEmployee;

begin
  // অবজেক্ট তৈরি
  employee1 := TEmployee.Create;
  employee1.name := 'Bob';
  employee1.age := 30;
  employee1.jobTitle := 'Software Developer';

  // মেথড কল করা
  employee1.Greet;
  employee1.ShowJob;

  // অবজেক্ট ডিলিট করা
  employee1.Free;
end.

এখানে যা ঘটছে:

  • TEmployee ক্লাসটি TPerson ক্লাস থেকে ইনহেরিট করেছে, তাই এটি name এবং age প্রপার্টি এবং Greet মেথড পায়।
  • TEmployee ক্লাসের নিজস্ব jobTitle প্রপার্টি এবং ShowJob মেথড আছে।
  • employee1 হল TEmployee ক্লাসের একটি অবজেক্ট, যা Greet (TPerson থেকে) এবং ShowJob (TEmployee থেকে) মেথড ব্যবহার করে।

সারাংশ

প্যাসক্যালের মধ্যে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP) ব্যবহারের মাধ্যমে আপনি আপনার প্রোগ্রামকে আরো মডুলার, পুনঃব্যবহারযোগ্য এবং সহজে রক্ষণাবেক্ষণযোগ্য করতে পারেন। প্যাসক্যাল OOP সমর্থন করে ক্লাস, অবজেক্ট, ইনহেরিটেন্স, পলিমরফিজম এবং এনক্যাপসুলেশন এর মতো মৌলিক OOP ধারণা। এই ধারণাগুলি প্যাসক্যাল ভাষায় সহজেই ব্যবহার করা যায়, যা প্রোগ্রামিংকে আরো শক্তিশালী এবং কার্যকরী করে তোলে।

Content added By

অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর দুটি গুরুত্বপূর্ণ ধারণা হল ক্লাস (Class) এবং **অবজেক্ট (Object)**। এই দুটি ধারণা প্রোগ্রামিং ভাষায় একসঙ্গে কাজ করে এবং একটি শক্তিশালী ডেভেলপমেন্ট পরিবেশ তৈরি করে। এখানে ক্লাস এবং অবজেক্টের মৌলিক ধারণা ব্যাখ্যা করা হবে।


১. ক্লাস (Class)

ক্লাস হলো একটি ব্লুপ্রিন্ট বা টেমপ্লেট যা অবজেক্ট তৈরি করার জন্য ব্যবহৃত হয়। এটি একটি ডাটা টাইপের মতো কাজ করে যা অবজেক্টের বৈশিষ্ট্য এবং আচরণ নির্ধারণ করে। ক্লাসের মধ্যে ডেটা (প্রপার্টি বা ফিল্ড) এবং ফাংশন (মেথড) থাকে যা ঐ ডেটার উপর কাজ করে।

ক্লাসের গঠন:

type
  ClassName = class
    // প্রপার্টি বা ভেরিয়েবল
    Field1: Integer;
    Field2: String;
    
    // মেথড বা ফাংশন
    procedure Method1;
    function Method2: Integer;
  end;
  • ClassName: ক্লাসের নাম।
  • Field1, Field2: ক্লাসের ভেরিয়েবল বা প্রপার্টি, যেগুলি অবজেক্টের অবস্থাকে প্রতিনিধিত্ব করে।
  • Method1, Method2: ক্লাসের মধ্যে ফাংশন বা মেথড, যেগুলি অবজেক্টের আচরণ নির্ধারণ করে।

উদাহরণ:

type
  Car = class
    Brand: string;
    Model: string;
    Year: Integer;
    
    procedure Start;
    begin
      writeln('The car is starting');
    end;
    
    function GetBrand: string;
    begin
      Result := Brand;
    end;
  end;

এখানে Car ক্লাসের মধ্যে কিছু প্রপার্টি (যেমন Brand, Model, Year) এবং মেথড (যেমন Start, GetBrand) রয়েছে।


২. অবজেক্ট (Object)

অবজেক্ট হলো একটি ক্লাসের একটি নির্দিষ্ট উদাহরণ (ইনস্ট্যান্স)। যখন একটি ক্লাস ডিফাইন করা হয়, তখন তার ভিত্তিতে অনেকগুলো অবজেক্ট তৈরি করা যেতে পারে। অবজেক্টটি একটি নির্দিষ্ট ক্লাসের প্রপার্টি এবং মেথড ব্যবহার করতে পারে এবং বাস্তব জীবনের উপাদান বা বস্তু হিসেবে কাজ করে।

অবজেক্ট তৈরি এবং ব্যবহার:

var
  myCar: Car;

begin
  myCar := Car.Create;  // অবজেক্ট তৈরি
  myCar.Brand := 'Toyota'; // প্রপার্টি অ্যাক্সেস
  myCar.Model := 'Corolla';
  myCar.Year := 2020;
  
  writeln(myCar.GetBrand);  // মেথড কল
  myCar.Start;  // মেথড কল
  
  myCar.Free;  // অবজেক্টের মেমরি মুক্ত করা
end;

এখানে:

  • myCar হলো Car ক্লাসের একটি অবজেক্ট।
  • myCar := Car.Create লাইনটি একটি নতুন অবজেক্ট তৈরি করছে।
  • myCar.Brand, myCar.Model, myCar.Year এই প্রপার্টিগুলি অবজেক্টের মান সেট করছে।
  • myCar.Start এবং myCar.GetBrand হলো মেথড কল করা।

ক্লাস এবং অবজেক্টের মধ্যে পার্থক্য

বৈশিষ্ট্যক্লাস (Class)অবজেক্ট (Object)
সংজ্ঞাএকটি টেমপ্লেট বা ব্লুপ্রিন্ট যা অবজেক্ট তৈরি করার জন্য ব্যবহৃত হয়একটি নির্দিষ্ট ক্লাসের উদাহরণ বা ইনস্ট্যান্স
মেমরি বরাদ্দক্লাসে মেমরি বরাদ্দ করা হয় নাঅবজেক্ট তৈরির সময় মেমরি বরাদ্দ হয়
এটি কী নির্ধারণ করে?অবজেক্টের বৈশিষ্ট্য (প্রপার্টি) এবং আচরণ (মেথড)ক্লাসের ডেটা এবং আচরণ যা বাস্তবে কাজ করে
ব্যবহারঅবজেক্ট তৈরির জন্য একটি রূপরেখাক্লাসের একটি বাস্তব উদাহরণ হিসেবে ব্যবহৃত হয়

সারাংশ

  • ক্লাস (Class) একটি টেমপ্লেট বা ব্লুপ্রিন্ট যা অবজেক্টের বৈশিষ্ট্য এবং আচরণ নির্ধারণ করে।
  • অবজেক্ট (Object) হলো একটি ক্লাসের একটি নির্দিষ্ট উদাহরণ বা ইনস্ট্যান্স যা বাস্তব জীবনের উপাদানকে প্রতিনিধিত্ব করে।

ক্লাস এবং অবজেক্টের মাধ্যমে প্রোগ্রামিং কোডকে আরও সংগঠিত এবং পুনঃব্যবহারযোগ্য করা সম্ভব হয়।

Content added By

এই তিনটি ধারণা অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (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

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


১. কনস্ট্রাক্টর (Constructor)

কনস্ট্রাক্টর হল একটি বিশেষ ধরনের মেথড যা একটি ক্লাসের অবজেক্ট তৈরি করার সময় স্বয়ংক্রিয়ভাবে কল হয়। কনস্ট্রাক্টর মূলত ক্লাসের অবজেক্ট ইনিশিয়ালাইজ করার জন্য ব্যবহৃত হয়, যেমন কোনো ভেরিয়েবল বা প্রপার্টি সেট করা।

কনস্ট্রাক্টরের বৈশিষ্ট্য:

  • কনস্ট্রাক্টরের নাম সাধারণত ক্লাসের নামের মতো হয়।
  • কনস্ট্রাক্টর একটি রিটার্ন টাইপ (ফলস্ বা ভ্যালু) পায় না।
  • কনস্ট্রাক্টরটি যখন অবজেক্ট তৈরি করা হয় তখন স্বয়ংক্রিয়ভাবে কল হয়।

উদাহরণ: কনস্ট্রাক্টরের ব্যবহার (Pascal)

program ConstructorExample;

type
  TPerson = class
    name: string;
    age: Integer;

    constructor Create(n: string; a: Integer);  // কনস্ট্রাক্টর ডিফাইন করা
    begin
      name := n;
      age := a;
    end;
    
    procedure Display;
    begin
      writeln('Name: ', name);
      writeln('Age: ', age);
    end;
  end;

var
  person: TPerson;

begin
  person := TPerson.Create('Aziz', 25);  // কনস্ট্রাক্টর কল হচ্ছে
  person.Display;
  person.Free;  // অবজেক্ট ধ্বংস
end.

আউটপুট:

Name: Aziz
Age: 25

এখানে, Create কনস্ট্রাক্টরটি name এবং age ভেরিয়েবলগুলো ইনিশিয়ালাইজ করে, এবং Display পদ্ধতি অবজেক্টের তথ্য প্রদর্শন করে।


২. ডেস্ট্রাক্টর (Destructor)

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

ডেস্ট্রাক্টরের বৈশিষ্ট্য:

  • ডেস্ট্রাক্টরের নাম সাধারণত Destroy হয়।
  • এটি কোন রিটার্ন টাইপ পায় না।
  • যখন অবজেক্টটি মুক্ত করা হয় তখন ডেস্ট্রাক্টর কল হয়, এবং এটি অবজেক্টের মেমরি বা অন্যান্য রিসোর্স মুক্ত করে।

উদাহরণ: ডেস্ট্রাক্টরের ব্যবহার (Pascal)

program DestructorExample;

type
  TPerson = class
    name: string;
    age: Integer;

    constructor Create(n: string; a: Integer);  
    begin
      name := n;
      age := a;
    end;

    procedure Display;
    begin
      writeln('Name: ', name);
      writeln('Age: ', age);
    end;
    
    destructor Destroy;  // ডেস্ট্রাক্টর ডিফাইন করা
    begin
      writeln('Destructor called for ', name);
      inherited Destroy;  // প্যারেন্ট ক্লাসের ডেস্ট্রাক্টর কল করা
    end;
  end;

var
  person: TPerson;

begin
  person := TPerson.Create('Aziz', 25);  
  person.Display;
  person.Free;  // ডেস্ট্রাক্টর কল হবে
end.

আউটপুট:

Name: Aziz
Age: 25
Destructor called for Aziz

এখানে, Destroy ডেস্ট্রাক্টরটি অবজেক্ট person এর জন্য কল হচ্ছে যখন person.Free করা হয়, এবং মেমরি বা অন্যান্য রিসোর্স মুক্ত হচ্ছে।


কনস্ট্রাক্টর এবং ডেস্ট্রাক্টরের পার্থক্য

বৈশিষ্ট্যকনস্ট্রাক্টর (Constructor)ডেস্ট্রাক্টর (Destructor)
কোন সময় কল হয়?অবজেক্ট তৈরি হওয়ার সময়।অবজেক্ট ধ্বংস হওয়ার সময়।
নামক্লাসের নামের মতো হয়।সাধারণত Destroy হয়।
ফাংশনালিটিঅবজেক্ট ইনিশিয়ালাইজ করা।অবজেক্টের মেমরি বা রিসোর্স মুক্ত করা।
রিটার্ন টাইপকোন রিটার্ন টাইপ থাকে না।কোন রিটার্ন টাইপ থাকে না।

সারাংশ

  • কনস্ট্রাক্টর (Constructor) হল একটি বিশেষ মেথড যা অবজেক্ট তৈরি করার সময় ফাংশনের মতো কাজ করে এবং এটি অবজেক্টের প্রাথমিক মান ইনিশিয়ালাইজ করার জন্য ব্যবহৃত হয়।
  • ডেস্ট্রাক্টর (Destructor) হল একটি বিশেষ মেথড যা অবজেক্ট ধ্বংস হওয়ার সময় কল হয় এবং এটি অবজেক্টের রিসোর্স বা মেমরি মুক্ত করতে ব্যবহৃত হয়।

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

Content added By

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


১. মেথড ওভারলোডিং (Method Overloading)

মেথড ওভারলোডিং হল একই মেথড নামের সাথে একাধিক মেথড তৈরি করা, যেখানে প্রতিটি মেথডের প্যারামিটার ভিন্ন থাকে (যেমন সংখ্যায় বা ধরণে)। এটি মূলত একই ফাংশন বা মেথডের বৈচিত্র্যময় সংস্করণ তৈরির প্রক্রিয়া।

মেথড ওভারলোডিং এর উদ্দেশ্য:

  • একই মেথড নামের সাথে বিভিন্ন প্যারামিটার ব্যবহার করে একাধিক কাজ সম্পাদন করা।
  • এটি কোডের পুনরাবৃত্তি (redundancy) কমাতে সাহায্য করে এবং কোড ক্লিন এবং কমপ্যাক্ট রাখে।

উদাহরণ (Method Overloading in Java):

class Calculator {
    // Method to add two integers
    int add(int a, int b) {
        return a + b;
    }

    // Method to add three integers
    int add(int a, int b, int c) {
        return a + b + c;
    }

    // Method to add two doubles
    double add(double a, double b) {
        return a + b;
    }
}

public class Main {
    public static void main(String[] args) {
        Calculator calc = new Calculator();
        System.out.println(calc.add(10, 20));          // Calls the first add() method
        System.out.println(calc.add(10, 20, 30));      // Calls the second add() method
        System.out.println(calc.add(10.5, 20.5));      // Calls the third add() method
    }
}

এখানে, add() মেথডটি তিনটি ভিন্নভাবে ওভারলোড করা হয়েছে:

  • দুটি পূর্ণসংখ্যার যোগফল
  • তিনটি পূর্ণসংখ্যার যোগফল
  • দুটি দশমিক সংখ্যা যোগফল

মেথড ওভারলোডিং এর মধ্যে প্যারামিটার সংখ্যা বা ধরণে পরিবর্তন থাকতে হবে, তবে মেথডের নাম একই থাকবে।


২. মেথড ওভাররাইডিং (Method Overriding)

মেথড ওভাররাইডিং হল একটি সুপার ক্লাসের মেথডকে সাব-ক্লাসে আবার নতুন করে সংজ্ঞায়িত করা (অথবা পুনরায় বাস্তবায়ন করা)। এটি সুপার ক্লাসের মেথডের আচরণ পরিবর্তন করে এবং সাব-ক্লাসে নতুন আচরণ নির্ধারণ করে।

মেথড ওভাররাইডিং এর উদ্দেশ্য:

  • সুপার ক্লাসের মেথডের আচরণকে পরিবর্তন বা উন্নত করা।
  • যদি একই মেথড নাম এবং প্যারামিটার থাকে, তবে সাব-ক্লাসে নতুনভাবে আচরণ সংজ্ঞায়িত করা।

উদাহরণ (Method Overriding in Java):

class Animal {
    // Method in super class
    void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    // Overriding the sound() method in subclass (Dog)
    void sound() {
        System.out.println("Dog barks");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Animal();
        myAnimal.sound();  // Calls the super class method

        Dog myDog = new Dog();
        myDog.sound();     // Calls the overridden method in subclass
    }
}

এখানে:

  • Animal ক্লাসে একটি sound() মেথড রয়েছে যা "Animal makes a sound" প্রিন্ট করে।
  • Dog ক্লাসে sound() মেথডটি Animal ক্লাসের মেথডকে ওভাররাইড করে "Dog barks" প্রিন্ট করে।

এই উদাহরণে Dog ক্লাসে sound() মেথডটি Animal ক্লাসের sound() মেথডকে ওভাররাইড করেছে।


মেথড ওভারলোডিং এবং মেথড ওভাররাইডিং এর মধ্যে পার্থক্য:

বৈশিষ্ট্যমেথড ওভারলোডিং (Method Overloading)মেথড ওভাররাইডিং (Method Overriding)
কোডের ব্যবহারএকই মেথড নামের সঙ্গে বিভিন্ন প্যারামিটার ব্যবহার করা হয়।সুপার ক্লাসের মেথডের আচরণ পরিবর্তন করা হয়।
মেথডের নামএকই নাম, কিন্তু প্যারামিটার বা ডেটা টাইপে পার্থক্য।একই নাম এবং প্যারামিটার ব্যবহার করা হয়।
পরিবর্তনপ্যারামিটার সংখ্যা বা টাইপ পরিবর্তন হয়।মেথডের বাস্তবায়ন (Implementation) পরিবর্তন হয়।
ফলাফলএকাধিক মেথড তৈরি করা হয়।মেথডের আচরণ পরিবর্তন হয়।
পর্যবেক্ষণকম্পাইল টাইমে (Compile-time) মেথড নির্বাচন হয়।রানটাইম (Runtime) এ মেথড নির্বাচন হয়।

সারাংশ (Summary)

  • মেথড ওভারলোডিং হল একই মেথড নামের মধ্যে বিভিন্ন প্যারামিটার বা আর্গুমেন্ট দিয়ে একাধিক মেথড সংজ্ঞায়িত করা। এটি কম্পাইল টাইমে নির্ধারিত হয়।
  • মেথড ওভাররাইডিং হল সুপার ক্লাসের মেথডের আচরণ সাব-ক্লাসে নতুনভাবে সংজ্ঞায়িত করা। এটি রানটাইমে নির্ধারিত হয়।

এই দুটি কৌশল OOP প্রোগ্রামিংয়ের শক্তিশালী উপাদান এবং কোডকে আরও পুনরায় ব্যবহারযোগ্য এবং সুনির্দিষ্ট করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...