Dart Programming Task Challenge এবং প্রশ্নসমূহের ব্যাখ্যা
এই ডকুমেন্টে আমরা Dart প্রোগ্রামিং ল্যাঙ্গুয়েজের বিভিন্ন বিষয় ধাপে ধাপে ব্যাখ্যা করবো। প্রতিটি বিষয় বাংলায় বিস্তারিতভাবে আলোচনা করা হবে যাতে আপনি সহজে বুঝতে পারেন।

Image description

1. Dart Introduction

Dart হলো একটি ওপেন সোর্স প্রোগ্রামিং ল্যাঙ্গুয়েজ যা গুগল তৈরি করেছে। এটি মূলত ওয়েব এবং মোবাইল অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য ব্যবহৃত হয়, বিশেষ করে Flutter ফ্রেমওয়ার্কের সাথে। Dart একটি অবজেক্ট-ওরিয়েন্টেড ল্যাঙ্গুয়েজ যা C-স্টাইল সিনট্যাক্স ব্যবহার করে।

2. Environment Setup

Dart প্রোগ্রামিং শুরু করতে আপনাকে প্রথমে Dart SDK ইনস্টল করতে হবে। এটি আপনার কম্পিউটারে Dart কোড রান করার জন্য প্রয়োজনীয় টুলস সরবরাহ করে। আপনি Dart-এর অফিসিয়াল ওয়েবসাইট থেকে SDK ডাউনলোড করতে পারেন। এছাড়া IntelliJ IDEA বা VS Code এর মতো IDE ব্যবহার করলে Dart প্রোগ্রামিং আরও সহজ হয়।

3. Dart Hello World

Dart-এ প্রথম প্রোগ্রাম হিসেবে "Hello World" প্রিন্ট করা খুব সহজ। শুধু main() ফাংশনের ভিতরে print('Hello World'); লিখতে হবে।উদাহরণ:

void main() {
  print('Hello World');
}

4. Dart Project Structure In IntelliJ Idea

IntelliJ IDEA-তে Dart প্রজেক্ট তৈরি করলে সাধারণত নিম্নলিখিত স্ট্রাকচার থাকে:

bin/ বা lib/ ফোল্ডার: এখানে আপনার Dart ফাইল থাকে।
pubspec.yaml: প্রজেক্টের ডিপেন্ডেন্সি এবং কনফিগারেশন ধারণ করে।
test/ ফোল্ডার: টেস্ট কোড এখানে থাকে।

5. Dart Keywords And Syntax

Dart-এ বিভিন্ন কীওয়ার্ড আছে, যেমন var, final, const, class, void, if, else, for, while ইত্যাদি। এর সিনট্যাক্স C বা Java-এর মতো, যেখানে স্টেটমেন্ট সেমিকোলন (;) দিয়ে শেষ হয় এবং ব্লক কার্লি ব্রেস ({}) দিয়ে ঘেরা থাকে।

6. Dart Variable

Dart-এ ভেরিয়েবল ডিক্লেয়ার করতে var কীওয়ার্ড ব্যবহার করা হয়। আপনি চাইলে টাইপও উল্লেখ করতে পারেন, যেমন int, String।উদাহরণ:

var name = 'John';
int age = 25;

7. Dart Data Types & Numbers

Dart-এ প্রধান ডাটা টাইপগুলো হলো:

  1. - int: পূর্ণসংখ্যা (যেমন 5, 10)
  2. - double: দশমিক সংখ্যা (যেমন 3.14)
  3. - String: টেক্সট
  4. - bool: সত্য/মিথ্যা
  5. - List: অ্যারে
  6. - Map: কী-ভ্যালু পেয়ার

8. String And Boolean

String: টেক্সট ডাটা, একক বা ডাবল কোট দিয়ে ঘেরা।
Boolean: true বা false।উদাহরণ:

String greeting = 'Hello';
bool isTrue = true;

9. Dart List

List হলো একই টাইপের ডাটার সংগ্রহ। এটি গ্রোয়েবল বা ফিক্সড লেংথ হতে পারে।উদাহরণ:
List numbers = [1, 2, 3, 4];

10. Dart Map

Map হলো কী-ভ্যালু পেয়ারের সংগ্রহ।উদাহরণ:
Map ages = {'John': 25, 'Jane': 30};

11. Dart Operators

Dart-এ বিভিন্ন অপারেটর আছে:

  1. অ্যারিথমেটিক: +, -, *, /, %
  2. কম্পারিজন: ==, !=, >, <, >=, <=
  3. লজিক্যাল: &&, ||, !
  4. অ্যাসাইনমেন্ট: =, +=, -= ইত্যাদি

12. Example of Arithmetic Operator

