ডার্ট একটি শক্তিশালী প্রোগ্রামিং ল্যাঙ্গুয়েজ যা ফ্লাটার (Flutter) ফ্রেমওয়ার্কের মাধ্যমে মোবাইল অ্যাপ ডেভেলপমেন্টে ব্যাপকভাবে ব্যবহৃত হয়। ডার্টে ফাংশন, ক্লাস, এবং অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর ধারণাগুলো সহজে ব্যবহার করা যায়। চলুন এই ধারণাগুলো বাংলায় বুঝে নেওয়া যাক।
১. ফাংশন (Function)
ফাংশন হল কোডের একটি ব্লক যা একটি নির্দিষ্ট কাজ সম্পন্ন করে। ডার্টে ফাংশন তৈরি করা খুবই সহজ। নিচে একটি উদাহরণ দেওয়া হলো:
void main() {
// ফাংশন কল
printGreeting("John");
}
// ফাংশন ডিফাইন
void printGreeting(String name) {
print("Hello, $name!");
}
এই কোডে printGreeting
নামের একটি ফাংশন তৈরি করা হয়েছে যা একটি নাম নিয়ে সেটাকে প্রিন্ট করে।
২. ক্লাস (Class)
ক্লাস হল অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর মূল ভিত্তি। একটি ক্লাসে প্রোপার্টি (Properties) এবং মেথড (Methods) থাকে। নিচে একটি উদাহরণ দেওয়া হলো:
void main() {
// ক্লাসের অবজেক্ট তৈরি
Person person = Person("Alice", 30);
// মেথড কল
person.displayInfo();
}
// ক্লাস ডিফাইন
class Person {
String name;
int age;
// কনস্ট্রাক্টর
Person(this.name, this.age);
// মেথড
void displayInfo() {
print("Name: $name, Age: $age");
}
}
এই কোডে Person
নামের একটি ক্লাস তৈরি করা হয়েছে যাতে name
এবং age
নামের দুটি প্রোপার্টি এবং displayInfo
নামের একটি মেথড রয়েছে।
৩. অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP)
অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP) হল প্রোগ্রামিং এর একটি প্যারাডাইম যা ক্লাস এবং অবজেক্টের উপর ভিত্তি করে। OOP এর মূল ধারণাগুলো হল:
- ইনক্যাপসুলেশন (Encapsulation): ডেটা এবং মেথডকে একত্রিত করে ক্লাসের মধ্যে লুকিয়ে রাখা।
- ইনহেরিটেন্স (Inheritance): একটি ক্লাস অন্য ক্লাসের বৈশিষ্ট্য উত্তরাধিকার সূত্রে পেতে পারে।
- পলিমরফিজম (Polymorphism): একই মেথডকে বিভিন্ন ভাবে ব্যবহার করা।
- অ্যাবস্ট্রাকশন (Abstraction): জটিলতা কমিয়ে প্রয়োজনীয় তথ্য উপস্থাপন করা।
নিচে একটি উদাহরণ দেওয়া হলো:
void main() {
// অবজেক্ট তৈরি
Animal dog = Dog();
dog.makeSound(); // Output: Bark
Animal cat = Cat();
cat.makeSound(); // Output: Meow
}
// প্যারেন্ট ক্লাস
abstract class Animal {
void makeSound();
}
// চাইল্ড ক্লাস
class Dog extends Animal {
@override
void makeSound() {
print("Bark");
}
}
// চাইল্ড ক্লাস
class Cat extends Animal {
@override
void makeSound() {
print("Meow");
}
}
এই কোডে Animal
নামের একটি অ্যাবস্ট্রাক্ট ক্লাস তৈরি করা হয়েছে এবং Dog
ও Cat
ক্লাস এই ক্লাসকে ইনহেরিট করে। প্রতিটি ক্লাসে makeSound
মেথডকে ওভাররাইড করা হয়েছে।
১. ইনক্যাপসুলেশন (Encapsulation)
ইনক্যাপসুলেশন হল ডেটা এবং মেথডকে একত্রিত করে ক্লাসের মধ্যে লুকিয়ে রাখা। এটি ডেটা সুরক্ষা এবং কোডের জটিলতা কমাতে সাহায্য করে। নিচে একটি উদাহরণ দেওয়া হলো:
void main() {
Person person = Person();
person.setName("John");
print(person.getName()); // Output: John
}
class Person {
// প্রাইভেট প্রোপার্টি
String _name;
// পাবলিক মেথড
void setName(String name) {
this._name = name;
}
String getName() {
return this._name;
}
}
এই কোডে _name
প্রোপার্টিটি প্রাইভেট করা হয়েছে এবং এটি শুধুমাত্র ক্লাসের মেথডের মাধ্যমে অ্যাক্সেস করা যায়।
২. ইনহেরিটেন্স (Inheritance)
ইনহেরিটেন্স হল একটি ক্লাস অন্য ক্লাসের বৈশিষ্ট্য উত্তরাধিকার সূত্রে পেতে পারে। এটি কোডের পুনর্ব্যবহারযোগ্যতা (Reusability) বাড়ায়। নিচে একটি উদাহরণ দেওয়া হলো:
void main() {
Dog dog = Dog();
dog.eat(); // Output: Animal is eating
dog.bark(); // Output: Dog is barking
}
// প্যারেন্ট ক্লাস
class Animal {
void eat() {
print("Animal is eating");
}
}
// চাইল্ড ক্লাস
class Dog extends Animal {
void bark() {
print("Dog is barking");
}
}
এই কোডে Dog
ক্লাস Animal
ক্লাসকে ইনহেরিট করে এবং eat
মেথডটি ব্যবহার করে।
৩. পলিমরফিজম (Polymorphism)
পলিমরফিজম হল একই মেথডকে বিভিন্ন ভাবে ব্যবহার করা। এটি ইনহেরিটেন্সের সাথে সম্পর্কিত। নিচে একটি উদাহরণ দেওয়া হলো:
void main() {
Animal dog = Dog();
Animal cat = Cat();
dog.makeSound(); // Output: Bark
cat.makeSound(); // Output: Meow
}
// প্যারেন্ট ক্লাস
class Animal {
void makeSound() {
print("Animal is making a sound");
}
}
// চাইল্ড ক্লাস
class Dog extends Animal {
@override
void makeSound() {
print("Bark");
}
}
// চাইল্ড ক্লাস
class Cat extends Animal {
@override
void makeSound() {
print("Meow");
}
}
এই কোডে Dog
এবং Cat
ক্লাস Animal
ক্লাসের makeSound
মেথডকে ওভাররাইড করে।
৪. অ্যাবস্ট্রাকশন (Abstraction)
অ্যাবস্ট্রাকশন হল জটিলতা কমিয়ে প্রয়োজনীয় তথ্য উপস্থাপন করা। এটি ইন্টারফেস (Interface) এবং অ্যাবস্ট্রাক্ট ক্লাস (Abstract Class) এর মাধ্যমে বাস্তবায়ন করা যায়। নিচে একটি উদাহরণ দেওয়া হলো:
void main() {
Shape circle = Circle();
circle.draw(); // Output: Drawing Circle
}
// অ্যাবস্ট্রাক্ট ক্লাস
abstract class Shape {
void draw();
}
// কনক্রিট ক্লাস
class Circle extends Shape {
@override
void draw() {
print("Drawing Circle");
}
}
এই কোডে Shape
ক্লাসটি অ্যাবস্ট্রাক্ট এবং Circle
ক্লাস এই ক্লাসকে ইনহেরিট করে draw
মেথডকে ইমপ্লিমেন্ট করে।
এই ছিল ডার্ট প্রোগ্রামিংয়ে ফাংশন, ক্লাস, এবং অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর একটি সংক্ষিপ্ত আলোচনা। আশা করি এই ব্লগ পোস্টটি আপনাকে ডার্ট প্রোগ্রামিং শিখতে সাহায্য করবে। যদি আপনার আরও প্রশ্ন থাকে, তাহলে কমেন্টে জানাতে পারেন।
Happy Coding!
1 thought on “ডার্ট প্রোগ্রামিং: ফাংশন, ক্লাস, এবং অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং”