MATLAB-এ Handle Objects এবং Class Definition
MATLAB-এ Handle Objects এবং Class Definition-এ কাজ করার জন্য Object-Oriented Programming (OOP) ব্যবহার করা হয়। Handle Objects হলো এমন অবজেক্ট যা সঠিকভাবে মেমরির রেফারেন্স পাস করে এবং একাধিক অবজেক্টের মধ্যে শেয়ার করা যায়। অন্যদিকে, Class Definition ব্যবহার করে আপনি নিজস্ব ক্লাস তৈরি করতে পারেন, যা অবজেক্ট-ভিত্তিক প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ অংশ।
এখানে আমরা Handle Objects এবং Class Definition নিয়ে বিস্তারিত আলোচনা করব।
১. Handle Objects (হ্যান্ডল অবজেক্ট)
MATLAB এ Handle Objects হল একটি বিশেষ ধরনের অবজেক্ট, যেখানে অবজেক্টটি মেমরিতে একটি রেফারেন্স দ্বারা পরিচালিত হয়। যখন আপনি একটি হ্যান্ডল অবজেক্ট তৈরি করেন, তখন সেই অবজেক্টটির একটি রেফারেন্স তৈরি হয় এবং একাধিক ভেরিয়েবল বা অবজেক্ট সেটি শেয়ার করতে পারে। যদি আপনি হ্যান্ডল অবজেক্টের কোনো একটি অংশ পরিবর্তন করেন, তবে এটি সেই রেফারেন্সগুলির সমস্ত অনুলিপি প্রতিফলিত করবে।
সিনট্যাক্স:
classdef MyClass < handle
properties
Property1
end
methods
function obj = MyClass(val)
obj.Property1 = val;
end
function displayProperty(obj)
disp(['Property1: ', num2str(obj.Property1)]);
end
end
end- এখানে,
classdefদ্বারা একটি নতুন ক্লাস তৈরি করা হয়েছে, যাhandleথেকে উত্তরাধিকারী। < handleনির্দেশ করে যে এটি একটি হ্যান্ডল অবজেক্ট ক্লাস।
উদাহরণ ১: Handle Object ব্যবহার করা
% ক্লাস সংজ্ঞায়িত করা
classdef MyClass < handle
properties
Value
end
methods
function obj = MyClass(val)
obj.Value = val;
end
function changeValue(obj, newVal)
obj.Value = newVal;
end
end
end
% অবজেক্ট তৈরি করা
obj1 = MyClass(10);
obj2 = obj1; % obj2 এখন obj1 এর হ্যান্ডল
% প্রথম অবজেক্টের মান পরিবর্তন
obj1.changeValue(20);
% দ্বিতীয় অবজেক্টের মানও পরিবর্তিত হবে
disp(['obj1 Value: ', num2str(obj1.Value)]);
disp(['obj2 Value: ', num2str(obj2.Value)]);আউটপুট:
obj1 Value: 20
obj2 Value: 20এখানে, obj1 এবং obj2 একই হ্যান্ডল শেয়ার করছে, তাই obj1 এর মান পরিবর্তন করার পর obj2 এর মানও পরিবর্তিত হয়েছে।
২. Class Definition (ক্লাস সংজ্ঞায়ন)
Class Definition ব্যবহারের মাধ্যমে আপনি MATLAB-এ নতুন ক্লাস তৈরি করতে পারেন। ক্লাসগুলি ডেটা এবং ফাংশন একত্রিত করার উপায় প্রদান করে, যা অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের (OOP) একটি গুরুত্বপূর্ণ অংশ। MATLAB-এ ক্লাস তৈরি করতে classdef কিওয়ার্ড ব্যবহার করা হয়।
সিনট্যাক্স:
classdef ClassName
properties
Property1
Property2
end
methods
function obj = ClassName(val1, val2)
obj.Property1 = val1;
obj.Property2 = val2;
end
function displayProperties(obj)
disp(['Property1: ', num2str(obj.Property1)]);
disp(['Property2: ', num2str(obj.Property2)]);
end
end
end- properties ব্লকে ক্লাসের প্রপার্টি বা ভেরিয়েবল ডিফাইন করা হয়।
- methods ব্লকে ক্লাসের ফাংশন বা মেথড ডিফাইন করা হয়।
উদাহরণ ২: নতুন ক্লাস তৈরি এবং ব্যবহার
classdef Person
properties
Name
Age
end
methods
function obj = Person(name, age)
obj.Name = name;
obj.Age = age;
end
function displayInfo(obj)
disp(['Name: ', obj.Name]);
disp(['Age: ', num2str(obj.Age)]);
end
end
end
% নতুন অবজেক্ট তৈরি করা
person1 = Person('John', 30);
% অবজেক্টের মেথড কল করা
person1.displayInfo();আউটপুট:
Name: John
Age: 30এখানে, Person ক্লাসটি Name এবং Age প্রপার্টি ধারণ করে এবং displayInfo মেথডের মাধ্যমে সেই তথ্য প্রদর্শন করা হয়।
৩. Handle Objects এবং Class Definition-এ পার্থক্য
| বৈশিষ্ট্য | Handle Objects | Normal Class Objects |
|---|---|---|
| মেমরি ব্যবস্থাপনা | হ্যান্ডল অবজেক্টগুলি রেফারেন্সের মাধ্যমে শেয়ার করা হয়, তাই একটি অবজেক্টের পরিবর্তন অন্য অবজেক্টেও প্রতিফলিত হয়। | প্রতিটি অবজেক্ট আলাদাভাবে কাজ করে, একটির পরিবর্তন অন্যটির উপর প্রভাব ফেলে না। |
| ক্লাসের ডিফাইনেশন | classdef ClassName < handle | classdef ClassName |
| অবজেক্ট রেফারেন্স | একাধিক ভেরিয়েবল একই অবজেক্টের রেফারেন্স শেয়ার করতে পারে। | প্রতিটি অবজেক্ট আলাদা থাকে এবং একে অপরের সাথে শেয়ার হয় না। |
৪. Constructor Methods (কনস্ট্রাক্টর মেথড)
ক্লাসের জন্য কনস্ট্রাক্টর মেথড ডিফাইন করা হয়, যা অবজেক্ট তৈরির সময় প্রাথমিক মান সেট করার জন্য ব্যবহৃত হয়। কনস্ট্রাক্টর মেথডটি সাধারণত ক্লাসের নামের মতোই নামকরণ করা হয়।
উদাহরণ: কনস্ট্রাক্টর মেথড
classdef Circle
properties
Radius
end
methods
function obj = Circle(r) % কনস্ট্রাক্টর মেথড
if nargin > 0
obj.Radius = r; % রেডিয়াস সেট করা
end
end
function area = calculateArea(obj)
area = pi * obj.Radius^2; % বৃত্তের এলাকা
end
end
end
% অবজেক্ট তৈরি করা
circle1 = Circle(5); % রেডিয়াস 5 দিয়ে বৃত্ত তৈরি
% এলাকা বের করা
disp(['Area of the circle: ', num2str(circle1.calculateArea())]);আউটপুট:
Area of the circle: 78.5398এখানে, Circle ক্লাসের কনস্ট্রাক্টর মেথড Radius প্রপার্টি সেট করতে ব্যবহার করা হয়েছে।
সারসংক্ষেপ
- Handle Objects:
- MATLAB-এ handle objects এমন অবজেক্ট যা মেমরিতে রেফারেন্স দ্বারা পরিচালিত হয়, এবং একাধিক ভেরিয়েবল বা অবজেক্ট একই অবজেক্ট শেয়ার করতে পারে। এর মাধ্যমে একটি অবজেক্টের পরিবর্তন অন্য সব রেফারেন্সে প্রতিফলিত হয়।
- Class Definition:
- Class definition আপনাকে আপনার নিজস্ব ক্লাস তৈরি করতে দেয়, যেখানে আপনি প্রপার্টি (অথবা ভেরিয়েবল) এবং মেথড (অথবা ফাংশন) সংজ্ঞায়িত করতে পারেন।
- Constructor Methods:
- কনস্ট্রাক্টর মেথড ব্যবহার করে আপনি অবজেক্ট তৈরি করার সময় প্রাথমিক মান নির্ধারণ করতে পারেন।
MATLAB-এ Object-Oriented Programming (OOP) কনসেপ্ট আপনাকে ডেটা এবং ফাংশনগুলিকে একটি ইউনিটে প্যাকেজ করার সুযোগ দেয়, যা কোডের পুনঃব্যবহারযোগ্যতা এবং পরিচালনীয়তা উন্নত করতে সহায়ক।