অ্যারিথমেটিক অপারেটর দিয়ে গণনা করা যায়।উদাহরণ:

int a = 10;
int b = 5;
int sum = a + b; // 15
int product = a * b; // 50

13. Example of Unary Operator

ইউনারি অপারেটর একটি অপারেন্ডের উপর কাজ করে, যেমন ++, --, -।উদাহরণ:

int x = 5;
x++; // x = 6
x--; // x = 5
int y = -x; // y = -5

14. Dart Constant

কনস্ট্যান্ট ভেরিয়েবলের মান পরিবর্তন করা যায় না। final এবং const ব্যবহার করা হয়।উদাহরণ:

final int maxAge = 100;
const double pi = 3.14;

15. List Properties

List-এর কিছু প্রপার্টি আছে, যেমন length, isEmpty, isNotEmpty।উদাহরণ:

List numbers = [1, 2, 3];
print(numbers.length); // 3
print(numbers.isEmpty); // false

16. Fixed Length List Growable List

Fixed Length: সাইজ পরিবর্তন করা যায় না।
Growable: সাইজ পরিবর্তন করা যায়।উদাহরণ:

List fixedList = List.filled(3, 0); // [0, 0, 0]
List growableList = [1, 2, 3];
growableList.add(4); // [1, 2, 3, 4]

17. List Insert Items

List-এ আইটেম যোগ করতে add() বা insert() ব্যবহার করা হয়।উদাহরণ:

List numbers = [1, 2, 3];
numbers.add(4); // [1, 2, 3, 4]
numbers.insert(1, 5); // [1, 5, 2, 3, 4]

18. Dart List Remove Update

Remove: remove() বা removeAt() দিয়ে আইটেম মুছে ফেলা।
Update: ইনডেক্স দিয়ে আপডেট করা।উদাহরণ:

List numbers = [1, 2, 3, 4];
numbers.remove(2); // [1, 3, 4]
numbers[1] = 5; // [1, 5, 4]

19. Dart Set With Add And AddAll

Set হলো ইউনিক আইটেমের সংগ্রহ। add() এবং addAll() দিয়ে যোগ করা হয়।উদাহরণ:

Set numbers = {1, 2, 3};
numbers.add(4); // {1, 2, 3, 4}
numbers.addAll([5, 6]); // {1, 2, 3, 4, 5, 6}

20. Set Element At and Clear

Set-এ নির্দিষ্ট ইনডেক্সে আইটেম অ্যাক্সেস বা আপডেট করা যায় না। clear() দিয়ে খালি করা যায়।উদাহরণ:

Set numbers = {1, 2, 3};
numbers.clear(); // {}

21. Set Properties

Set-এর প্রপার্টি যেমন length, isEmpty, contains()।উদাহরণ:

Set numbers = {1, 2, 3};
print(numbers.length); // 3
print(numbers.contains(2)); // true

22. Map Add New Element

Map-এ নতুন এলিমেন্ট যোগ করতে [] বা putIfAbsent() ব্যবহার করা হয়।উদাহরণ:

Map ages = {'John': 25};
ages['Jane'] = 30; // {'John': 25, 'Jane': 30}

23. Map Constructor And Properties

Map তৈরি করতে কনস্ট্রাক্টর ব্যবহার করা হয়। প্রপার্টি যেমন keys, values, length।উদাহরণ:

Map ages = Map();
ages['John'] = 25;
print(ages.keys); // (John)
print(ages.values); // (25)

24. Map Add Remove Clear

Add: নতুন এলিমেন্ট যোগ।
Remove: remove() দিয়ে মুছে ফেলা।
Clear: clear() দিয়ে খালি করা।উদাহরণ:

Map ages = {'John': 25, 'Jane': 30};
ages['Doe'] = 35; // যোগ
ages.remove('John'); // রিমুভ
ages.clear(); // খালি

25. Dart Control Flow Statement Overview

কন্ট্রোল ফ্লো স্টেটমেন্ট যেমন if, else, switch, for, while, do-while প্রোগ্রামের এক্সিকিউশন নিয়ন্ত্রণ করে।

26. If Else Statements

if এবং else দিয়ে কন্ডিশন চেক করা হয়।উদাহরণ:

int age = 18;
if (age >= 18) {
  print('Adult');
} else {
  print('Minor');
}

27. Switch Case Statement

switch দিয়ে একাধিক কন্ডিশন চেক করা হয়।উদাহরণ:

String fruit = 'apple';
switch (fruit) {
  case 'apple':
    print('Apple');
    break;
  case 'banana':
    print('Banana');
    break;
  default:
    print('Unknown');
}

28. For Loop

