মূল কনটেন্টে যান

খুঁজুন

  • সরকারি চাকরির তালিকা
  • সহজে শেখার শর্টকাট ও ফ্ল্যাশ কার্ড
  • MCQ অনুশীলন
  • মক টেস্ট
  • সব বিষয়
  • আমার ড্যাশবোর্ড
  • স্টাডি প্ল্যান
  • ভুল প্রশ্ন
  • অফলাইন লাইব্রেরি

Four Pillars of OOP

OOP-এর চার স্তম্ভ

OOP-এর চার স্তম্ভ: Overloading বনাম Overriding

পড়তে প্রায় ১০ মিনিট

এই পাঠ শেষে আপনি পারবেন

  • OOP-এর ৪টি মূল স্তম্ভের সংজ্ঞা ও বাস্তব উদাহরণ দেওয়া
  • Compile-time (Overloading) ও Runtime (Overriding) polymorphism আলাদা করা
  • Abstract class ও Interface-এর পার্থক্য লিখিত পরীক্ষায় উপস্থাপন করা

OOP-এর চারটি স্তম্ভ

  1. Encapsulation (এনক্যাপসুলেশন): ডেটা (fields) এবং মেথডকে একটি ক্লাসের ভেতরে আবদ্ধ করা এবং private অ্যাক্সেস মডিফায়ার দিয়ে ডেটা লুকিয়ে (Data Hiding) পাবলিক getter/setter-এর মাধ্যমে নিয়ন্ত্রিত অ্যাক্সেস দেওয়া।
  2. Abstraction (অ্যাবস্ট্রাকশন): ভেতরের জটিল বাস্তবায়ন লুকিয়ে ব্যবহারকারীকে কেবল প্রয়োজনীয় ইন্টারফেস দেখানো (যেমন: গাড়ির ব্রেক চাপলে কীভাবে হাইড্রোলিক কাজ করে তা না জেনেও গাড়ি থামানো)।
  3. Inheritance (ইনহেরিট্যান্স): প্যারেন্ট (Base/Super) ক্লাসের বৈশিষ্ট্য চাইল্ড (Derived/Sub) ক্লাসে পুনর্ব্যবহার করা (IS-A সম্পর্ক)।
  4. Polymorphism (পলিমরফিজম): একই নামের মেথড বা অপারেটরের ভিন্ন পরিস্থিতিতে ভিন্ন আচরণ করা।

Method Overloading বনাম Method Overriding

লিখিত পরীক্ষায় (যেমন বাংলাদেশ ব্যাংক ও বিপিএসসি) এই পার্থক্যটি অত্যন্ত গুরুত্বপূর্ণ:

  • Method Overloading (Compile-time / Static Polymorphism): একই ক্লাসের ভেতরে একই নামের একাধিক মেথড থাকে, কিন্তু তাদের parameter সংখ্যা বা টাইপ ভিন্ন হয়। শুধু return type পরিবর্তন করে মেথড ওভারলোড করা যায় না।
  • Method Overriding (Runtime / Dynamic Polymorphism): প্যারেন্ট ক্লাসের মেথডকে চাইল্ড ক্লাসে হুবহু একই নাম, একই parameter list ও সমতুল্য return type রেখে নতুনভাবে ইমপ্লিমেন্ট করা হয়। কোন মেথডটি কল হবে তা রানটাইমে অবজেক্টের প্রকৃত টাইপ অনুযায়ী নির্ধারিত হয় (Dynamic Method Dispatch / virtual মেথড)।
class Bank {
public:
    virtual double interestRate() { return 5.0; }
    // Overloading: একই নাম, ভিন্ন প্যারামিটার
    double calculateInterest(double p) { return p * 0.05; }
    double calculateInterest(double p, int years) { return p * 0.05 * years; }
};

class KrishiBank : public Bank {
public:
    // Overriding: চাইল্ড ক্লাসে একই সিগনেচার
    double interestRate() override { return 4.0; }
};

Abstract Class বনাম Interface

  • Abstract Class: এতে abstract (বডিহীন) এবং non-abstract (বডিযুক্ত) উভয় ধরনের মেথড থাকতে পারে, constructor ও instance variable থাকতে পারে। একটি ক্লাস কেবল একটি abstract class ইনহেরিট করতে পারে (Java/C#)।
  • Interface: এটি ১০০% চুক্তির (contract) মতো কাজ করে এবং একটি ক্লাস একাধিক interface ইমপ্লিমেন্ট করতে পারে (Multiple Inheritance-এর বিকল্প)।

সংস্করণ ১ · সর্বশেষ হালনাগাদ ২১ অক্টোবর, ২০২৬