Rexx একটি স্ক্রিপ্টিং ভাষা হলেও এটি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) ধারণাকে সমর্থন করে। Rexx-এ OOP ব্যবহার করলে কোডের পুনঃব্যবহারযোগ্যতা, রক্ষণাবেক্ষণযোগ্যতা এবং স্কেলেবিলিটি বৃদ্ধি পায়। Rexx-এ OOP বিশেষত Object Rexx এর মাধ্যমে বাস্তবায়িত হয়, যা Rexx-এর একটি বিকশিত সংস্করণ। Object Rexx ক্লাস, অবজেক্ট, ইনহেরিট্যান্স (inheritance), পলিমরফিজম (polymorphism), এনক্যাপসুলেশন (encapsulation) এবং অ্যাবস্ট্রাকশন (abstraction) এর মতো OOP-এর মূল ধারণাগুলি সমর্থন করে।
১. অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর মূল ধারণা:
- ক্লাস (Class):
ক্লাস হলো একটি টেমপ্লেট বা ব্লুপ্রিন্ট যা অবজেক্ট তৈরি করার জন্য ব্যবহৃত হয়। ক্লাসের মধ্যে মেথড এবং প্রপার্টি (অথবা অ্যাট্রিবিউট) থাকে। - অবজেক্ট (Object):
অবজেক্ট হলো ক্লাসের একটি উদাহরণ। এটি ক্লাসের ডেটা এবং মেথডগুলির একটি কপি, যা প্রকৃত কাজগুলো সম্পাদন করে। - ইনহেরিট্যান্স (Inheritance):
ইনহেরিট্যান্স হলো একটি ক্লাসের বিশেষত্ব এবং আচরণ অন্য একটি ক্লাসে প্যাস করা। - পলিমরফিজম (Polymorphism):
পলিমরফিজম হলো একই নামের মেথড বিভিন্ন ধরণের অবজেক্টে ভিন্নভাবে কাজ করতে সক্ষম হওয়া। - এনক্যাপসুলেশন (Encapsulation):
এনক্যাপসুলেশন হলো একটি অবজেক্টের অভ্যন্তরীণ তথ্য এবং আচরণ (মেথড) লুকানো, শুধুমাত্র পাবলিক ইন্টারফেসের মাধ্যমে অ্যাক্সেস করা। - অ্যাবস্ট্রাকশন (Abstraction):
অ্যাবস্ট্রাকশন হলো একটি অবজেক্টের বাস্তবিক তথ্য এবং কার্যকারিতা লুকানো এবং শুধুমাত্র প্রয়োজনীয় বৈশিষ্ট্যগুলো প্রকাশ করা।
২. Rexx-এ অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং বাস্তবায়ন:
Rexx-এ অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং বাস্তবায়িত করার জন্য Object Rexx ব্যবহৃত হয়, যা Rexx-এর মূল সংস্করণে কিছু অতিরিক্ত বৈশিষ্ট্য যোগ করে। Object Rexx-এ ক্লাস, অবজেক্ট এবং মেথড ডিফাইন করা যেতে পারে।
ক্লাস ডিফাইন করা:
Rexx-এ ক্লাস ডিফাইন করার জন্য ::class কীওয়ার্ড ব্যবহার করা হয়।
উদাহরণ:
/* ক্লাস ডিফাইন করা */
MyClass::new: procedure
/* অবজেক্টের প্রপার্টি ডিফাইন করা */
parse arg name
this.name = name
return this
/* মেথড তৈরি করা */
MyClass::greet: procedure
say "Hello, " this.nameএখানে MyClass একটি ক্লাস যা একটি কনস্ট্রাকটর মেথড (new) এবং একটি গ্রিটিং মেথড (greet) ধারণ করে। new মেথড ক্লাসের একটি নতুন অবজেক্ট তৈরি করে এবং greet মেথড অবজেক্টের নাম প্রিন্ট করে।
অবজেক্ট তৈরি এবং মেথড কল করা:
ক্লাস ডিফাইন করার পর, new মেথড দিয়ে নতুন অবজেক্ট তৈরি করা এবং মেথড কল করা যেতে পারে।
উদাহরণ:
/* অবজেক্ট তৈরি করা */
myObject = MyClass::new("John")
/* মেথড কল করা */
myObject.greetএখানে, myObject একটি নতুন অবজেক্ট যা MyClass ক্লাসের একটি উদাহরণ। greet মেথড কল করা হলে, এটি "Hello, John" প্রিন্ট করবে।
৩. ইনহেরিট্যান্স (Inheritance):
Rexx-এ ইনহেরিট্যান্স ব্যবহার করে একটি ক্লাস অন্য একটি ক্লাসের বৈশিষ্ট্য এবং মেথড পেতে পারে। সাবক্লাস বা ডেরাইভড ক্লাসে সুপারক্লাসের মেথড এবং প্রপার্টি থাকতে পারে।
উদাহরণ:
/* সুপারক্লাস */
Animal::new: procedure
parse arg name
this.name = name
return this
Animal::speak: procedure
say this.name "makes a sound"
/* সাবক্লাস */
Dog::new: procedure
parse arg name
this = Animal::new(name) /* ইনহেরিট করা */
return this
Dog::speak: procedure
say this.name "barks"এখানে Dog ক্লাস Animal ক্লাস থেকে ইনহেরিট করেছে। Dog ক্লাসের speak মেথড Animal ক্লাসের speak মেথডকে ওভাররাইড করেছে।
অবজেক্ট তৈরি এবং মেথড কল করা:
/* ইনহেরিট করা অবজেক্ট */
dog = Dog::new("Buddy")
/* মেথড কল করা */
dog.speak /* ফলাফল হবে "Buddy barks" */এখানে, dog অবজেক্টটি Dog ক্লাসের একটি উদাহরণ, এবং এটি speak মেথড কল করবে, যা "Buddy barks" প্রিন্ট করবে।
৪. পলিমরফিজম (Polymorphism):
Rexx-এ পলিমরফিজম ব্যবহৃত হয় একাধিক ক্লাসের অবজেক্ট একই নামের মেথড ব্যবহার করে বিভিন্ন রকম আচরণ প্রদর্শন করতে।
উদাহরণ:
/* Animal ক্লাস */
Animal::speak: procedure
say "Animal makes a sound"
/* Dog ক্লাস */
Dog::speak: procedure
say "Dog barks"
/* Cat ক্লাস */
Cat::speak: procedure
say "Cat meows"পলিমরফিজম ব্যবহারের উদাহরণ:
animals.1 = Animal::new("Generic Animal")
animals.2 = Dog::new("Buddy")
animals.3 = Cat::new("Whiskers")
/* Loop through and call speak method */
for i = 1 to 3
animals.i.speak
endএখানে, speak মেথডের আচরণ অবজেক্টের ধরণের উপর নির্ভর করে, তাই এটি পলিমরফিজম প্রদর্শন করবে:
- "Generic Animal makes a sound"
- "Buddy barks"
- "Whiskers meows"
৫. সারাংশ:
Rexx-এ অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ব্যবহার করে কোডের রক্ষণাবেক্ষণযোগ্যতা, পুনঃব্যবহারযোগ্যতা এবং স্কেলেবিলিটি বৃদ্ধি করা যায়। Object Rexx ব্যবহার করে ক্লাস, অবজেক্ট, ইনহেরিট্যান্স, পলিমরফিজম, এনক্যাপসুলেশন এবং অ্যাবস্ট্রাকশন এর মতো OOP-এর মূল ধারণাগুলি বাস্তবায়ন করা যায়। Rexx এর OOP সমর্থন ডেভেলপারদের জন্য আরও দক্ষ এবং সংগঠিত কোড লেখার সুযোগ সৃষ্টি করে।
Rexx মূলত একটি স্ক্রিপ্টিং ভাষা হলেও, এর মধ্যে Object-Oriented Programming (OOP) এর কিছু ধারণা এবং সুবিধা অন্তর্ভুক্ত করা হয়েছে। Rexx এর Object-Oriented Programming সমর্থন করতে Object Rexx নামে একটি সংস্করণ তৈরি করা হয়েছে, যা Rexx ভাষাকে অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের ধারণা সমর্থন করার ক্ষমতা দেয়।
OOP হল একটি প্রোগ্রামিং প্যারাডাইম যেখানে ডেটা এবং ফাংশনকে একত্রে একটি অবজেক্ট আকারে ধারণ করা হয়। Rexx-এ OOP এর ব্যবহার কোডের পুনঃব্যবহারযোগ্যতা এবং রক্ষণাবেক্ষণ সহজ করে তোলে, এবং এটি আরও কার্যকরী প্রোগ্রাম তৈরি করতে সাহায্য করে।
Rexx-এ OOP এর মূল ধারণা:
Rexx-এ OOP এর মধ্যে কিছু মৌলিক ধারণা অন্তর্ভুক্ত রয়েছে, যেমন ক্লাস, অবজেক্ট, মেথড, এবং ইনহেরিটেন্স। Object Rexx ব্যবহার করে এই ধারণাগুলো বাস্তবায়ন করা সম্ভব।
1. ক্লাস (Class):
একটি ক্লাস হলো একটি ব্লুপ্রিন্ট বা টেমপ্লেট যা অবজেক্ট তৈরি করার জন্য ব্যবহৃত হয়। ক্লাসে সাধারণত ডেটা (অ্যাট্রিবিউটস) এবং ফাংশন (মেথডস) থাকে।
ক্লাস তৈরি করা:
/* ক্লাস তৈরি */
class Animal
::method speak
say "Animal speaks"
::endএখানে, Animal ক্লাস তৈরি করা হয়েছে, যার মধ্যে একটি speak মেথড রয়েছে। এই মেথডটি "Animal speaks" প্রিন্ট করবে।
2. অবজেক্ট (Object):
একটি অবজেক্ট হলো একটি নির্দিষ্ট ক্লাসের একটি উদাহরণ (instance)। এটি ক্লাসের মধ্যে নির্দিষ্ট ডেটা এবং মেথড ধারণ করে।
অবজেক্ট তৈরি করা:
/* অবজেক্ট তৈরি */
animal1 = .Animal~new
animal1.speakএখানে, animal1 হলো Animal ক্লাসের একটি অবজেক্ট, এবং .Animal~new মাধ্যমে নতুন অবজেক্ট তৈরি করা হচ্ছে। তারপর speak মেথড কল করা হচ্ছে।
3. মেথড (Method):
মেথড হলো ক্লাসের একটি ফাংশন যা অবজেক্টের আচরণ নির্ধারণ করে। মেথডগুলি ক্লাসের অংশ হিসেবে কাজ করে এবং অবজেক্টের উপর বিভিন্ন কার্যক্রম সম্পাদন করতে ব্যবহৃত হয়।
মেথড উদাহরণ:
/* ক্লাসের মধ্যে মেথড */
class Animal
::method speak
say "The animal speaks."
::method move
say "The animal moves."
::endএখানে, Animal ক্লাসের দুটি মেথড রয়েছে: speak এবং move। এই মেথডগুলো ক্লাসের অবজেক্টের উপর বিভিন্ন কাজ সম্পাদন করবে।
4. ইনহেরিটেন্স (Inheritance):
ইনহেরিটেন্স হল একটি ধারণা যেখানে একটি ক্লাস অন্য একটি ক্লাসের বৈশিষ্ট্য (অ্যাট্রিবিউটস) এবং আচরণ (মেথড) হস্তান্তর করে। Rexx-এ OOP সমর্থন করে ইনহেরিটেন্স ব্যবহার করা যেতে পারে, যার মাধ্যমে এক ক্লাসের বৈশিষ্ট্য অন্য ক্লাসে পাওয়া যায়।
ইনহেরিটেন্স উদাহরণ:
/* ক্লাস তৈরি */
class Animal
::method speak
say "The animal speaks."
::end
/* Animal ক্লাস থেকে ইনহেরিট করা */
class Dog .Animal
::method speak
say "The dog barks."
::endএখানে, Dog ক্লাসটি Animal ক্লাস থেকে ইনহেরিট করছে এবং এর মধ্যে একটি নতুন speak মেথড রয়েছে যা The dog barks. প্রিন্ট করবে।
5. অবজেক্ট তৈরি এবং মেথড কল করা:
/* Animal ক্লাসের একটি অবজেক্ট তৈরি করা */
dog = .Dog~new
dog.speak /* আউটপুট: The dog barks. */এখানে, Dog ক্লাসের একটি অবজেক্ট dog তৈরি করা হচ্ছে এবং speak মেথড কল করা হচ্ছে, যার ফলে "The dog barks." আউটপুট হবে।
Rexx-এ OOP এর সুবিধা:
- কোডের পুনঃব্যবহারযোগ্যতা: OOP এর মাধ্যমে একবার লেখা কোড বিভিন্ন স্থানে ব্যবহার করা যায়, যেমন এক ক্লাস থেকে আরেক ক্লাসে ইনহেরিটেন্স করা।
- ডেটা সংগঠন: OOP এর মাধ্যমে ডেটাকে অবজেক্ট আকারে সংগঠিত করা যায়, যা কোডের রক্ষণাবেক্ষণকে সহজ করে তোলে।
- ক্লাস ও অবজেক্ট ভিত্তিক কোড ডিজাইন: OOP মডেলিং কোডের কার্যকারিতা বাড়ায় এবং বড় সিস্টেম ডিজাইন করতে সাহায্য করে।
- নতুন ফিচার যোগ করা সহজ: ইনহেরিটেন্স এবং পলিমরফিজমের মাধ্যমে কোডের নতুন ফিচার বা বৈশিষ্ট্য যোগ করা সহজ হয়।
সারাংশ:
Rexx-এর Object-Oriented Programming (OOP) সমর্থন কোডের রক্ষণাবেক্ষণ এবং পুনঃব্যবহারযোগ্যতা বাড়াতে সাহায্য করে। Rexx-এ OOP ব্যবহারের মাধ্যমে ক্লাস, অবজেক্ট, মেথড, এবং ইনহেরিটেন্স এর ধারণাগুলো ব্যবহার করা যায়, যা কোডের কার্যকারিতা এবং স্থায়িত্ব উন্নত করতে সহায়তা করে। Object Rexx-এর মাধ্যমে Rexx ভাষায় OOP বাস্তবায়ন সম্ভব।
Classes এবং Objects হল অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর দুটি মৌলিক ধারণা। Classes হলো একটি ব্লুপ্রিন্ট বা টেমপ্লেট যা থেকে অবজেক্ট তৈরি করা যায়, এবং Objects হলো সেই ক্লাসের ইনস্ট্যান্স বা উদাহরণ। Rexx ভাষায় OOP সমর্থন করতে পারে, যদিও এটি অন্যান্য ভাষার তুলনায় কম ব্যবহৃত হয়।
১. Classes তৈরি করা
Rexx ভাষায় ক্লাস তৈরি করার জন্য class এবং method কিওয়ার্ড ব্যবহার করা হয়। একটি ক্লাসের মধ্যে আমরা বিভিন্ন প্রপার্টি (এট্রিবিউট) এবং মেথড (ফাংশন) সংজ্ঞায়িত করি।
Class তৈরি করার সিনট্যাক্স:
/* Class Definition */
class MyClass
/* প্রপার্টি (এট্রিবিউট) */
x = 0
/* মেথড (ফাংশন) */
parse method setX(val)
x = val
return
parse method getX()
return x
endএখানে MyClass নামক একটি ক্লাস তৈরি করা হয়েছে, যার মধ্যে x নামক একটি প্রপার্টি এবং দুটি মেথড setX এবং getX রয়েছে। setX মেথডটি x এর মান সেট করে এবং getX মেথডটি x এর মান রিটার্ন করে।
২. Objects তৈরি করা
ক্লাস তৈরি করার পর, ক্লাসের একটি ইনস্ট্যান্স বা অবজেক্ট তৈরি করা হয়। Rexx-এ ক্লাসের একটি অবজেক্ট তৈরি করতে new কিওয়ার্ড ব্যবহার করা হয়। অবজেক্ট তৈরি করার পর, আমরা তার প্রপার্টি এবং মেথড অ্যাক্সেস করতে পারি।
Object তৈরি করার সিনট্যাক্স:
/* অবজেক্ট তৈরি */
obj = MyClass~new
/* মেথড ব্যবহার */
obj~setX(10) /* x এর মান 10 সেট করা */
SAY obj~getX() /* x এর মান প্রিন্ট করা */এখানে, obj = MyClass~new দ্বারা MyClass ক্লাসের একটি অবজেক্ট তৈরি করা হয়েছে। তারপর obj~setX(10) মেথডের মাধ্যমে x এর মান 10 সেট করা হয়েছে এবং obj~getX() মেথডের মাধ্যমে x এর মান আনা হয়েছে।
৩. উদাহরণ:
/* ক্লাস ডিফাইনেশন */
class Car
/* প্রপার্টি */
brand = ""
model = ""
year = 0
/* মেথড: গাড়ির তথ্য সেট করা */
parse method setCarDetails(b, m, y)
brand = b
model = m
year = y
return
/* মেথড: গাড়ির তথ্য দেখানো */
parse method getCarDetails()
return "Brand: " || brand || ", Model: " || model || ", Year: " || year
end
/* অবজেক্ট তৈরি */
car1 = Car~new
car1~setCarDetails("Toyota", "Corolla", 2020)
/* মেথড ব্যবহার */
SAY car1~getCarDetails() /* Output: Brand: Toyota, Model: Corolla, Year: 2020 */ব্যাখ্যা:
Carনামক একটি ক্লাস তৈরি করা হয়েছে যার মধ্যে তিনটি প্রপার্টি:brand,model, এবংyear।setCarDetailsমেথডটি গাড়ির ব্র্যান্ড, মডেল এবং বছর সেট করার জন্য ব্যবহৃত হয়।getCarDetailsমেথডটি গাড়ির তথ্য প্রদর্শন করে।
এখন car1 = Car~new দ্বারা Car ক্লাসের একটি অবজেক্ট তৈরি করা হয়েছে এবং car1~setCarDetails মেথডের মাধ্যমে গাড়ির বিস্তারিত তথ্য সেট করা হয়েছে। পরে car1~getCarDetails() মেথডের মাধ্যমে গাড়ির তথ্য প্রদর্শন করা হয়েছে।
সারাংশ:
- Classes হল টেমপ্লেট যা অবজেক্ট তৈরির জন্য ব্যবহৃত হয়। এতে প্রপার্টি এবং মেথড থাকে।
- Objects হল ক্লাসের বাস্তব ইনস্ট্যান্স, যার মাধ্যমে আমরা প্রপার্টি এবং মেথড অ্যাক্সেস করতে পারি।
- Rexx-এ
class,new,method, এবং~অপারেটর ব্যবহার করে ক্লাস এবং অবজেক্ট তৈরি করা হয়।
Inheritance, Polymorphism, এবং Encapsulation তিনটি মূল ধারণা যা Object-Oriented Programming (OOP) এর ভিত্তি। এই ধারণাগুলির মাধ্যমে সফটওয়্যার ডেভেলপমেন্টে কোডের পুনঃব্যবহারযোগ্যতা, ডেটা সুরক্ষা এবং লজিকের উন্নয়ন সম্ভব হয়। নিচে এই তিনটি ধারণার বিস্তারিত ব্যাখ্যা দেওয়া হলো:
১. Inheritance (উত্তরাধিকার)
Inheritance হলো একটি OOP ধারণা যা পূর্ববর্তী (parent বা superclass) ক্লাসের বৈশিষ্ট্য এবং আচরণকে (attributes and methods) একটি নতুন (child বা subclass) ক্লাসে উত্তরাধিকারসূত্রে পাওয়া। এর মাধ্যমে কোডের পুনঃব্যবহারযোগ্যতা বৃদ্ধি পায় এবং কম্প্লেক্সিটি কম হয়।
ব্যবহার:
Childক্লাস একটিParentক্লাসের সকল বৈশিষ্ট্য ও আচরণ (properties and methods) পায়।Childক্লাসে অতিরিক্ত ফিচার বা কাস্টম ফাংশনালিটি যোগ করা সম্ভব হয়, যাParentক্লাসের বৈশিষ্ট্যগুলোকে পরিবর্তন না করে।
উদাহরণ:
// Parent class
class Animal {
public void makeSound() {
System.out.println("Animal makes a sound");
}
}
// Child class inheriting from Animal class
class Dog extends Animal {
public void makeSound() {
System.out.println("Dog barks");
}
}
// Main class to test Inheritance
public class Test {
public static void main(String[] args) {
Dog dog = new Dog();
dog.makeSound(); // Output: Dog barks
}
}ব্যাখ্যা:
- এখানে,
Dogক্লাসটিAnimalক্লাসেরmakeSound()মেথডটি উত্তরাধিকারসূত্রে পেয়েছে এবং এটি কাস্টমাইজ করে নিজের মতো করে পরিবর্তন করেছে।
২. Polymorphism (পলিমরফিজম)
Polymorphism হলো OOP এর একটি ধারণা যার মাধ্যমে একই নামের মেথড বা অপারেশন বিভিন্ন ধরণের আচরণ দেখাতে পারে। এটি প্রধানত দুটি ধরনের হয়ে থাকে:
- Method Overloading: একাধিক মেথড একই ক্লাসে একই নামের সাথে কিন্তু বিভিন্ন প্যারামিটার নিয়ে থাকতে পারে।
- Method Overriding: সুপারক্লাসের মেথডকে সাবক্লাসে নতুনভাবে ইমপ্লিমেন্ট করা।
ব্যবহার:
- Polymorphism কোডের পুনঃব্যবহারযোগ্যতা বাড়ায় এবং বিভিন্ন ক্লাসের সাথে কাজ করার সময় একক ইন্টারফেসের মাধ্যমে বিভিন্ন আচরণ পাওয়া যায়।
উদাহরণ (Method Overriding):
// Parent class
class Animal {
public void makeSound() {
System.out.println("Animal makes a sound");
}
}
// Child class overriding the makeSound method
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Dog barks");
}
}
// Main class to test Polymorphism
public class Test {
public static void main(String[] args) {
Animal myAnimal = new Animal(); // Animal object
Animal myDog = new Dog(); // Dog object
myAnimal.makeSound(); // Output: Animal makes a sound
myDog.makeSound(); // Output: Dog barks
}
}ব্যাখ্যা:
- এখানে,
Dogক্লাসটিmakeSound()মেথডকেAnimalক্লাসেরmakeSound()মেথডেOverrideকরেছে। - একেই Method Overriding বলা হয়। ফলে,
myDogএর জন্যDogক্লাসেরmakeSound()মেথডটি কার্যকর হয়, এবংmyAnimalএর জন্যAnimalক্লাসের মেথডটি কার্যকর হয়। এটা Polymorphism এর একটি উদাহরণ।
৩. Encapsulation (এনক্যাপসুলেশন)
Encapsulation হলো একটি OOP ধারণা যা ডেটা (ভ্যারিয়েবল) এবং এর আচরণ (মেথড) একত্রে একটি ক্লাসে প্যাকেজড করে রাখে এবং ডেটার সরাসরি অ্যাক্সেসকে সীমাবদ্ধ করে। এর মাধ্যমে ডেটার সুরক্ষা নিশ্চিত করা হয় এবং ক্লাসের বাইরের কোড থেকে অপ্রয়োজনীয় বা ঝুঁকিপূর্ণ পরিবর্তন রোধ করা যায়।
ব্যবহার:
- Access Modifiers ব্যবহার করে ডেটার অ্যাক্সেস নিয়ন্ত্রণ করা হয়, যেমন
private,public, এবংprotected। - ক্লাসের বাইরের কোড থেকে ডেটার পরিবর্তন প্রতিরোধ করার জন্য getter এবং setter মেথড ব্যবহার করা হয়।
উদাহরণ:
class Person {
// Private variables, cannot be accessed directly outside this class
private String name;
private int age;
// Getter method for 'name'
public String getName() {
return name;
}
// Setter method for 'name'
public void setName(String name) {
this.name = name;
}
// Getter method for 'age'
public int getAge() {
return age;
}
// Setter method for 'age'
public void setAge(int age) {
if (age >= 0) {
this.age = age;
} else {
System.out.println("Age cannot be negative");
}
}
}
public class Test {
public static void main(String[] args) {
Person person = new Person();
person.setName("John");
person.setAge(25);
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
}
}ব্যাখ্যা:
- এখানে,
nameএবংageভ্যারিয়েবলগুলো privateভাবে ঘোষণা করা হয়েছে, যাতে এগুলোর সরাসরি অ্যাক্সেস বাইরের কোড থেকে করা না যায়। setName()এবংsetAge()মেথডের মাধ্যমে এই ভ্যারিয়েবলগুলোকে সেট করা হয় এবংgetName()এবংgetAge()মেথডের মাধ্যমে এগুলোর মান অ্যাক্সেস করা হয়। এটি Encapsulation এর একটি উদাহরণ।
সারাংশ:
- Inheritance: একটি ক্লাস তার প্যারেন্ট ক্লাসের বৈশিষ্ট্য এবং আচরণ পায়।
- Polymorphism: একই মেথড বা ফাংশন বিভিন্ন ক্লাসে বিভিন্ন আচরণ প্রদর্শন করতে পারে।
- Encapsulation: ডেটা এবং তার আচরণ একত্রে প্যাকেজ করা হয় এবং ডেটার সরাসরি অ্যাক্সেস নিয়ন্ত্রণ করা হয়।
এই তিনটি OOP ধারণা কোডের পুনঃব্যবহারযোগ্যতা, সুরক্ষা, এবং লজিকের উন্নত ব্যবহার নিশ্চিত করে, যার মাধ্যমে সফটওয়্যার ডেভেলপমেন্টে আরও কার্যকরী ও রক্ষণাবেক্ষণযোগ্য কোড লেখা সম্ভব হয়।
Rexx প্রোগ্রামিং ভাষায়, Methods এবং Attributes এর ধারণা সাধারণত অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর সাথে সম্পর্কিত। Rexx-এ অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং সাপোর্ট করে, এবং এর মাধ্যমে আপনি অবজেক্ট তৈরি করতে পারেন যার মধ্যে Attributes (গুণাবলী) এবং Methods (পদ্ধতি) থাকতে পারে।
- Attributes হলো অবজেক্টের গুণাবলী বা বৈশিষ্ট্য, যা অবজেক্টের তথ্য ধারণ করে।
- Methods হলো অবজেক্টের ওপর সম্পাদনাযোগ্য কার্যক্রম, যা অবজেক্টের উপর কোনো অপারেশন চালায়।
Rexx-এ OOP এর ধারণাকে সমর্থন করে, আপনি একটি ক্লাস তৈরি করে তার মধ্যে বিভিন্ন গুণাবলী (attributes) এবং পদ্ধতি (methods) ব্যবহার করতে পারেন।
১. Attributes (গুণাবলী)
Attributes হল অবজেক্টের বৈশিষ্ট্য বা ডেটা। এই ডেটাগুলি অবজেক্টের অংশ হিসেবে সংরক্ষিত থাকে এবং আপনি এগুলির মান পরিবর্তন করতে পারেন।
Attribute এর উদাহরণ:
/* Class defining an object with attributes */
class person
person.name = "" /* Attribute for name */
person.age = 0 /* Attribute for age */
return
/* Create object and set attributes */
john = person~new()
john.name = "John Doe"
john.age = 30
say "Name: " john.name
say "Age: " john.ageব্যাখ্যা:
- এখানে
personক্লাসে দুটি attribute:nameএবংageরয়েছে। johnনামের একটি অবজেক্ট তৈরি করা হয়েছে এবংnameএবংageএর মান সেট করা হয়েছে।
২. Methods (পদ্ধতি)
Methods হলো ফাংশন বা সাবরুটিন যা ক্লাসের মধ্যে অবজেক্টের উপরে কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়। এটি অবজেক্টের attribute বা গুণাবলী পরিবর্তন করতে পারে অথবা অন্যান্য কাজ সম্পাদন করতে পারে।
Method এর উদাহরণ:
/* Class defining an object with attributes and method */
class person
person.name = "" /* Attribute for name */
person.age = 0 /* Attribute for age */
/* Method to print details of the person */
person.printDetails: procedure
say "Name: " person.name
say "Age: " person.age
return
return
/* Create object and set attributes */
john = person~new()
john.name = "John Doe"
john.age = 30
/* Call method of the object */
john~printDetails()ব্যাখ্যা:
- এখানে
personক্লাসের মধ্যে একটি methodprintDetailsতৈরি করা হয়েছে, যাnameএবংageattribute প্রদর্শন করবে। john~printDetails()কল করার মাধ্যমে অবজেক্টের attribute গুলি প্রদর্শিত হয়।
৩. Method এবং Attribute Access
Rexx-এ অবজেক্টের attribute এবং method অ্যাক্সেস করার জন্য কিছু বিশেষ সিম্বল ব্যবহার করা হয়:
.(ডট): এটা একটি attribute বা গুণাবলী অ্যাক্সেস করার জন্য ব্যবহৃত হয়।~(টিলড): এটা একটি method কল করার জন্য ব্যবহৃত হয়।
Method এবং Attribute Access এর উদাহরণ:
/* Class with methods and attributes */
class car
car.model = "" /* Attribute for model */
car.year = 0 /* Attribute for year */
car.printDetails: procedure
say "Car Model: " car.model
say "Year: " car.year
return
return
/* Create an object */
myCar = car~new()
myCar.model = "Tesla Model S"
myCar.year = 2022
/* Accessing attributes and calling method */
say "Model: " myCar.model
myCar~printDetails()ব্যাখ্যা:
myCar.modelদ্বারাmodelattribute অ্যাক্সেস করা হয়েছে।myCar~printDetails()দ্বারাprintDetailsmethod কল করা হয়েছে।
৪. Object Creation and Initialization (অবজেক্ট তৈরি এবং ইনিশিয়ালাইজেশন)
Rexx-এ অবজেক্ট তৈরি করতে একটি ক্লাসের new() method ব্যবহার করা হয়। এটা একটি নতুন অবজেক্ট তৈরি করে এবং তার attributes এর মান সেট করতে সাহায্য করে।
Object Creation and Initialization উদাহরণ:
/* Class with attributes and method */
class student
student.name = ""
student.rollNo = 0
/* Method to display student details */
student.display: procedure
say "Name: " student.name
say "Roll No: " student.rollNo
return
return
/* Create an object and initialize attributes */
s1 = student~new()
s1.name = "Alice"
s1.rollNo = 101
/* Call method */
s1~display()ব্যাখ্যা:
student~new()দিয়ে নতুনstudentঅবজেক্ট তৈরি করা হয়।- তারপর
nameএবংrollNoattributes এ মান দেওয়া হয় এবংdisplaymethod দিয়ে ডেটা প্রদর্শিত হয়।
সারাংশ:
- Attributes হল অবজেক্টের গুণাবলী বা ডেটা, যা অবজেক্টের সাথে সম্পর্কিত থাকে এবং এটি অবজেক্টের বর্তমান অবস্থা নির্ধারণ করে।
- Methods হল অবজেক্টের ওপর কার্যক্রম পরিচালনা করার জন্য ব্যবহৃত ফাংশন বা সাবরুটিন।
- Rexx-এ
.(ডট) দিয়ে attribute অ্যাক্সেস করা হয় এবং~(টিলড) দিয়ে method কল করা হয়।
Rexx-এর মাধ্যমে OOP ব্যবহার করে আপনাকে শক্তিশালী এবং পুনঃব্যবহারযোগ্য কোড লেখার সুযোগ পাওয়া যায়।
Read more