Classes এবং Objects (ক্লাস এবং অবজেক্টস)

ডার্ট প্রোগ্রামিং (Dart Programming) - Computer Programming

575

Dart প্রোগ্রামিং ভাষায় Classes এবং Objects অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের (OOP) প্রধান ধারণা। এগুলি ডেটা এবং কার্যক্রমকে একটি কাঠামোতে সংগঠিত করতে সহায়ক। নিচে ক্লাস এবং অবজেক্টের বিস্তারিত আলোচনা করা হলো।


1. Classes (ক্লাস)

Class হল একটি ব্লুপ্রিন্ট বা টেমপ্লেট যা অবজেক্ট তৈরি করার জন্য ব্যবহৃত হয়। এটি একটি ডেটা স্ট্রাকচার ধারণ করে যা প্রপার্টি (attributes) এবং মেথড (methods) নিয়ে গঠিত। ক্লাসের মাধ্যমে আপনি একাধিক অবজেক্ট তৈরি করতে পারেন।

ক্লাস ডিফাইনেশন:

class Car {
  String brand; // প্রপার্টি
  int year; // প্রপার্টি

  // Constructor
  Car(this.brand, this.year);

  // Method
  void displayInfo() {
    print("Brand: $brand, Year: $year");
  }
}

2. Objects (অবজেক্টস)

Object হল ক্লাসের একটি নির্দিষ্ট উদাহরণ। এটি ক্লাসে ডিফাইন করা প্রপার্টি এবং মেথডগুলি ধারণ করে। অবজেক্ট তৈরি করার সময়, আপনি ক্লাসের কনস্ট্রাক্টর ব্যবহার করেন।

অবজেক্ট তৈরি করা:

void main() {
  // অবজেক্ট তৈরি করা
  Car myCar = Car('Toyota', 2020);

  // অবজেক্টের মেথড কল করা
  myCar.displayInfo(); // Output: Brand: Toyota, Year: 2020
}

ক্লাস এবং অবজেক্টের মধ্যে পার্থক্য

বিষয়ক্লাসঅবজেক্ট
সংজ্ঞাএকটি ব্লুপ্রিন্ট বা টেমপ্লেটক্লাসের একটি নির্দিষ্ট উদাহরণ
ডেটা স্ট্রাকচারপ্রপার্টি এবং মেথড থাকেপ্রপার্টি এবং মেথড ধারণ করে
তৈরি করাclass ClassName { ... }ClassName objectName = ClassName();

ক্লাসের বৈশিষ্ট্য

Encapsulation (এনক্যাপসুলেশন): ক্লাসের মাধ্যমে ডেটা এবং কার্যক্রম একত্রে রাখা হয়, যা ডেটা সুরক্ষা বাড়ায়।

Inheritance (ইনহেরিট্যান্স): একটি ক্লাস অন্য ক্লাসের বৈশিষ্ট্যগুলি গ্রহণ করতে পারে, যা কোড পুনঃব্যবহার বাড়ায়।

Polymorphism (পলিমরফিজম): একই নামের মেথড বিভিন্ন ক্লাসে ভিন্নভাবে কার্যকর হতে পারে।

Content added By

Object-Oriented Programming (OOP) হল একটি প্রোগ্রামিং প্যারাডাইম যা ক্লাস এবং অবজেক্টের ভিত্তিতে ডিজাইন করা হয়। এটি বাস্তব জগতের অবজেক্টগুলির প্রতিনিধিত্ব করে এবং ডেটা ও কার্যক্রমকে সংগঠিত করার একটি কার্যকরী উপায় প্রদান করে। OOP-এর মূল ধারণাগুলি নিচে আলোচনা করা হলো।


1. Classes (ক্লাস)

ক্লাস হল একটি ব্লুপ্রিন্ট বা টেমপ্লেট যা অবজেক্ট তৈরি করতে ব্যবহৃত হয়। এটি ডেটা (প্রপার্টি) এবং কার্যক্রম (মেথড) ধারণ করে। ক্লাসের মাধ্যমে আপনি একই ধরনের অবজেক্টগুলির একটি গ্রুপ তৈরি করতে পারেন।

2. Objects (অবজেক্টস)

অবজেক্ট হল ক্লাসের একটি নির্দিষ্ট উদাহরণ। এটি ক্লাসের মধ্যে সংজ্ঞায়িত প্রপার্টি এবং মেথডগুলির একটি বাস্তব প্রতিনিধিত্ব। অবজেক্ট তৈরি করার সময়, আপনি ক্লাসের কনস্ট্রাক্টর ব্যবহার করেন।

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

এনক্যাপসুলেশন হল একটি মৌলিক OOP ধারণা যা ডেটা এবং কার্যক্রমকে একটি ক্লাসে একত্রিত করে। এটি ডেটাকে বাইরে থেকে অ্যাক্সেস এবং পরিবর্তন করার বিরুদ্ধে সুরক্ষা প্রদান করে। এনক্যাপসুলেশন মূলত প্রাইভেট এবং পাবলিক অ্যাক্সেস মডিফায়ার ব্যবহার করে ডেটা সুরক্ষা নিশ্চিত করে।