for লুপ দিয়ে নির্দিষ্ট সংখ্যক বার কোড রান করা হয়।উদাহরণ:

for (int i = 0; i < 5; i++) {
  print(i);
}

29. For In Loop Over List

for-in লুপ দিয়ে List-এর প্রতিটি এলিমেন্ট অ্যাক্সেস করা হয়।উদাহরণ:

List numbers = [1, 2, 3];
for (int num in numbers) {
  print(num);
}

30. For In Loop Over Set And Json List

Set এবং JSON List-এর উপরও for-in লুপ ব্যবহার করা যায়।উদাহরণ:

Set numbers = {1, 2, 3};
for (int num in numbers) {
  print(num);
}

31. While And do While Loop

While: কন্ডিশন সত্য হলে চলে।
Do-While: অন্তত একবার চলে, তারপর কন্ডিশন চেক করে।উদাহরণ:

int i = 0;
while (i < 5) {
  print(i);
  i++;
}

do {
  print(i);
  i++;
} while (i < 10);

32. Function Define And Call

ফাংশন ডিফাইন করতে returnType functionName(parameters) ব্যবহার করা হয়। কল করতে functionName(arguments)।উদাহরণ:

void greet(String name) {
  print('Hello, $name');
}

greet('John');

33. Passing Argument Inside Function

ফাংশনে আর্গুমেন্ট কল করার সময় পাস করা হয়।উদাহরণ:

int add(int a, int b) {
  return a + b;
}

int result = add(3, 5); // 8

34. Function Return And Main Function

return দিয়ে ফাংশন থেকে ভ্যালু ফেরানো হয়। main() হলো প্রোগ্রামের এন্ট্রি পয়েন্ট।উদাহরণ:

void main() {
  int sum = add(3, 5);
  print(sum);
}

int add(int a, int b) {
  return a + b;
}

35. OOP Concept And Class

OOP-তে ক্লাস, অবজেক্ট, ইনহেরিটেন্স ইত্যাদি Dart-এ ব্যবহৃত হয়।উদাহরণ:

class Person {
  String name;
  int age;
}

36. Access Properties From Class

ক্লাসের প্রপার্টি অ্যাক্সেস করতে অবজেক্ট তৈরি করে ডট (.) ব্যবহার করা হয়।উদাহরণ:

Person p = Person();
p.name = 'John';
p.age = 25;
print(p.name); // John

37. Access Static Properties from Class

স্ট্যাটিক প্রপার্টি ক্লাসের নাম দিয়ে অ্যাক্সেস করা হয়।উদাহরণ:

class Math {
  static int max = 100;
}

print(Math.max); // 100

38. Details On Class Constructor

কনস্ট্রাক্টর অবজেক্ট তৈরির সময় স্বয়ংক্রিয়ভাবে কল হয়।উদাহরণ:

class Person {
  String name;
  int age;

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

Person p = Person('John', 25);

39. Dart This Keyword

this বর্তমান অবজেক্টকে রেফার করে।উদাহরণ:

class Person {
  String name;

  void setName(String name) {
    this.name = name;
  }
}

40. Inheritance Concepts

ইনহেরিটেন্স দিয়ে এক ক্লাস অন্য ক্লাসের প্রপার্টি উত্তরাধিকার সূত্রে পায়।উদাহরণ:

class Animal {
  void eat() {
    print('Eating');
  }
}

class Dog extends Animal {
  void bark() {
    print('Barking');
  }
}

Dog d = Dog();
d.eat(); // Eating
d.bark(); // Barking

41. Method Overriding

সাবক্লাসে সুপারক্লাসের মেথড নতুন করে ডিফাইন করা।উদাহরণ:

class Animal {
  void sound() {
    print('Animal sound');
  }
}

class Dog extends Animal {
  @override
  void sound() {
    print('Barking');
  }
}

Dog d = Dog();
d.sound(); // Barking

42. Dart Abstract

অ্যাবস্ট্রাক্ট ক্লাস থেকে অবজেক্ট তৈরি করা যায় না, শুধু ইনহেরিট করা যায়।উদাহরণ:

abstract class Shape {
  void draw();
}

class Circle extends Shape {
  @override
  void draw() {
    print('Drawing circle');
  }
}

43. Dart Debugging

Dart-এ ডিবাগিং করতে IDE-তে ব্রেকপয়েন্ট সেট করা, ভেরিয়েবলের মান দেখা, স্টেপ বাই স্টেপ এক্সিকিউশন ইত্যাদি ফিচার ব্যবহার করা হয়।

এই ছিল Dart প্রোগ্রামিং-এর বিভিন্ন বিষয়ের বিস্তারিত ব্যাখ্যা। আশা করি এটি আপনার জন্য সহায়ক হবে।