Advanced OOP Concepts: Polymorphism এবং Encapsulation

Object-Oriented Programming in M-Files (অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং) - ম্যাটল্যাব এম-ফাইল (Matlab M-Files) - Computer Programming

489

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


১. Polymorphism (পলিমরফিজম)

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

Polymorphism-এর ধরণ:

  1. Compile-time Polymorphism (স্ট্যাটিক পলিমরফিজম)
  2. Runtime Polymorphism (ডাইনামিক পলিমরফিজম)

১.১. Compile-time Polymorphism (স্ট্যাটিক পলিমরফিজম):

এটি সেই ধরনের পলিমরফিজম যেখানে মেথড ওভারলোডিং (Method Overloading) বা অপারেটর ওভারলোডিং (Operator Overloading) ব্যবহার করা হয়। এটি কম্পাইল টাইমে নির্ধারিত হয় এবং একাধিক মেথড বা অপারেটরকে একই নাম দিয়ে বিভিন্ন উপায়ে ব্যবহার করা যায়।

উদাহরণ: Method Overloading (স্ট্যাটিক পলিমরফিজম):

classdef Calculator
    methods
        function result = add(obj, a, b)
            result = a + b;
        end
        
        % মেথড ওভারলোডিং: add মেথড, আরও একটি প্যারামিটার নিয়েছে
        function result = add(obj, a, b, c)
            result = a + b + c;
        end
    end
end

এখানে, add মেথড দুটি ভিন্নভাবে কাজ করছে — একটিতে দুইটি প্যারামিটার এবং অন্যটিতে তিনটি প্যারামিটার আছে।

১.২. Runtime Polymorphism (ডাইনামিক পলিমরফিজম):

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

উদাহরণ: Method Overriding (ডাইনামিক পলিমরফিজম):

classdef Animal
    methods
        function sound(obj)
            disp('Animal makes a sound');
        end
    end
end

classdef Dog < Animal
    methods
        % মেথড ওভাররাইডিং
        function sound(obj)
            disp('Dog barks');
        end
    end
end

% রানটাইমে মেথড কল
a = Animal;
a.sound();  % Output: Animal makes a sound

d = Dog;
d.sound();  % Output: Dog barks

এখানে, Dog ক্লাসে sound মেথডটি Animal ক্লাসের sound মেথডকে ওভাররাইড করেছে, এবং এটি রানটাইমে নির্ধারিত হয় কোন মেথডটি কল হবে।

Polymorphism-এর সুবিধা:

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

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

Encapsulation (এনক্যাপসুলেশন) হল এমন একটি প্রক্রিয়া যার মাধ্যমে ডেটা (প্রোপার্টি) এবং মেথড (ফাংশন) একসাথে একটি ক্লাসের মধ্যে রাখা হয় এবং বাইরে থেকে ডেটার সরাসরি অ্যাক্সেস নিয়ন্ত্রণ করা হয়। এটি OOP-এ ডেটা নিরাপত্তা এবং ইনক্যাপসুলেশনের প্রধান উপাদান।

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

  1. Private Data: ক্লাসের ডেটা বা ভ্যারিয়েবলগুলোকে private করা হয়, যার ফলে বাইরে থেকে সেগুলো সরাসরি অ্যাক্সেস করা সম্ভব হয় না।
  2. Public Methods: ডেটার অ্যাক্সেস করতে, getter এবং setter মেথড ব্যবহার করা হয়, যা ডেটার মধ্যে নিয়ন্ত্রণ এবং সীমাবদ্ধতা প্রদান করে।

উদাহরণ: Encapsulation

classdef BankAccount
    properties (Access = private)
        balance  % private property
    end
    
    methods
        % Constructor to initialize balance
        function obj = BankAccount(initial_balance)
            if initial_balance >= 0
                obj.balance = initial_balance;
            else
                error('Initial balance must be non-negative');
            end
        end
        
        % Getter method for balance
        function balance = getBalance(obj)
            balance = obj.balance;
        end
        
        % Setter method to update balance
        function obj = deposit(obj, amount)
            if amount > 0
                obj.balance = obj.balance + amount;
            else
                error('Deposit amount must be positive');
            end
        end
    end
end

% Example usage:
account = BankAccount(100);  % Create a bank account with initial balance 100
disp(account.getBalance());  % Access balance through getter method
account = account.deposit(50);  % Deposit 50 into account
disp(account.getBalance());  % New balance after deposit

এখানে:

  • balance প্রোপার্টি private হিসেবে সেট করা হয়েছে, যাতে বাইরে থেকে সরাসরি অ্যাক্সেস না করা যায়।
  • getBalance এবং deposit মেথডগুলি public হিসেবে অ্যাক্সেস করা যায় এবং এগুলি ডেটার অ্যাক্সেস নিয়ন্ত্রণ করে।

Encapsulation-এর সুবিধা:

  • ডেটা সুরক্ষা: ডেটাকে সরাসরি অ্যাক্সেস করা থেকে রক্ষা করা যায়।
  • কোডের সহজ রক্ষণাবেক্ষণ: ক্লাসের ভিতরের ডেটা পরিবর্তন করা হলেও বাইরের কোডে কোনো প্রভাব পড়ে না, কারণ বাহ্যিক অ্যাক্সেস কেবল getter এবং setter মেথডের মাধ্যমে নিয়ন্ত্রিত হয়।
  • ডেটা প্রক্রিয়া নিয়ন্ত্রণ: ডেটার অ্যাক্সেস বা পরিবর্তন একটি সুনির্দিষ্ট নিয়মের মাধ্যমে করা হয়, যা অপ্রত্যাশিত ত্রুটি বা ভুলের সম্ভাবনা কমায়।

Polymorphism এবং Encapsulation-এর সম্পর্ক

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

সারাংশ

  • Polymorphism (পলিমরফিজম) হল একাধিক ক্লাস বা অবজেক্ট একি নামের মেথড ব্যবহার করতে পারে, তবে তাদের আচরণ (বিহেভিয়ার) ভিন্ন হতে পারে। এটি স্ট্যাটিক (Compile-time) এবং ডাইনামিক (Runtime) পলিমরফিজম হতে পারে।
  • Encapsulation (এনক্যাপসুলেশন) হল ডেটা (প্রোপার্টি) এবং মেথড (ফাংশন) একসাথে একটি ক্লাসে রাখা এবং বাইরে থেকে ডেটার অ্যাক্সেস নিয়ন্ত্রণ করা। এটি ডেটার নিরাপত্তা ও কোডের রক্ষণাবেক্ষণ সহজ করে তোলে।

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

Content added By
Promotion

Are you sure to start over?

Loading...