অধ্যায় ৬: Dart-এ Object Oriented Programming (OOP)

ভূমিকা: OOP আসলে কী?

OOP (Object-Oriented Programming) হল এমন একটি প্রোগ্রামিং ধারণা (paradigm), যেখানে প্রোগ্রামকে “অবজেক্ট” দিয়ে গঠিত করা হয়। প্রতিটি অবজেক্টের নিজের কিছু data (property) এবং behavior (method) থাকে।

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

  1. Encapsulation (আবদ্ধতা) – ডেটা এবং কোড একত্রে রাখে।

  2. Abstraction (সংক্ষিপ্ততা) – জটিল বিষয়কে সহজভাবে প্রকাশ করে।

  3. Inheritance (উত্তরাধিকার) – একটি ক্লাস থেকে অন্য ক্লাস বৈশিষ্ট্য নেয়।

  4. Polymorphism (বহুরূপিতা) – একই ইন্টারফেস বিভিন্নভাবে ব্যবহার হয়।



Dart একটি Pure OOP Language?

না, Dart সম্পূর্ণরূপে OOP না হলেও এটি OOP-এর মূল বৈশিষ্ট্যগুলো সমর্থন করে — যেমন ক্লাস, অবজেক্ট, ইনহেরিটেন্স, পলিমরফিজম, ইত্যাদি।


১. Class এবং Object

Class হল একটি টেমপ্লেট আর Object হল সেই টেমপ্লেট দিয়ে তৈরি বস্তু।

dart
class Person { String name = ''; int age = 0; void introduce() { print("আমি $name, বয়স $age বছর"); } } void main() { Person p1 = Person(); p1.name = "রানা"; p1.age = 22; p1.introduce(); }

২. Constructor (নির্মাতা)

Object তৈরি করার সময় ডেটা সেট করার জন্য constructor ব্যবহার হয়।

dart
class Student { String name; int roll; Student(this.name, this.roll); // Constructor } void main() { var s1 = Student("নিহাল", 101); print("${s1.name}, Roll: ${s1.roll}"); }

৩. Encapsulation

প্রত্যক্ষভাবে properties অ্যাক্সেস না করে method দিয়ে access করা।

dart
class BankAccount { double _balance = 0; // private property void deposit(double amount) { if (amount > 0) _balance += amount; } double getBalance() => _balance; }

৪. Inheritance (উত্তরাধিকার)

একটি ক্লাস অন্য ক্লাসের বৈশিষ্ট্য গ্রহণ করে।

dart
class Animal { void makeSound() => print("Some sound"); } class Dog extends Animal { @override void makeSound() => print("ঘেউ ঘেউ"); } void main() { Dog d = Dog(); d.makeSound(); // Output: ঘেউ ঘেউ }

৫. Polymorphism (বহুরূপিতা)

একই মেথড বিভিন্ন ক্লাসে ভিন্ন ভিন্নভাবে কাজ করে।

dart
class Shape { void draw() => print("Drawing shape"); } class Circle extends Shape { @override void draw() => print("Drawing Circle"); } class Square extends Shape { @override void draw() => print("Drawing Square"); } void main() { Shape s1 = Circle(); Shape s2 = Square(); s1.draw(); // Drawing Circle s2.draw(); // Drawing Square }

৬. Abstract Class

সম্পূর্ণ ক্লাস না, শুধু কাঠামো তৈরি করতে ব্যবহৃত হয়।

dart
abstract class Vehicle { void start(); } class Car extends Vehicle { @override void start() => print("Car started"); }

৭. Interface (Implemented Class)

Dart-এ আলাদা interface নেই, কিন্তু যেকোন class কে implement করে interface বানানো যায়।

dart
class Printer { void printDoc(); } class PDFPrinter implements Printer { @override void printDoc() => print("Printing PDF..."); }

উপসংহার

OOP প্রোগ্রামিংকে আরও শক্তিশালী, মেইনটেইনযোগ্য এবং মডুলার করে তোলে। Dart OOP-এর সব কনসেপ্ট সমর্থন করে এবং Flutter-এ বাস্তব অ্যাপ বানানোর সময় এসব OOP ধারণা খুব গুরুত্বপূর্ণ।


সব অধ্যায় একসাথে দেখতে এখানে ক্লিক করুন।



পরবর্তী পোস্ট