4. Inheritance (ইনহেরিট্যান্স)

Inheritance হল একটি প্রক্রিয়া যার মাধ্যমে একটি ক্লাস অন্য ক্লাসের বৈশিষ্ট্যগুলি গ্রহণ করে। এর ফলে কোড পুনঃব্যবহার সম্ভব হয় এবং নতুন ক্লাস তৈরি করার সময় পূর্ববর্তী ক্লাসের বৈশিষ্ট্যগুলি ব্যবহার করা যায়।

উদাহরণ:

class Animal {
  void speak() {
    print("Animal speaks");
  }
}

class Dog extends Animal {
  @override
  void speak() {
    print("Dog barks");
  }
}

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

Polymorphism হল একটি OOP ধারণা যা একই নামের মেথড বিভিন্ন ক্লাসে ভিন্নভাবে কার্যকর হতে পারে। এটি কোডের নমনীয়তা বাড়ায় এবং একাধিক ক্লাসে সাধারণ কার্যক্রমকে সংজ্ঞায়িত করার সুযোগ দেয়।

উদাহরণ:

void makeSound(Animal animal) {
  animal.speak(); // বিভিন্ন প্রাণী ভিন্নভাবে কথা বলবে
}

void main() {
  Dog dog = Dog();
  makeSound(dog); // Output: Dog barks
}

6. Abstraction (অ্যাবস্ট্রাকশন)

Abstraction হল তথ্যের গুরুত্বপূর্ণ দিকগুলি তুলে ধরার প্রক্রিয়া এবং অপ্রয়োজনীয় তথ্যগুলো লুকিয়ে রাখার জন্য ব্যবহৃত হয়। এটি ক্লাস এবং অবজেক্টগুলির মাধ্যমে বাস্তবায়িত হয়।

উদাহরণ:

abstract class Shape {
  void draw(); // abstract method
}

class Circle extends Shape {
  @override
  void draw() {
    print("Drawing a circle");
  }
}
Content added By

Dart প্রোগ্রামিং ভাষায় Class ডিক্লারেশন এবং Constructor হল অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের (OOP) মূল উপাদান। নিচে এই দুটি ধারণার বিস্তারিত আলোচনা করা হলো।


1. Class ডিক্লারেশন

Class হল একটি ব্লুপ্রিন্ট বা টেমপ্লেট যা অবজেক্ট তৈরি করতে ব্যবহৃত হয়। ক্লাসে সাধারণত প্রপার্টি (attributes) এবং মেথড (methods) থাকে। ক্লাস ডিক্লারেশনটি class কিওয়ার্ড ব্যবহার করে করা হয়।

সিনট্যাক্স:

class ClassName {
  // Properties
  dataType propertyName;

  // Method
  void methodName() {
    // method body
  }
}

উদাহরণ:

class Car {
  String brand; // Property
  int year; // Property

  // Constructor
  Car(this.brand, this.year); // Constructor to initialize properties

  // Method
  void displayInfo() {
    print("Brand: $brand, Year: $year");
  }
}

2. Constructor

Constructor হল একটি বিশেষ ধরনের মেথড যা ক্লাসের অবজেক্ট তৈরি করার সময় স্বয়ংক্রিয়ভাবে কল হয়। এটি অবজেক্টের প্রপার্টিগুলি প্রাথমিকভাবে সেট করতে ব্যবহৃত হয়। Dart এ, কনস্ট্রাক্টর সাধারণত ক্লাসের নামের সাথে মিলে যায়।

সিনট্যাক্স:

ClassName(parameters) {
  // Initialization code
}

বিভিন্ন ধরনের কনস্ট্রাক্টর:

Default Constructor: এটি কোন আর্গুমেন্ট গ্রহণ না করে। ক্লাসের প্যারামিটার সেট করতে ব্যবহার করা হয়।

class Person {
 String name;
 int age;
 // Default constructor
 Person() {
   name = 'Unknown';
   age = 0;
 }
}

Parameterized Constructor: এটি এক বা একাধিক আর্গুমেন্ট গ্রহণ করে।

class Person {
 String name;
 int age;
 // Parameterized constructor
 Person(this.name, this.age);
}

Named Constructor: এটি নির্দিষ্ট নাম দিয়ে কনস্ট্রাক্টর তৈরি করতে পারে, যা ক্লাসের একাধিক কনস্ট্রাক্টর থাকতে পারে।

class Person {
 String name;
 int age;
 // Named constructor
 Person.named(this.name, this.age);
}

উদাহরণ:

 

void main() {
 // Using parameterized constructor
 Car myCar = Car('Toyota', 2020);
 myCar.displayInfo(); // Output: Brand: Toyota, Year: 2020
 
 // Using default constructor
 Person person = Person(); // Assuming default constructor initializes name and age
 print("Name: ${person.name}, Age: ${person.age}"); // Output: Name: Unknown, Age: 0
}

