Skip to main content

Command Palette

Search for a command to run...

Abstract Classes and Interfaces

Published
3 min readView as Markdown
Abstract Classes and Interfaces

PHP Object-Oriented Programming (OOP) এর মাধ্যমে বড় এবং জটিল প্রজেক্ট সহজভাবে ম্যানেজ করা যায়। যখন আপনার কোডকে আরও বেশি ফ্লেক্সিবল, রিইউজেবল এবং স্ট্রাকচার্ড করতে হয়, তখন Abstract Classes এবং Interfaces খুবই কার্যকরী হয়। আজ আমরা এ দুটি কনসেপ্ট বিস্তারিতভাবে শিখবো।

Abstract Classes (অ্যাবস্ট্রাক্ট ক্লাস)

Abstract Classes হলো এমন ক্লাস যা সরাসরি ইনস্ট্যান্স করা যায় না। অর্থাৎ, আপনি new করে সরাসরি একটি অবজেক্ট তৈরি করতে পারবেন না। এটি মূলত একটি ব্লুপ্রিন্ট হিসেবে কাজ করে, যা অন্যান্য ক্লাসগুলোকে ফলো করতে হয়।

Abstract Class এর মূল বৈশিষ্ট্য:

  1. Abstract ক্লাসে কিছু ফাংশন abstract হতে পারে, যা চাইল্ড ক্লাসে অবশ্যই ইমপ্লিমেন্ট করতে হবে।

  2. Abstract ক্লাসে নরমাল (কনক্রিট) মেথডও থাকতে পারে।

  3. সরাসরি ইনস্ট্যান্স করা যায় না।

উদাহরণ:

<?php
abstract class Vehicle {
    // Abstract method
    abstract public function startEngine();

    // Normal method
    public function stopEngine() {
        echo "Engine stopped\n";
    }
}

class Car extends Vehicle {
    public function startEngine() {
        echo "Car engine started\n";
    }
}

// $vehicle = new Vehicle(); // এটি সম্ভব নয়
$car = new Car();
$car->startEngine();  // Output: Car engine started
$car->stopEngine();   // Output: Engine stopped
?>

ব্যাখ্যা:

  • Vehicle একটি abstract ক্লাস।

  • startEngine() হল abstract মেথড, যা চাইল্ড ক্লাস Car এ ইমপ্লিমেন্ট করা হয়েছে।

  • stopEngine() হল সাধারণ মেথড, যা চাইল্ড ক্লাসে সরাসরি ব্যবহার করা যায়।


Interfaces (ইন্টারফেস)

Interface হলো একটি চুক্তি (contract) যা বলে দেয় যে, যে কোনো ক্লাস এই ইন্টারফেসটি ইমপ্লিমেন্ট করবে, তাকে অবশ্যই এই ইন্টারফেসের সব মেথড ইমপ্লিমেন্ট করতে হবে।

Interface এর মূল বৈশিষ্ট্য:

  1. Interface এ শুধুমাত্র মেথড ডিক্লারেশন থাকে, কনক্রিট কোড নয়।

  2. একাধিক ইন্টারফেস একটি ক্লাসে ইমপ্লিমেন্ট করা যায়।

  3. Interface এ প্রপার্টি ডিফাইন করা যায় না (PHP 8+ এ কন্সট্যান্ট ব্যতীত)।

উদাহরণ:

<?php
interface Logger {
    public function log($message);
}

class FileLogger implements Logger {
    public function log($message) {
        echo "Logging to file: $message\n";
    }
}

class DatabaseLogger implements Logger {
    public function log($message) {
        echo "Logging to database: $message\n";
    }
}

$fileLogger = new FileLogger();
$fileLogger->log("File logger active");  // Output: Logging to file: File logger active

$dbLogger = new DatabaseLogger();
$dbLogger->log("Database logger active"); // Output: Logging to database: Database logger active
?>

ব্যাখ্যা:

  • Logger একটি ইন্টারফেস যা log() মেথড ডিক্লারেশন করে।

  • FileLogger এবং DatabaseLogger ক্লাসগুলো Logger ইন্টারফেস ইমপ্লিমেন্ট করে।

  • ইন্টারফেস ব্যবহার করলে আমরা কোডকে আরও modular এবং scalable করতে পারি।


Abstract Classes vs Interfaces

বৈশিষ্ট্যAbstract ClassInterface
ইনস্ট্যান্সসরাসরি ইনস্ট্যান্স করা যায় নাসরাসরি ইনস্ট্যান্স করা যায় না
মেথডAbstract + Normal Method থাকতে পারেশুধুমাত্র মেথড ডিক্লারেশন থাকে
মাল্টিপল ইনহেরিট্যান্সশুধুমাত্র একটিতে ইনহেরিট করা যায়একাধিক ইন্টারফেস ইমপ্লিমেন্ট করা যায়
প্রপার্টিপ্রপার্টি থাকতে পারেকন্সট্যান্ট ব্যতীত প্রপার্টি থাকে না

সারসংক্ষেপ:

  • যদি আপনি চাইবেন একটি বেস ক্লাসের মধ্যে কিছু সাধারণ ফাংশন থাকুক, ব্যবহার করুন Abstract Class

  • যদি আপনার ক্লাসগুলোকে একটি চুক্তি অনুযায়ী কাজ করতে বাধ্য করতে চান, ব্যবহার করুন Interface


বাস্তব জীবনের উদাহরণ

ধরা যাক আমরা একটি ই-কমার্স সিস্টেম বানাচ্ছি। এখানে বিভিন্ন পেমেন্ট গেটওয়ে থাকতে পারে।

interface PaymentGateway {
    public function pay($amount);
}

class PayPal implements PaymentGateway {
    public function pay($amount) {
        echo "Paid $amount via PayPal\n";
    }
}

class Stripe implements PaymentGateway {
    public function pay($amount) {
        echo "Paid $amount via Stripe\n";
    }
}

$paypal = new PayPal();
$paypal->pay(100);  // Paid 100 via PayPal

$stripe = new Stripe();
$stripe->pay(200);  // Paid 200 via Stripe

এখানে ইন্টারফেস নিশ্চিত করছে, সব পেমেন্ট গেটওয়ে ক্লাসে pay() মেথড থাকবে।

Advanced PHP OOP এর Abstract Classes এবং Interfaces ব্যবহার করলে আপনার কোড:

  • Modular, scalable এবং re-usable হয়।

  • বড় প্রজেক্টে maintenance সহজ হয়।

  • কোডের consistency এবং flexibility বৃদ্ধি পায়।

PHP প্রজেক্টে abstract classes এবং interfaces ঠিকভাবে ব্যবহার করলে, বড় টিমে কাজ করাও অনেক সহজ হয়।

3 views

More from this blog

HTML-2026

HTML-কে আমরা সাধারণত ওয়েবের সবচেয়ে পুরোনো এবং স্থির প্রযুক্তিগুলোর একটি হিসেবে দেখি। CSS ও JavaScript যেখানে দ্রুত নতুন নতুন feature পাচ্ছে, HTML তুলনামূলকভাবে ধীরে পরিবর্তিত হয়। তবে ধীরে পরিবর্তন হওয়

Sep 3, 202612 min read2
HTML-2026
S

SliceTech

97 posts

Sharing basic web development tutorials.