Content added By

Dart প্রোগ্রামিং ভাষায় Fields (ফিল্ডস) এবং Methods (মেথডস) ক্লাসের গুরুত্বপূর্ণ উপাদান। ফিল্ডস হল ক্লাসের বৈশিষ্ট্য এবং মেথডস হল ক্লাসের কার্যক্রম। নিচে ফিল্ডস এবং মেথডস এর ধারণা, ব্যবহার এবং উদাহরণসহ বিস্তারিত আলোচনা করা হলো।


1. Fields (ফিল্ডস)

Fields হল ক্লাসের ভেরিয়েবল যা অবজেক্টের স্টেট বা তথ্য সংরক্ষণ করে। ফিল্ডস সাধারণত ডেটা টাইপের সাথে ঘোষণা করা হয় এবং ক্লাসের বাইরে থেকে অ্যাক্সেস করা যায় (যদি তারা পাবলিক হয়)।

উদাহরণ:

class Person {
  String name; // Field
  int age;     // Field

  // Constructor
  Person(this.name, this.age);
}

ফিল্ডসের ব্যবহার:

void main() {
  Person person = Person('Alice', 30);
  
  print("Name: ${person.name}"); // Output: Name: Alice
  print("Age: ${person.age}");   // Output: Age: 30
}

2. Methods (মেথডস)

Methods হল ক্লাসের ফাংশন যা ক্লাসের ফিল্ডসকে প্রক্রিয়া করতে পারে। মেথডস ক্লাসের কার্যক্রম বা আচরণ নির্দেশ করে।

উদাহরণ:

class Person {
  String name; // Field
  int age;     // Field

  // Constructor
  Person(this.name, this.age);

  // Method to display person details
  void displayInfo() {
    print("Name: $name, Age: $age");
  }
}

মেথডসের ব্যবহার:

void main() {
  Person person = Person('Alice', 30);
  person.displayInfo(); // Output: Name: Alice, Age: 30
}

3. Fields এবং Methods এর সাথে একত্রিত ব্যবহার

Fields এবং Methods একত্রে ব্যবহার করে আপনি একটি ক্লাসের সম্পূর্ণ কার্যকারিতা তৈরি করতে পারেন।

উদাহরণ:

class Rectangle {
  double length; // Field
  double width;  // Field

  // Constructor
  Rectangle(this.length, this.width);

  // Method to calculate area
  double calculateArea() {
    return length * width; // Method
  }

  // Method to display dimensions
  void displayDimensions() {
    print("Length: $length, Width: $width, Area: ${calculateArea()}");
  }
}

void main() {
  Rectangle rect = Rectangle(10.0, 5.0);
  rect.displayDimensions(); // Output: Length: 10.0, Width: 5.0, Area: 50.0
}
Content added By

Getters এবং Setters হল ক্লাসের ফিল্ডগুলির জন্য নির্দিষ্ট ভাবে অ্যাক্সেস এবং মান সেট করার পদ্ধতি। এগুলি ডেটা কিভাবে অ্যাক্সেস এবং পরিবর্তন করা হবে তা নিয়ন্ত্রণ করে, যা এনক্যাপসুলেশন (encapsulation) বজায় রাখতে সহায়ক।


1. Getter

Getter হল একটি মেথড যা একটি ফিল্ডের মানকে ফেরত দেয়। এটি সাধারণত get কিওয়ার্ড ব্যবহার করে ডিফাইন করা হয়। Getter ব্যবহার করে আপনি ফিল্ডগুলির মানকে নিরাপদে অ্যাক্সেস করতে পারেন।

উদাহরণ:

class Person {
  String _name; // Private field

  Person(this._name); // Constructor

  // Getter for _name
  String get name => _name; // Returns the value of _name
}

void main() {
  Person person = Person('Alice');
  print(person.name); // Output: Alice
}

2. Setter

Setter হল একটি মেথড যা একটি ফিল্ডের মান সেট করে। এটি সাধারণত set কিওয়ার্ড ব্যবহার করে ডিফাইন করা হয়। Setter ব্যবহার করে আপনি ফিল্ডগুলির মান পরিবর্তন করতে পারেন এবং এটি যাচাই করতে পারেন।

উদাহরণ:

class Person {
  String _name; // Private field

  Person(this._name); // Constructor

  // Getter for _name
  String get name => _name; // Returns the value of _name

  // Setter for _name
  set name(String newName) {
    if (newName.isNotEmpty) {
      _name = newName; // Sets the value of _name
    } else {
      print("Name cannot be empty.");
    }
  }
}

void main() {
  Person person = Person('Alice');
  print(person.name); // Output: Alice

  person.name = 'Bob'; // Using setter
  print(person.name); // Output: Bob

  person.name = ''; // Trying to set an empty name
  // Output: Name cannot be empty.
}
Content added By
Promotion

Are you sure to start over?

Loading...